如何更改其中一个gem中加载gem的顺序
我有两个gem“CoreGem”和“AddonGem”。 Addon Gem增加了额外的function,将覆盖核心gem。
如何确保如果添加第二个gem,它将覆盖第一个gem的视图和资产。
到目前为止,它在添加到主应用程序时起作用:
config.railties_order = [ :main_app, AddonGem::Engine, :all]
但我想从AddonGem中做到这一点。
谢谢
使用railties_order
地方
railties_order
在这里使用:
https://github.com/rails/rails/blob/master/railties/lib/rails/application.rb#L317
确定要运行的initializer
块的顺序,
https://github.com/rails/rails/blob/master/railties/lib/rails/application.rb#L337
在其他gem中找到。
https://github.com/rails/rails/blob/master/railties/lib/rails/application.rb#L47
因此,在initializer
块中设置railties_order
将毫无意义,因为在调用initializer
块时, railties_order
已经设置并且正由应用程序的其余部分使用。
你可以做什么呢
显然, Rails::Application::Bootstrap
有更多initializer
块。
https://github.com/rails/rails/blob/master/railties/lib/rails/application/bootstrap.rb
这些是在主应用程序的初始化程序块之前添加的:
https://github.com/rails/rails/blob/master/railties/lib/rails/application.rb#L262
那么也许你可以使用一些初始化器来修补Bootstrap模块? 我猜这是你的电话。
在AddonGem
中AddonGem
一个注入此代码的生成器
config.railties_order = [ :main_app, AddonGem::Engine, :all]
在主应用程序中,如addongem:install
命令。
只是为了完成,虽然这是一个简单的方法。 应该可以在核心之后将插件挂钩。
- 如何在rails中生成和共享SP SAML 2.0元数据
- 如何在没有模型的情况下从Rails应用程序查询MySQL数据库?
- 从Rails App到Star Micronics TSP 143U的POS收据打印
- 如何在Action电缆中关闭连接?
- 设置操作与ruby中的数组操作的效率
- Rails应用程序错误 – ActiveRecord :: PendingMigrationError正在等待迁移; 运行’rake db:migrate RAILS_ENV = development’来解决此问题
- rails application helper不支持中文字符
- Heroku试图安装开发gem,即使我告诉它不要
- 为什么rails将TEXT列固定为65535个字符?