2012-01-11 26 views
2

我正在使用Rails 3,並且需要在開發期間運行帶有SSL支持的WEBrick。要做到這一點,我已經按照本指南:將ruby代碼添加到僅在rails開發環境中執行的腳本/ rails

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

這工作得很好,不過,我希望確保在生產模式下運行時,這些設置都沒有影響我的Rails應用程序。我們目前正在使用Apache/Passenger,並且該項目似乎仍然運行良好。然而,是否有一種乾淨的方式來確保這些代碼甚至不被執行?我想可能的答案可能是代​​碼周圍的if/end塊,或者是內置的rails設備,它允許將僅限開發的代碼放置在單獨的文件或類似的文件中。

+0

Rails對象在該執行點不可用。 – 2012-01-11 19:58:54

+0

糟糕,沒有看到那是前導軌。 – 2012-01-11 20:36:52

回答

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 

希望它能幫助。

+0

我認爲這個答案對於較老版本的rails可能是正確的,但不是rails 3,因爲'RAILS_ENV'不能被使用(rails現在通過'rails server [environment]'啓動)。我一直在使用下面的'如果ARGV [1] .nil?'這個工作到目前爲止,但我更喜歡能夠抓住總是設置爲活動環境的單一變量。也許這在加載過程的早期是不可用的。 – 2012-01-12 18:18:03

+0

您在那裏使用的代碼是使用ENV變量,因此它依賴於正常工作。老實說,Webrick幾乎從來都不是解決方案。 – aemadrid 2012-01-19 20:24:57