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

标签 ruby-on-rails ruby ruby-on-rails-3 configuration initialization

我有一个名为 _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/

相关文章:

ruby-on-rails - 如何在Rails项目中运行日常任务/脚本?

ruby-on-rails - 功能测试无法识别任何路线

ruby-on-rails - Rails 应用程序的领域驱动设计 : Implementing a service in a basic example

ruby-on-rails - 我可以在 Node 上运行 Rails 吗?

ruby - RSpec 自定义可区分匹配器

ruby-on-rails - 如何在 Rails 5.0.0 上修复 bundle 安装 "nio4r error"

ruby - #<#<Class :0xbe53d68>:0xcf9cb24> in rails 的未定义方法 `capture_haml'

ruby-on-rails - 映射几个变量

ruby-on-rails - Rails 3 的应用程序论坛

mysql - Ruby mysql gem 'reconnect' 对象变量