【发布时间】:2010-12-10 16:04:13
【问题描述】:
我正在尝试开发一个插件,每次我更改代码时都会自动重新加载,模拟在 Rail 的开发模式下通常发生的相同的自动重新加载。我的插件主要是一个 ActiveRecord 混合模块。我已经尝试了所有可以在相关 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 更新日志,我确实注意到了自动重新加载所有插件的功能。
config.reload_plugins = true if RAILS_ENV == 'development'
当我将它添加到我的 conf/environment.rb 时,这并没有像我预期的那样工作
我的插件是结构化的,所以所有文件都由 namespace => 目录自动加载。我这样做是为了避免使用“require”,因为我认为 require 会阻止我的插件自动重新加载。
我一直在通过 rails 控制台在开发模式下完成所有工作,我不知道这是否与通过 mongrel(或类似 web 服务器)运行有什么不同。
插件按预期工作,但每次我对代码进行任何更改时都必须重新加载。有谁知道让插件重新加载的方法吗?
【问题讨论】:
标签: ruby-on-rails