首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails:在application.rb之前加载初始化程序

Rails:在application.rb之前加载初始化程序
EN

Stack Overflow用户
提问于 2014-01-21 04:08:46
回答 1查看 2K关注 0票数 3

我有一个名为_settings.rb的初始化器,如下所示

代码语言:javascript
复制
class Settings < Settingslogic
    source "#{Rails.root}/config/application.yml"

    namespace Rails.env
end

我的application.yml为我称为环境主机的自定义设置定义了一个值。我称之为:

代码语言:javascript
复制
   Settings.environhost

这很好,除非我尝试调用/app/config/application.rb中的值。

代码语言:javascript
复制
config.action_controller.asset_host = Settings.environhost

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

我是否可以在我的application.rb中放置一个指针来加载_settings.rb?

代码语言:javascript
复制
 config.action_controller.asset_host = Settings.environhost

上膛了吗?做这件事最好的方法是什么?

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-21 05:08:29

Rails本身的配置总是在任何定制的事情之前加载,这是肯定的。否则,你能想象出这样的混乱吗:)

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

铁道是你不用汗水就能做到的地方。在这里,您可以访问所有初始化器(包括Rails )中共享的config方法。

代码语言:javascript
复制
module MySettings
  def self.environhost
    "foobar"
  end

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

附带注意:在大多数情况下,您应该很好地设置资产主机,正如mu_is_too_short评论的那样。如果您需要其他任何东西,您可以使用自定义扶正器由Railtie。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21249006

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档