Запускать инициализатор только для задач Rake

Я бы хотел, чтобы определенный инициализатор запускался при выполнении задачи Rake, но не при запуске сервера Rails.

Как лучше всего отличить вызов Rake от вызова сервера?


person shmichael    schedule 01.12.2010    source источник


Ответы (1)


Rake позволяет указать зависимости для ваших задач. Лучшим рекомендуемым действием для вас было бы поместить вашу специфичную для рейка инициализацию в отдельную задачу, которая, в свою очередь, зависит от задачи «окружающая среда». Например:

namespace :myapp do
    task :custom_environment => :environment do
        # special initialization stuff here
        # or call another initializer script
    end

    task :my_task => :custom_environment do
        # perform actions that need custom setup
    end
end

Если вы хотите создать специфичный для рейка каталог сценариев инициализации, как у нас для самих рельсов, мы просто реализуем это в нашей задаче :custom_environment.

task :custom_environment => :environment do
    Dir.glob("config/rake-initializers/*.rb").each do |initializer|
        require initializer
    end
end

Это позволяет вам хранить специфичные для рейка инициализаторы отдельно от обычных инициализаторов. Вам просто нужно помнить, что нужно полагаться на :custom_environment, который вы настроили.

person Berin Loritsch    schedule 01.12.2010