gpt4 book ai didi

ruby-on-rails - rails : Have initializer load before application. rb

转载 作者:太空宇宙 更新时间:2023-11-03 16:51:12 24 4
gpt4 key购买 nike

我有一个名为 _settings.rb 的初始化程序,看起来像这样

class Settings < Settingslogic
source "#{Rails.root}/config/application.yml"

namespace Rails.env
end

我的 application.yml 为我称为 environhost 的自定义设置定义了一个值。我称它为:

   Settings.environhost

这工作正常,除了当我尝试调用我的/app/config/application.rb 中的值时

config.action_controller.asset_host = Settings.environhost

为此,我得到了一个未初始化的常量。

无论如何我可以在我的 application.rb 中放置一个指针来加载 _settings.rb

 config.action_controller.asset_host = Settings.environhost

加载了吗?执行此操作的最佳方法是什么?

http://guides.rubyonrails.org/initialization.html

最佳答案

Rails 自己的配置将始终在任何自定义内容之前加载,这是肯定的。否则你能想象这有多乱:)

解决方案是不要在 Rails 配置之前尝试加载。相反,挂接到初始化程序以添加您自己的逻辑来覆盖 Rails 默认值。

Railtie是您可以毫不费力地做到这一点的地方。在这里,您可以访问包括 Rails 在内的所有初始化器共享的 config 方法。

module MySettings
def self.environhost
"foobar"
end

class MySettingsRailtie < Rails::Railtie
config.action_controller.asset_host = MySettings.environhost
end
end

旁注:在大多数情况下,您应该可以将 Assets 主机设置为 mu_is_too_short 评论。如果您需要除此之外的任何东西,您可以使用 Railtie 的自定义初始化器。

关于ruby-on-rails - rails : Have initializer load before application. rb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21249006/

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