Ruby on rails Rails 3:如何检测应用程序是否在多个不同环境的服务器模式下运行?

Ruby on rails Rails 3:如何检测应用程序是否在多个不同环境的服务器模式下运行?,ruby-on-rails,initialization,heroku,Ruby On Rails,Initialization,Heroku,我有一个在多台服务器上运行的应用程序: -在dev机器上本地 -论赫罗库 -在Nginx上具有Passanger的特定服务器上 我正在尝试启动一个特定的代码(加载一些REDIS密钥),只有在启动web服务器时才需要它 我已经做了相当多的挖掘工作,我发现最好的解决方案是在初始值设定项中使用以下命令执行代码: if defined?(Rails::Server) #my code end 这在本地运行得很好,但Rails::Server似乎从未在Heroku或Passanger上定义过 我需

我有一个在多台服务器上运行的应用程序: -在dev机器上本地 -论赫罗库 -在Nginx上具有Passanger的特定服务器上

我正在尝试启动一个特定的代码(加载一些REDIS密钥),只有在启动web服务器时才需要它

我已经做了相当多的挖掘工作,我发现最好的解决方案是在初始值设定项中使用以下命令执行代码:

if defined?(Rails::Server)
   #my code
end
这在本地运行得很好,但Rails::Server似乎从未在Heroku或Passanger上定义过

我需要一个在任何情况下都有效的解决方案,请帮助,这非常重要

谢谢

亚历克斯

ps:我运行的是Rails 3.0.4、Ruby 1.8.7,你呢

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

将代码放在config.ru文件中可能是跨不同类型的服务器(Unicorn/Passenger/Rails::server/etc)检测服务器模式的一种更健壮的方法

e、 例如,在rails root/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...

上面的代码将抛出。几年后,您需要此ENV['server\u mode']='1'。。现在Rails似乎在
config.ru
文件之前加载初始值设定项