在 rails 中设置测试环境变量而不输入源代码
Setting Test environment variables in rails without putting in source code
我在应用程序中使用 Twilio,在生产环境中,我使用 heroku 的 CLI 设置了身份验证令牌。我正在使用 sms-spec
(https://github.com/monfresh/sms-spec) 在本地测试我的应用程序的 Twilio 集成。我想在测试环境中将 ENV['TWILIO_AUTH_TOKEN']
设置为我的令牌。
每当我进行更改时,我都会使用 guard 来自动 运行 我的测试,因此我不想每次 运行 测试时都必须手动设置 ENV 变量。出于安全原因,我也不想将令牌放入我的源代码中。
有没有一种方法可以为我的本地测试环境设置 ENV 变量,使其永久不变,而不是在我的源代码中?我花了几个小时研究这个,但似乎找不到如何做到这一点的好解释。非常感谢任何帮助:)
两种方法:
- 使用像
Dotenv
(link) 这样的 gem。这是我在大多数应用程序开发中使用的方法。只需在 gem 文件中包含 gem,捆绑安装,然后将任何环境变量设置存储在名为 .env
的顶级文件中。重新启动您的 rails 服务器,ENV 将自动加载。非常好用方便。
如果你在 ENV 部分比较灵活,并且你是 运行 Rails 4.1+,你可以使用 config/secrets/yml
。这在 Rails 4.1 release notes 的第 2.2 节中有很好的记录。因此,在您的情况下,您可以这样设置:
发展:
twilio_auth_token: 非常机密的字符串
然后,在您的初始化程序中,您将使用 Rails.application.secrets.twilio_auth_token
而不是引用 ENV['TWILIO_AUTH_TOKEN']
。我自己还没有尝试过,但它在我的列表中,因为我宁愿使用本机 Rails 功能也不愿使用单独的 gem.
当然,任何包含您的秘密的文件都需要小心保护。至少,确保包含在 .gitignore
中,这样您的秘密就不会进入您的代码存储库。
我在应用程序中使用 Twilio,在生产环境中,我使用 heroku 的 CLI 设置了身份验证令牌。我正在使用 sms-spec
(https://github.com/monfresh/sms-spec) 在本地测试我的应用程序的 Twilio 集成。我想在测试环境中将 ENV['TWILIO_AUTH_TOKEN']
设置为我的令牌。
每当我进行更改时,我都会使用 guard 来自动 运行 我的测试,因此我不想每次 运行 测试时都必须手动设置 ENV 变量。出于安全原因,我也不想将令牌放入我的源代码中。
有没有一种方法可以为我的本地测试环境设置 ENV 变量,使其永久不变,而不是在我的源代码中?我花了几个小时研究这个,但似乎找不到如何做到这一点的好解释。非常感谢任何帮助:)
两种方法:
- 使用像
Dotenv
(link) 这样的 gem。这是我在大多数应用程序开发中使用的方法。只需在 gem 文件中包含 gem,捆绑安装,然后将任何环境变量设置存储在名为.env
的顶级文件中。重新启动您的 rails 服务器,ENV 将自动加载。非常好用方便。 如果你在 ENV 部分比较灵活,并且你是 运行 Rails 4.1+,你可以使用
config/secrets/yml
。这在 Rails 4.1 release notes 的第 2.2 节中有很好的记录。因此,在您的情况下,您可以这样设置:发展: twilio_auth_token: 非常机密的字符串
然后,在您的初始化程序中,您将使用 Rails.application.secrets.twilio_auth_token
而不是引用 ENV['TWILIO_AUTH_TOKEN']
。我自己还没有尝试过,但它在我的列表中,因为我宁愿使用本机 Rails 功能也不愿使用单独的 gem.
当然,任何包含您的秘密的文件都需要小心保护。至少,确保包含在 .gitignore
中,这样您的秘密就不会进入您的代码存储库。