Ruby 在服务器上放置Twitter应用程序的API密钥的位置

Ruby 在服务器上放置Twitter应用程序的API密钥的位置,ruby,security,twitter,server,directory-structure,Ruby,Security,Twitter,Server,Directory Structure,我目前正在使用Twitter gem for Ruby为我的朋友编写两个Twitter机器人。我的计划是将它们的密钥存储在一个.txt文件中,并将bot的其余代码存储在我的服务器上,但我读到的所有内容都表明,这些密钥在代码中不应该是可读的。这是否足够安全?如果不安全,什么是好的解决方案?谢谢 一种常见的方法是将环境变量保存到名为.env的文件中,该文件被版本控制忽略(因此不会包含在Github中),但由代码读取。有一个宝石可以帮助你做到这一点 将.env添加到.gitignore文件中 创建一个

我目前正在使用Twitter gem for Ruby为我的朋友编写两个Twitter机器人。我的计划是将它们的密钥存储在一个.txt文件中,并将bot的其余代码存储在我的服务器上,但我读到的所有内容都表明,这些密钥在代码中不应该是可读的。这是否足够安全?如果不安全,什么是好的解决方案?谢谢

一种常见的方法是将环境变量保存到名为
.env
的文件中,该文件被版本控制忽略(因此不会包含在Github中),但由代码读取。有一个宝石可以帮助你做到这一点

  • .env
    添加到
    .gitignore
    文件中
  • 创建一个包含所有环境变量的本地
    .env
    文件
  • 需要“dotenv”
    并将
    dotenv.load
    放在脚本开头的某个地方。在Rails中,
    require
    是不必要的,您可以将加载调用放在
    config/initializers
    文件夹中的任何文件中
  • 检查您的应用程序在本地是否正常工作。环境变量应该在Ruby代码的
    ENV
    散列中找到
  • 保存更改并将应用程序的新版本推送到digital ocean
  • 在数字海洋服务器上的repo根目录中手动创建.env文件
  • 运行digital ocean server并检查一切是否正常 其他说明:

    • 像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\u env=test Rails c
      应该做同样的事情


    您使用什么平台托管?您可以将其保存为env变量,只需在需要的代码中调用它
    env[“TWITTER\u API”]
    @maxpleaner我正在使用Debian 9微滴DigitalOcean@icemelt环境变量是绑定到目录还是存在于整个服务器上?请原谅,我对Unix/Linux还是相当陌生的。它与服务器有关