2014-09-23 2 views
0

У разработчика было право сбросить БД, но не воссоздать его. Во время работы над задачами rake он случайно запустил весь набор rake, который включал в себя уничтожение базы данных разработки, но без надлежащего разрешения на ее повторное создание и заполнение.Rails 4: остановить «рейк» от выполнения всех задач рейка

Как я могу гарантировать, что это не повторится? Возможно ли в приложении Rails переопределить запуск rake, чтобы он не выполнял кучу неуказанных задач?

Разработчик искал список задач и считал, что работающий rake предоставит это объявление, аналогично тому, как работает rails сам по себе выдает инструкции.

Я знаю, что есть binstub для rake, но я действительно не знаю, что произойдет, если я буду возиться с вещами там.

Есть ли хорошие решения для такой ситуации?

ответ

0

Принимая к сведению ответ от Дейва и другой SO вопрос (не мог найти снова ссылку), вот как вы можете изменить настройки по умолчанию rake задачи в Rails 4.

# lib/tasks/default.rake (name is not important) 
namespace :override do 
    task :default do 
    puts "This is now the default rake task executed via 'rake'" 
    end 
end 

# Remove default task and switch to above (still in same file) 
task(:default).clear.enhance ["override:default"] 

в терминале:

$ rake 
/lib/tasks/default.rake: this is now the default 'rake' task 

Если есть в «чистый» или более «обычный» Rails пути, ничей приветствовать кричать это. Это «самое чистое» решение, которое я мог найти.

0

Задайте задачу по умолчанию? IIRC, за пределами namespace блока:

task :default => "something_that_doesnt_destroy_the_world" 
+0

Итак, если у меня есть 'lib/tasks/default.rake':' task default: do puts "..." end', он будет запущен при выполнении 'rake'? –

+0

@DanL Я не знаю, я бы предположил, что для него потребовалось пространство namespace/task, но, возможно, оно также принимает блоки. –

+0

Это звучит «хорошо» для меня, но мне нужно будет протестировать в новой среде, чтобы убедиться, что она на самом деле превосходит команду 'rake' по умолчанию. Если так, я приму этот ответ! –

Смежные вопросы