2012-05-30 32 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