覆盖production.rb中的类变量?

时间:2018-02-06 22:07:29

标签: ruby-on-rails ruby

初学者RoR程序员在这里。

让我说我有类似的东西:

class Foo
    cattr_accessor :VAR_ONE, :VAR_TWO

    # these need to be overridden in config/initializers/production.rb
    @@VAR_ONE = nil
    @@VAR_TWO = nil

    ...

如何在 production.rb 中设置这些变量?我试过这样的事情,但它不起作用:

class << Rails.application
    ...
end

class << Rails.foo
    VAR_ONE = ENV['VAR_ONE']
    VAR_TWO = ENV['VAR_TWO']
end

谢谢!

2 个答案:

答案 0 :(得分:0)

您可以测试一下您所处的环境:

if Rails.env.production?  
 //do something
end

此外 - 如果您正在尝试保存API密钥或诸如此类的东西。您可以通过终端或secretts.yml单独设置它们,并指定环境。

答案 1 :(得分:0)

无需在代码中检查production,将此类变量委托给环境。 宝石称为dotenvhttps://github.com/bkeepers/dotenv。简单如下:

  1. 在根目录中创建.env文件
  2. 添加变量:VAR_ONE=1
  3. 在代码VAR_ONE = ENV['VAR_ONE']
  4. 中使用它们