2012-05-30 76 views
0

我試圖在Windows Vista/7上自動重新加載JRuby中的Sinatra項目。我從Sinatra-contrib使用Sinatra :: Reloader。不幸的是,它似乎只適用於控制器。模型和助手的任何更改都不會重新加載。使用Sinatra :: Reloader重新加載模型和幫助程序

我是否正確地使用了also_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 

回答

0

根據目前您的實施情況,假設您更改helpers/auth_helper.rb中的內容。這個文件被重新加載,但由於helpers/init.rb沒有改變,它不會被sinatra-reloader重新加載,你不會看到更改。你有沒有試過shotgun寶石?

+0

我可能應該提到我正在使用Windows。獵槍不會工作,因爲沒有叉子。 – James