Rails 3:如何检测应用程序是否在多个不同环境的服务器模式下运行?
我有一个在多个服务器上运行的应用程序: - 在本地开发机器上 - 在赫罗库上 - 在 Nginx 上使用 Passanger 的特定服务器上,
我尝试启动特定代码(加载一些 REDIS 密钥),仅在启动 Web 服务器时才需要该代码。
我已经做了相当多的挖掘,我发现的最好的解决方案是在初始化程序中执行我的代码:
if defined?(Rails::Server)
#my code
end
这在本地运行良好,但似乎 Rails::Server 从未在 Heroku 或 Passanger 上定义。
我需要一个适用于所有情况的解决方案,请帮忙,这非常重要。
谢谢,
Alex
ps:我正在运行 Rails 3.0.4,Ruby 1.8.7
I have an app that runs on multiple servers:
- locally on dev machines
- on heroku
- on a specific server with Passanger on Nginx
I am trying to launch a particular code (loading some REDIS keys) that is only required if the web server is launched.
I have done quite a bit of digging, and the nicest solution I found was to execute my code in an initializer with:
if defined?(Rails::Server)
#my code
end
This works well locally, but it seems that Rails::Server never gets defined either on Heroku or Passanger.
I need a solution that works in every case, please help, this is really important.
Thanks,
Alex
ps: I am running Rails 3.0.4, Ruby 1.8.7
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
将代码放入 config.ru 文件中可能是跨不同类型服务器(Unicorn/Passenger/Rails::Server/etc)检测服务器模式的更可靠方法。
例如,在 Rails-root/config.ru 中:
Putting code in your config.ru file might be a more robust way of detecting server mode across different types of servers (Unicorn/Passenger/Rails::Server/etc).
e.g., in rails-root/config.ru:
又怎样呢?
What about?