我正在尝试使用插件我每次更改代码时都会开发自动重载,模拟在Rail的开发模式下正常发生的自动重载。我的插件主要是ActiveRecord mixin模块。我已尝试过我在相关Google搜索中找到的所有建议。什么都没有奏效。
在我的插件的init.rb中:
require 'activesupport' unless defined? ActiveSupport
require 'activerecord' unless defined? ActiveRecord
if RAILS_ENV == 'development'
ActiveSupport::Dependencies.load_once_paths.delete lib_path
ActiveSupport::Dependencies.load_once_paths.delete File.join(lib_path, 'crowd_compass', 'publisher.rb')
ActiveSupport::Dependencies.load_paths << lib_path
ActiveSupport::Dependencies.load_paths << File.join(lib_path, 'crowd_compass', 'publisher.rb')
end
ActiveRecord::Base.send(:include, CrowdCompass::Publisher)
查看rails changelog,我注意到了自动重新加载所有插件的功能。
config.reload_plugins = true if RAILS_ENV == 'development'
当我将它添加到我的conf / environment.rb
时,这并不像我预期的那样有效我的插件是结构化的,所以所有文件都由namespace =&gt;自动加载目录。我这样做了所以我可以避免使用“require”,因为我认为需要阻止我的插件被自动重新加载。
我一直在通过rails控制台在开发模式下完成所有工作,我不知道这是否与通过mongrel(或类似Web服务器)运行有任何不同。
该插件按预期工作,但每次我对代码进行任何更改时都必须重新加载。有没有人知道让插件重新加载的方法?
答案 0 :(得分:1)
控制台肯定不像杂种一样工作。您正在使用的所有技术都会在每次请求时重新加载,这类似于每次启动控制台时。
没有办法在不调用reload!
的情况下在控制台中重新加载代码。