2011-04-09 32 views
6

我有在多個服務器上運行的應用程序: - 在開發機器 本地 - 在Heroku - 與男乘客在Nginx的Rails 3:如何檢測應用程序是否在服務器模式下運行多個不同的環境?

特定服務器上

我想推出一個特定的代碼(裝載一些Redis的鍵)這隻在Web服務器啓動時才需要。

我已經做了相當多的挖掘,我發現最好的解決方案是在與初始化執行我的代碼:

if defined?(Rails::Server) 
    #my code 
end 

這行之有效本地,但似乎滑軌:: Server從不在Heroku或Passanger中定義。

我需要一個適用於任何情況的解決方案,請幫助,這非常重要。

感謝,

亞歷

PS:我正在運行的Rails 3.0.4,1.8.7紅寶石

回答

2

怎麼樣?

config.serve_static_assets = (defined?(Mongrel) || defined?(WEBrick)) ? true : false 
8

在config.ru文件把代碼可能是檢測在不同類型的服務器(麒麟/乘客/ Rails的::服務器的/ etc)服務器模式更穩健的方式。

例如,在軌道根/ config.ru:

# This file is used by Rack-based servers to start the application. 

# ADD this line and read the value later: 
ENV['server_mode'] = '1' 

require ::File.expand_path... 
+1

上述代碼將拋出。你想這個ENV ['server_mode'] ='1' – portforwardpodcast 2013-09-04 22:16:15

+1

修復了它。謝謝。幾年之後的 – 2013-09-09 18:48:50

+0

..看來Rails在'config.ru'文件之前加載初始化器 – songyy 2017-11-16 02:45:51

相關問題