Rails在开发模式下自动重新加载插件

时间:2009-10-27 21:45:17

标签: ruby-on-rails

我正在尝试使用插件我每次更改代码时都会开发自动重载,模拟在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服务器)运行有任何不同。

该插件按预期工作,但每次我对代码进行任何更改时都必须重新加载。有没有人知道让插件重新加载的方法?

1 个答案:

答案 0 :(得分:1)

控制台肯定不像杂种一样工作。您正在使用的所有技术都会在每次请求时重新加载,这类似于每次启动控制台时。

没有办法在不调用reload!的情况下在控制台中重新加载代码。