在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 文件(没有任何值),以使新的团队成员更容易使他们的环境进入工作状态。