【问题标题】:Where should server environment variables be stored in Ruby on Rails?服务器环境变量应该存储在 Ruby on Rails 中的什么位置?
【发布时间】:2012-04-27 20:47:21
【问题描述】:

我应该将特定于我的开发、测试、生产服务器的密钥存储在我的 ruby​​ 项目中的什么位置?例如,应该在哪里存储我的开发特定的 amazon s3 密钥和密钥?我的 config/development.rb 文件?我看到的一个问题是,如果该文件是公共 github 项目的一部分,它将向所有人展示。 谢谢!

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    您将单独的环境变量分别存储在config/development.rbconfig/testing.rbconfig/production.rb 中。

    但是,如果您的文件将存储在公共 git 存储库中,您不希望将任何敏感信息硬编码到其中。最好的方法是使用 .gitignore 中的 yaml 文件或在 shell 中使用环境变量。我更喜欢后者,像这样:

    PAPERCLIP_OPTIONS = { storage:          :s3,
                          bucket:           ENV['S3_BUCKET'],
                          s3_credentials: { access_key_id: ENV['S3_KEY'],
                                            secret_access_key: ENV['S3_SECRET'] }}
    

    然后,您只需在运行应用程序的系统上设置环境变量。

    如果您使用 yaml 配置文件方法,您必须将敏感配置文件添加到您的 .gitignore 文件中。否则,它们仍会上传到您的公共仓库。

    【讨论】:

      【解决方案2】:

      如果您查看 config 目录,您将看到一个 YAML 文件,其中包含数据库凭据信息。您可以为您的云环境做同样的事情。

      development:
        server: xiy-234
        username: hello
        password: 1325abc
      
      production:
        ...
      

      【讨论】:

        【解决方案3】:

        您可以将这些信息放在 config 目录中的 .yml 文件中。

        例如:

        production:
          access_key_id: xxx
          secret_access_key: xx
          bucket: xxx
        
        development:
          access_key_id: xxx
          secret_access_key: xxx
          bucket: xxx
        
        staging:
          access_key_id: xxx
          secret_access_key: xxx
          bucket: xxx
        

        完成后,您必须通过执行以下操作将这些键存储在哈希中:

        APIS_CONFIG = {'amazons3' => YAML.load_file("#{RAILS_ROOT}/config/amazons3.yml")[Rails.env]}
        

        (您可以将上一行代码放在位于config/initializers 目录下的.rb 文件中)

        请注意,您可能会觉得这个Railscast 很有趣。

        【讨论】:

          猜你喜欢
          • 2017-10-11
          • 2019-02-25
          • 2011-04-03
          • 2012-01-09
          • 2010-10-09
          • 2014-09-16
          • 1970-01-01
          • 1970-01-01
          • 2020-06-04
          相关资源
          最近更新 更多