我有一个Rails应用程序,它使用我正在积极开发的宝石.如何指示应用程序在每次请求时重新加载gem?
Kaw*_*oru 18
这个解决方案几乎可以工作,但由于某种原因我必须把它放进去application.rb,environments/development.rb否则不能识别autoload_paths.
我添加了一些自动获取路径的附加内容.
if Rails.env.development?
reload_gems = %w(my_gem other_gem) # names of gems which should autoreload
config.autoload_paths += Gem.loaded_specs.values.inject([]){ |a,gem| a += gem.load_paths if reload_gems.include? gem.name; a }
require 'active_support/dependencies'
ActiveSupport::Dependencies.explicitly_unloadable_constants += reload_gems.map { |gem| gem.classify }
end
Run Code Online (Sandbox Code Playgroud)
可以添加本地宝石 gem 'my_gem', :path => '../my_gem'
您可以autoload在应用程序的路径中添加gem的路径.
所以,在config/application.rb中,在class Application < Rails::Application ... end块中添加:
config.autoload_paths += %W(#{config.root}/vendor/gems/my_gem/lib)
config.autoload_paths += Dir["#{config.root}/vendor/gems/my_gem/lib/**/"]
Run Code Online (Sandbox Code Playgroud)
然后,在运行开发服务器时,应重新加载其中的所有文件.