【问题标题】:where to put configuration constant in rails在哪里放置配置常量在rails中
【发布时间】:2013-09-01 03:48:54
【问题描述】:

我必须在我的/app/config/environments/production.rb 中使用一个常量。我想把它作为配置常量放在某个地方。所以我试图把它放在一个initializer 文件中,但是/app/config/environments/production.rb 似乎之前已经加载过了。然后我试着把我的常量放在Rails::Initializer.run do |config|... 里面/app/config/environment.rb 里面,但是/app/config/environments/production.rb 之前似乎还是被加载了。我可以把这个常量作为配置常量放在哪里,以便/app/config/environments/production.rb 识别它?

【问题讨论】:

  • 试试这个来管理你的应用程序中的配置:github.com/laserlemon/figaro
  • 假设你在生产中只需要这个常量,你能不只在config/environments/production.rb的顶部定义常量吗?如果你需要的不仅仅是生产,你可以在config/environment.rb顶部定义它

标签: ruby-on-rails ruby configuration


【解决方案1】:

让我们弄清楚您通过什么路径到达您的应用程序会加载初始化文件。您必须牢记这一点:

当您运行运行rails 服务器的rails s(来自您的app/script/rails 文件)时,

  • 需要您的应用程序boot.rb 文件(主要处理gems 加载),然后将您的控制台args(此处为server 别名s)要求传递给rails @987654330 @ 文件(位于 rails 源代码中)。

  • 在那里,您的应用程序config/application.rb 是必需的。然后,Server 类被实例化,你被扔到railties/lib/rails/command/server.rb 文件中。事实上,Server 类继承自 Rack::Server,所以 rails 应用程序是 rack 应用程序!所以,你会在你的rails 应用程序中找到一个config.ru 文件,这会加载config/environment.rb 文件。

config/environment.rb 文件做了两件事

  • 需要您的应用程序config/applcation.rb,以加载正确的rails framework。(有关信息,您将在您的应用程序application.rb 中找到从Rails::Application 继承的Application 类,该类继承自自身来自Rails::Engine,它继承自Rails::Railtie 类)

  • 调用initialize! bang 方法,加载config/environment/*.rb 文件,然后处理所有初始化程序进程(更准确地说,初始化程序方法在railties/lib/rails/engine.rb 文件中定义)。因此,现在,考虑到这一点,您应该能够正确定义常量。

为了更好地理解初始化过程,我向您推荐这个很棒的railscast,它主要启发了这个答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-01
    • 1970-01-01
    • 2012-04-04
    • 2011-06-30
    • 1970-01-01
    • 1970-01-01
    • 2011-01-13
    相关资源
    最近更新 更多