在哪里定义env变量以及如何在Rails中获取它们

时间:2015-05-18 11:35:34

标签: ruby-on-rails

我是Rails的新手。我想设置第三方脚本,我想为生产和开发设置环境变量,如API用户名和密码。 如何以安全的方式定义这些变量,以及如何在控制器中获取它们。

4 个答案:

答案 0 :(得分:3)

您可以在应用程序的最高级别创建一个名为.env的新文件,以及Gemfile等文件。然后安装dotenv Ruby gem。在.env文件中,您可以添加环境变量,例如:

USERNAME=my_username
PASSWORD=password

然后,您可以在控制器中使用以下内容引用它们:

ENV["USERNAME"]
ENV["PASSWORD"]

答案 1 :(得分:3)

使用figaro gem

将figaro gem添加到您的Gemfile和bundle install

运行figaro install。这将在config目录中创建一个名为 application.yml 的文件,它会将此文件添加到 .gitignore 文件中,以便git不会跟踪此文件而您也不会结束将文件发送到远程仓库。 您将密钥放在 config / application.yml 中,格式为

user_name: "very_long_user_name!!@$#!@$#$"
password: "long_password_7381a978f7dd7f9a1117"

您想要使用user_name或密码

的任何地方
ENV["user_name"]
ENV["password"]

在heroku run figaro heroku:set -e production

上设置密钥

答案 2 :(得分:2)

如果您使用的是Linux / Ubuntu计算机,请使用

只需附加

即可设置环境变量
export API_USER_NAME=vipin
export API_PASSWORD=password

/ home / user 路径末尾的 .bashrc 文件。

...在您的rails应用程序中,您可以使用

ENV["API_USER_NAME"]
ENV["API_PASSWORD"]

确保重新启动终端。

答案 3 :(得分:1)

这是我经常用于所有密钥/密码/等的精彩宝石:Figaro

宝石易于遵循文档,可以解决您的问题。

E.g。 :

<强>配置/ application.yml

pusher_api_id: "2954"

<强> controller.rb

@pusher_id = ENV['pusher_api_id']