【问题标题】:Adding ruby code to script/rails that only executes in rails development environment将 ruby​​ 代码添加到仅在 rails 开发环境中执行的脚本/rails
【发布时间】:2012-01-11 19:29:20
【问题描述】:

我正在使用 Rails 3,并且在开发过程中需要运行带有 SSL 支持的 WEBrick。为此,我遵循了以下指南:

http://www.nearinfinity.com/blogs/chris_rohr/configuring_webrick_to_use_ssl.html

这很好用,但是,我想确保这些设置在生产模式下运行时不会影响我的 rails 应用程序。我们目前正在使用 Apache/Passenger,该项目似乎仍然运行良好。但是,是否有一种干净的方法来确保甚至不执行此代码?我在想一个可能的答案可能是代​​码周围的 if/end 块,或者可能是内置的 rails 工具,它允许将仅开发代码放置在单独的文件或类似文件中。

【问题讨论】:

  • Rails 对象在执行时不可用。
  • 糟糕,没看到那是预轨。

标签: ruby ruby-on-rails-3 passenger webrick


【解决方案1】:

看起来 ENV['RAILS_ENV'] 是你的朋友。 ENV 哈希向您显示应用程序正在运行的 Unix 环境,Rails 本身将查看 RAILS_ENV 以决定以哪种模式运行。你可以这样做:

if ENV['RAILS_ENV'].to_s == 'development' || ENV['RAILS_ENV'].to_s == ''
  # do your thing here
end

您还可以确保在该环境下运行 webrick:

#> RAILS_ENV=development /path/to/webrick/script

希望对你有帮助。

【讨论】:

  • 我认为这个答案对于旧版本的 rails 可能是正确的,但不是 rails 3,因为 RAILS_ENV 不再应该被使用(rails 是现在通过rails server [environment] 开始)。我一直在使用以下if ARGV[1].nil?,到目前为止它一直在工作,但我更希望能够抓住一个始终设置为活动环境的奇异变量。也许这在加载过程的早期不可用。
  • 您在那里使用的代码使用了 ENV 变量,因此它依赖于它才能正常工作。老实说,Webrick 几乎从来都不是解决方案。
猜你喜欢
  • 2013-08-29
  • 1970-01-01
  • 2017-03-09
  • 2011-05-17
  • 2011-07-28
  • 1970-01-01
  • 1970-01-01
  • 2014-09-16
  • 2012-10-16
相关资源
最近更新 更多