向仅在rails开发环境中执行的脚本/rails添加ruby代码

向仅在rails开发环境中执行的脚本/rails添加ruby代码,ruby,ruby-on-rails-3,passenger,webrick,Ruby,Ruby On Rails 3,Passenger,Webrick,我使用的是Rails 3,在开发过程中需要使用SSL支持运行WEBrick。为了实现这一点,我遵循以下指南: 这很好,但是,我想确保这些设置在生产模式下运行时不会影响rails应用程序。我们目前正在使用Apache/Passenger,该项目似乎仍然运行良好。但是,有没有一种干净的方法来确保这段代码没有被执行?我认为一个可能的答案可能是围绕代码的if/end块,或者可能是一个内置的rails工具,它允许只进行开发的代码放在一个单独的文件或类似的东西中。看起来ENV['rails\u ENV']

我使用的是Rails 3,在开发过程中需要使用SSL支持运行WEBrick。为了实现这一点,我遵循以下指南:


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

看起来ENV['rails\u 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对象在执行时不可用。哎呀,我没有看到这是pre-Rails。我认为这个答案可能适用于旧版本的Rails,但不适用于Rails 3,因为
Rails\u ENV
不应该再使用了(Rails现在通过
Rails服务器[环境]
启动). 我一直在使用下面的
if ARGV[1].nil?
到目前为止一直有效,但我更希望能够获取始终设置为活动环境的单个变量。也许这在加载过程的早期是不可用的。您在加载过程中使用的代码正在使用ENV变量,因此这取决于该变量能否正常工作。老实说,Webrick几乎不是解决方案。