我最近从 gem 版本切换resources_controller
到 aplugin
作为gem
依赖的版本git
。
在vendor/plugins/plugin/lib/plugin.rb
文件里面,Railtie
内容如下:
module Ardes
module ResourcesController
class Railtie < Rails::Railtie
initializer 'ardes.resources_controller' do
ActiveSupport.on_load(:action_controller) do
extend Ardes::ResourcesController
include Ardes::ResourcesController::RequestPathIntrospection
end
ActiveSupport.on_load(:active_record) do
include Ardes::ActiveRecord::Saved
end
end
end
end
end
我在我的require 'resources_controller'
一个初始化程序中添加了一个,它正在正确加载这个文件。问题是,尽管Railtie
被评估(puts
类块中的 a 会命中),但它似乎从未真正调用初始化块本身。这当然很重要,因为这是它扩展ActionController
到包含该resources_controller_for
方法的地方。
这个问题似乎已经出现在这里和这里。尽管在这两种情况下,他们都找到了解决问题的其他方法,并且没有直接回答为什么没有调用该块。
从我在 Rails 文档中可以看出,您可以将初始化程序块命名为您想要的任何名称,并且它应该运行。我认为这并不重要,但我首先在生产中运行时注意到了这个问题,rails s -e production
尽管我相信在开发模式下也存在同样的问题。
可能会发生什么?
作为参考,完整的插件在这里:https ://github.com/ianwhite/resources_controller