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