【问题标题】:best place to configure a global setting for a gem Rails为 gem Rails 配置全局设置的最佳位置
【发布时间】:2015-09-08 16:20:25
【问题描述】:
我在 Rails 应用程序中使用 Google Api Client gem。
我需要全局设置如下配置:
Google::Apis::RequestOptions.default.retries = 5
这样做的最佳做法/位置是什么。
其他人在设置此选项时遇到问题的注意事项: Google::Apis 类在 google_api_client gem 的 0.9.x 版本之前不存在,与之前的版本不兼容。
【问题讨论】:
标签:
ruby-on-rails
ruby
ruby-on-rails-3
google-api-client
【解决方案1】:
如果选项取决于应用程序实例的运行,假设您需要在本地机器或登台重试 1 次,但希望在生产环境中重试 5 次,最好的处理方法是将其保存在环境变量中并在应用程序启动时获取它.
所以在你的初始化器中加入以下代码(比如./config/initializers/google_api_client.rb):
Google::Apis::RequestOptions.default.retries = ENV['google_api_client_retries']
然后你可以启动应用程序指定它:
google_api_client_retries=1 bundle exec rails s
您可以使用dotenv gem 将环境变量保存在文件中(以使开发环境中的事情保持简单),只需将其放在./.env 文件中:
google_api_client_retries: 1
它会被自动获取,所以你只需启动应用程序
bundle exec rails s
如果您只想在任何应用程序实例上设置为 5,您可以在初始化程序中将其显式设置为 5。