我正在为我的朋友们写一些Twitter机器人使用Twitter的Ruby宝石。我的计划是将它们的密钥存储在.txt文件中,其余的机器人代码放在我的服务器上,但我读过的所有内容都说密码不应该在代码中可读。这是否足够安全,如果不是,那将是一个很好的解决方案?谢谢!
答案 0 :(得分:1)
一种常见的方法是将环境变量保存到名为.env
的文件中,该文件被版本控制忽略(因此不会包含在Github中),但是由代码读取。帮助解决这个问题的一个宝石是dotenv。
.env
添加到.gitignore
文件。.env
文件
require 'dotenv'
并将Dotenv.load
放在脚本开头的某处。在Rails中,require
是不必要的,您可以将加载调用放在config/initializers
文件夹中的任何文件中ENV
哈希中找到。 其他说明:
请参阅How To Read and Set Environmental and Shell Variables on a Linux VPS
像heroku这样的平台有不同的机制来设置环境变量,例如heroku config:set
或Web UI。
您可以使用bash中的env
命令一次性设置环境变量,例如:
env a=hello b=' world' ruby -e 'puts ENV["a"] + ENV["b"]'
# => hello world
这可以提供一种快速的方法来配置程序而无需进入参数解析。例如在Rails中,您可以说rails c test
使用测试环境打开控制台,但env RAILS_ENV=test rails c
应该做同样的事情。