【问题标题】:Reloading models and helpers with Sinatra::Reloader使用 Sinatra::Reloader 重新加载模型和助手
【发布时间】:2012-05-30 16:53:15
【问题描述】:

我正在尝试在 Windows Vista/7 上的 JRuby 中自动重新加载 Sinatra 项目。我正在使用来自 Sinatra-contrib 的 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

【问题讨论】:

    标签: windows sinatra jruby reload


    【解决方案1】:

    在您当前的实现下,假设您更改了helpers/auth_helper.rb 中的某些内容。该文件被重新加载,但由于helpers/init.rb 未更改,sinatra-reloader 不会重新加载它,您也不会看到更改。你试过shotgungem 吗?

    【讨论】:

    • 我可能应该提到我正在使用 Windows。 Shotgun 无法工作,因为没有分叉。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-08
    • 1970-01-01
    • 2011-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多