Инициализаторы Rails 3, которые работают только на `rails server`, а не на` rails generate` и т. Д.
У меня есть относительно небольшой кусок кода инициализатора, который я хочу запускать всякий раз, когдаrails server
работает, но не когда я бегуrails generate
, rails console
или любая другая команда rails (включая задачи rake, которые требуют задачи среды). Этот фрагмент кода предварительно заполняет некоторые кеши и является относительно дорогим, поэтому я действительно не хочу, чтобы он работал на чем-либо, кромеrails s
Решения, которые являются неудовлетворительными:
Форман и соавт. будет означать, что он будет запущен в другом процессе, который (а) перегружен для этого небольшого фрагмента кода, (б) требует межпроцессного взаимодействия вместо простого подхода в памяти, предоставляемого инициализатором.
На сервере я решил эту проблему, настроив пассажиров для передачи специальной переменной среды в rails, сообщая, что она работает в контексте сервера. Однако я хотел бы, если это возможно, работать "из коробки" на всех машинах разработчика, не прибегая к тому, чтобы не забыть запустить rails server таким способом, который также предоставит эту переменную среды (т.е.IN_SERVER=true rails server
).
Этот вопрос всегда задавался ранее относительно запуска инициализатора при запуске вrails server
и не вrake
, Однако я хочу, чтобы он запускался только при инициализации сервера - исправление для rake великолепно, но не является исчерпывающим.