Подтвердить что ты не робот

Rails: инициализаторы для среды?

Я хотел бы, чтобы код в одном из моих инициализаторов (в config/initializers/) запускался только для среды :development, но не :test или :production. Какой лучший способ сделать это?

Вставка его в config/environments/test.rb кажется нечистым, и мне не очень нравится обертывать весь файл инициализатора в инструкции if Rails.env == 'development' do ... end. Есть ли какой-то канонический способ сделать это?

(Background: Чтобы ускорить время тестовой загрузки, я пытаюсь перенести жемчужину Barista в группу :development моего Gemfile, но config/initializers/barista_config.rb вызывает Barista.configure, так что теперь он задыхается от этого в тестовый (и производственный) режим.)

4b9b3361

Ответ 1

Я уверен, что ваши два варианта включают код конфигурации в config/environments/development.rb или завершают ваш код инициализатора блоком if. Вы можете затянуть свой второй вариант, сделав if Rails.env.development?, однако.

Ответ 2

Я не знаю, хорошая ли это идея, но это другая идея.

Вы можете создать каталог config/initializers/development (или config/environments/development/initializers), поместите свой barista_config.rb в этот каталог и затем добавьте что-нибудь в этот каталог из config/environments/development.rb.

Я не знаю, хорошая идея или нет, но это хотя бы третий вариант... на всякий случай вы все еще думаете об этой проблеме через три с половиной года после того, как зададите вопрос.

Ответ 3

У Barista есть настройка конфигурации для этого:

Barista.configure do |c|
  c.env = :development
end

Это перекомпилирует coffescript в js в режиме dev и ускорит ваши тесты.

Убедитесь, что вы запустили:

rake barista:brew

перед тем, как проверить свой код.

https://github.com/Sutto/barista