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

发布于 2024-10-31 05:06:27 字数 415 浏览 1 评论 0原文

我有一个在多个服务器上运行的应用程序: - 在本地开发机器上 - 在赫罗库上 - 在 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

单调的奢华 2024-11-07 05:06:27

将代码放入 config.ru 文件中可能是跨不同类型服务器(Unicorn/Passenger/Rails::Server/etc)检测服务器模式的更可靠方法。

例如,在 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...

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:

# 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...
花开雨落又逢春i 2024-11-07 05:06:27

又怎样呢?

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

What about?

config.serve_static_assets = ( defined?(Mongrel) || defined?(WEBrick) ) ? true : false
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文