2015-05-18 66 views
1

我是Rails的新手。我想設置第三方腳本,我想爲生產和開發設置環境變量,如API用戶名和密碼。 如何以安全的方式定義這些變量,以及如何在控制器中獲取它。在哪裏定義env變量以及如何在Rails中獲取它們

+0

爲什麼不定義'Username'&'Password'如** development.rb **和** production.rb ** – Abhi

+0

@Abhi在各自的環境中,通常不推薦像源代碼和密碼這樣的敏感信息到你的源代碼控制,所以'development.rb'和'production.rb'不是一個好地方o存儲此信息。 @Vipin問他們如何能夠做到這一點_securely_。 –

回答

1

使用figaro gem

添加費加羅寶石你的Gemfile和bundle install

運行figaro install。這將在config目錄中創建一個名爲application.yml的文件,並且它會將此文件添加到.gitignore文件中,以便git不會跟蹤此文件,並且不會最終將文件發送到遠程回購站。 你把你的鑰匙放在config/application中。YML以這種形式

user_name: "[email protected]$#[email protected]$#$" 
password: "long_password_7381a978f7dd7f9a1117" 

不管你想要去使用USER_NAME或密碼

ENV["user_name"] 
ENV["password"] 

要設置你的鑰匙在Heroku上運行figaro heroku:set -e production

+1

'ENV.fetch('user_name')'? – FedericoCapaldo

2

在使用Linux/Ubuntu機器的情況下。

由剛剛在/home/user中在行尾路徑追加

export API_USER_NAME=vipin 
export API_PASSWORD=password 

的.bashrc文件設置環境變量。

...在你的Rails應用程序,你可以使用

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

確保重啓終端。

3

您可以在您的應用程序的最高級別創建一個名爲.env的新文件,以及諸如Gemfile等文件。然後安裝dotenv Ruby寶石。裏面的.ENV文件,你可以添加你的環境變量,例如:

USERNAME=my_username 
PASSWORD=password 

然後你可以在你的控制器引用這些:

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

這是一個輝煌的寶石,我經常使用的所有我的鑰匙/密碼/等:Figaro

該寶石很容易遵循文件,應該解決您的問題。

E.g. :

配置/ application.yml

pusher_api_id: "2954" 

controller.rb

@pusher_id = ENV['pusher_api_id'] 
相關問題