ruby-on-rails - 组织 Rails 初始值设定项的更好方法

标签 ruby-on-rails configuration initialization environment

在我当前的 Rails 项目中,我最终得到了很多特定于环境的初始化程序,例如我的 carrierwave.rb:

对于开发,我使用类似的东西:

CarrierWave.configure do |config|
  config.cache_dir = Rails.root.join('tmp', 'carrierwave')
  config.storage = :file
end

对于生产,我通过 fog 使用 S3:

CarrierWave.configure do |config|
  config.cache_dir = Rails.root.join('tmp', 'carrierwave')
  config.storage = :fog

  config.fog_public  = false
  config.fog_credentials = {
    provider:              'AWS',
    aws_access_key_id:     '...',
    aws_secret_access_key: '...'  
  }
end

我不想使用大量的 Rails.env.development? 调用来在配置之间切换,我也不想将这个初始化程序存储在我的 environment/* .rb 文件。有没有办法,例如在 initializers 目录下为我的每个环境创建一个目录?

initializers
├── development
│   └── carrierwave.rb
├── production
│   └── carrierwave.rb
└── test
    └── carrierwave.rb

根据 Rails 指南,问题如下:

You can use subfolders to organize your initializers if you like, because Rails will look into the whole file hierarchy from the initializers folder on down.

最佳答案

将您的环境特定初始化程序放在 /config/environments/initializers/[env] 下,例如 /config/environments/initializers/development 并将类似的内容添加到 config/application.rb:

module YourApp
  class Application < Rails::Application
    # Load environment specific initializers from "config/environments/initializers/[current_env]".
    initializer 'load_environment_initializers', after: :load_config_initializers do |app|
      Dir[File.join(File.dirname(__FILE__), 'environments', 'initializers', Rails.env.to_s, '**', '*.rb')].each {|file| require file }
    end

    ...

 end
end

在加载完所有常规初始化程序后,它将需要(加载)/config/environments/initializers/[env] 及其子目录中的所有文件。

关于ruby-on-rails - 组织 Rails 初始值设定项的更好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7764187/

相关文章:

c++ char * 在构造函数中初始化

ruby-on-rails - 在基本 Controller 中的操作之前跳过不起作用

ruby - 在 vagrant 中禁用 nfs 修剪

java - 如何静态初始化二维列表?

json - 如何动态添加结构属性以避免冗余代码?

wcf - 根据配置更新服务引用地址?

ruby-on-rails - Gem::InstallError: nokogiri 需要 Ruby 版本 < 2.4,>= 2.1.0。 rails

ruby-on-rails - Rails 4 - 按属性的存在排序

ruby-on-rails - 嵌入 Ruby 时在 Sublime Text 2 中保留 Sass 语法高亮

.net - 配置文件作为嵌入资源