我應該在我的ruby項目中存儲特定於我的開發,測試和生產服務器的密鑰?例如,哪裏應該存儲我的開發特定的亞馬遜s3祕密和密鑰?我的config/development.rb文件?我看到的一個問題是,如果該文件是公開的github項目的一部分,它將顯示給大家。 謝謝!服務器環境變量應該存儲在Ruby on Rails中?
1
A
回答
3
您分別存儲在config/development.rb
,config/testing.rb
和config/production.rb
單獨的環境變量。
但是,如果您的文件將存儲在公共git倉庫中,則您不希望將任何敏感信息硬編碼到它們中。最好的方法是使用屬於.gitignore
的yaml文件或在shell中使用環境變量。我更喜歡後者,如下所示:
PAPERCLIP_OPTIONS = { storage: :s3,
bucket: ENV['S3_BUCKET'],
s3_credentials: { access_key_id: ENV['S3_KEY'],
secret_access_key: ENV['S3_SECRET'] }}
然後,您只需在運行該應用程序的系統上設置環境變量。
如果您使用yaml配置文件方法,必須將敏感配置文件添加到您的.gitignore
文件。否則,他們仍會上傳到您的公開回購。
1
如果您查看config目錄,您將看到一個包含數據庫憑證信息的YAML文件。你可以爲你的雲環境做同樣的事情。
development:
server: xiy-234
username: hello
password: 1325abc
production:
...
0
您可以將這些信息放在配置目錄中的.yml文件中。
例如:
production:
access_key_id: xxx
secret_access_key: xx
bucket: xxx
development:
access_key_id: xxx
secret_access_key: xxx
bucket: xxx
staging:
access_key_id: xxx
secret_access_key: xxx
bucket: xxx
一旦做到這一點,你必須在做這些密鑰存儲在一個Hash如下:
APIS_CONFIG = {'amazons3' => YAML.load_file("#{RAILS_ROOT}/config/amazons3.yml")[Rails.env]}
(你可以把以前的代碼行內一個.rb
文件位於config/initializers
目錄中)
請注意,您可能會發現這個Railscast有趣。
相關問題
- 1. gitignore與環境變量Ruby on Rails
- 2. Ruby on Rails的使用環境變量
- 3. Ruby on Rails的 - 環境變量
- 4. 在服務器上存儲環境變量
- 5. 無法將json響應存儲在變量中。 Ruby on Rails
- 6. Ruby on Rails Web應用程序未看到環境變量
- 7. 在Ruby on Rails中分配環境變量
- 8. 初始化器內的訪問環境變量Ruby on Rails
- 9. Ruby on Rails - 緩存變量
- 10. 在Ruby on Rails環境中設置Jenkins
- 11. Ruby on Rails Postgres服務器
- 12. 的Ruby on KeyError異常環境變量
- 13. 在Rails的Webrick服務器中設置環境變量
- 14. 在嵌入式web服務器環境中的Django或Ruby on Rails?
- 15. 將選擇查詢結果存儲在變量Ruby on Rails中
- 16. 服務器環境變量用法
- 17. Ruby on Rails:我應該在哪裏存儲模塊?
- 18. Ruby環境變量?
- 19. Ruby環境變量
- 20. mod_rewrite和服務器環境變量
- 21. ECS:環境變量設置任務,但不存在於容器
- 22. Ruby on rails:啓動雜服服務器
- 23. ruby on rails在變量上存儲sql結果
- 24. 如何在Ruby on Rails中構建語言環境切換器?
- 25. golang環境變量存儲在哪裏?
- 26. rails/passenger:使用memcache服務器地址的環境變量
- 27. Rails環境變量
- 28. 在Heroku生產環境中不存在Ruby on Rails應用程序頁面
- 29. Ruby On Rails - 在服務器啓動時使用無限循環
- 30. 便攜式Ruby on Rails環境