使用Sinatra :: Reloader重新加载模型和帮助程序

时间:2012-05-30 16:53:15

标签: windows sinatra jruby reload

我正在尝试在Windows Vista / 7上自动重新加载JRuby中的Sinatra项目。我正在使用来自Sinatra-contrib的Sinatra :: Reloader。不幸的是,它似乎只适用于控制器。不会重新加载对模型和帮助程序的任何更改。

我是否错误地使用了all_reload?

这是我的项目的样子: /app.rb

require 'sinatra'
require 'sinatra/reloader'
require 'json'

class App < Sinatra::Application
  enable :sessions
  enable :logging
  register Sinatra::Reloader
  also_reload "models/*.rb"
  also_reload "helpers/*.rb"

  helpers do
    include Rack::Utils
    alias_method :h, :escape_html
  end
end

require_relative 'helpers/init'
require_relative 'models/init'
require_relative 'controllers/init'

/controllers/init.rb

enable :sessions

require_relative 'auth'
require_relative 'customer'
require_relative 'policy'
require_relative 'forms'

/helpers/init.rb

require_relative 'auth_helper'
require_relative 'customer_helper'
require_relative 'flash_helper'
require_relative 'form_helper'
require_relative 'policy_helper'

/models/init.rb

require 'lib/sqljdbc4.jar'
require 'sequel'
require 'logger'

Java::com.microsoft.sqlserver.jdbc.SQLServerDriver
url = 'foo'

DB = Sequel.connect(url)
DB.loggers << Logger.new($stdout)

Sequel.inflections do |inflect|
  inflect.clear :all
end

files = [
:customer,
:customer_email,
:phone_number ]

files.each do |f|
  require_relative f.to_s
end

1 个答案:

答案 0 :(得分:0)

根据您当前的实施情况,假设您更改了helpers/auth_helper.rb中的内容。此文件被重新加载,但由于helpers/init.rb未更改,因此sinatra-reloader不会重新加载它,您将看不到更改。你试过shotgun gem?