Я бы хотел, чтобы определенный инициализатор запускался при выполнении задачи Rake, но не при запуске сервера Rails.
Как лучше всего отличить вызов Rake от вызова сервера?
Я бы хотел, чтобы определенный инициализатор запускался при выполнении задачи Rake, но не при запуске сервера Rails.
Как лучше всего отличить вызов Rake от вызова сервера?
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
, который вы настроили.