Rails 3: как определить, работает ли приложение в режиме сервера для нескольких разных сред? - PullRequest
7 голосов
/ 09 апреля 2011

У меня есть приложение, которое работает на нескольких серверах: - локально на компьютерах разработчиков - на heroku - на конкретном сервере с Passanger на Nginx

Я пытаюсь запустить определенный код (загружает некоторые ключи REDIS)это требуется только в том случае, если веб-сервер запущен.

Я довольно много покопался, и самым хорошим решением, которое я нашел, было выполнение моего кода в инициализаторе с:

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

Это хорошо работает локально, но кажется, что Rails :: Server никогда не определяется ни в Heroku, ни в Passanger.

Мне нужно решение, которое работает в каждом случае, пожалуйста, помогите, это действительно важно.

Спасибо,

Алекс

ps: я использую Rails 3.0.4, Ruby 1.8.7

Ответы [ 2 ]

8 голосов
/ 02 июля 2013

Размещение кода в файле 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...
2 голосов
/ 20 мая 2011

А как же?

config.serve_static_assets = ( defined?(Mongrel) || defined?(WEBrick) ) ? true : false
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...