我应该在我的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环境