确保在启动Rails时设置必要的环境变量

83 阅读1分钟

在Rails应用程序中,使用环境变量来配置外部服务或其他选项是很常见的。这些ENV_VARS ,通常不会被检查到源代码控制中,而是根据环境进行配置。

Rails有initializers 的概念,它是在Rails应用的启动阶段运行的代码。

你可以添加一个自定义的initializer ,以检查所需的环境变量是否被设置,以避免以后当你的代码期望某个值存在时出现异常。

使用方法

在你的应用程序中创建一个新的初始化器并添加所需的变量:

# config/initializers/01_ensure_environment.rb

if Rails.env.development?
  %w[
    AWS_ACCESS_KEY_ID
    AWS_SECRET_ACCESS_KEY
    S3_BUCKET
    ALGOLIA_ID
    ALGOLIA_API_KEY
    ALGOLIA_SEARCH_KEY
    ALGOLIA_INDEX
    ALGOLIA_CAMPAIGN_INDEX
    TWITTER_API_SECRET
    TWITTER_API_TOKEN
  ].each do |env_var|
    if !ENV.has_key?(env_var) || ENV[env_var].blank?
      raise <<~EOL
      Missing environment variable: #{env_var}

      Ask a teammate for the appropriate value.
      EOL
    end
  end
end

选项

Rails初始化器是按字母顺序加载和执行的。因此,使用像01_ensure_environment.rb 这样的名字来控制排序顺序,并确保这个名字首先加载。

你可能希望在git中签入一个样本.env.sample 文件(没有任何值),以使新的团队成员更容易使他们的环境进入工作状态。