gpt4 book ai didi

ruby-on-rails - 如何更改从其中一颗 gem 中加载 gem 的顺序

转载 作者:行者123 更新时间:2023-12-04 04:38:40 24 4
gpt4 key购买 nike

我有两个 gem “CoreGem”和“AddonGem”。 Addon Gem 添加了将覆盖核心 gem 的额外功能。

我如何确保如果添加了第二个 gem,它将覆盖第一个的 View 和 Assets 。

到目前为止,它在添加到主应用程序时有效:

 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 的顺序 block 运行,

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

所以设置railties_orderinitializer 内 block 将毫无意义,因为到 initializer block 被调用,railties_order已设置并由应用程序的其余部分使用。

你可以做什么

显然更多initializer block 在 Rails::Application::Bootstrap 内.

https://github.com/rails/rails/blob/master/railties/lib/rails/application/bootstrap.rb

这些是在主应用程序的初始化程序 block 之前添加的:

https://github.com/rails/rails/blob/master/railties/lib/rails/application.rb#L262

所以也许你可以用一些初始化程序对 Bootstrap 模块进行猴子补丁?我想这是你的电话。

关于ruby-on-rails - 如何更改从其中一颗 gem 中加载 gem 的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18261116/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com