Если я не ошибаюсь, он более или менее похож на
В чем разница между интерфейсом и абстрактным классом?
extends устанавливает " Является отношением & amp; реализует Runnable :
Предпочитаете « extends Thread ":
Как правило, вам не нужно переопределять поведение Thread. Таким образом, внедрение Runnable является предпочтительным в большинстве случаев.
В другой заметке использование расширенного API ExecutorService
или ThreadPoolExecutorService
обеспечивает большую гибкость и контроль.
Взгляните на этот вопрос SE:
О зацепите:
Rake::Task['db:migrate'].enhance do
puts "AFTER"
end
http://ruby-doc.org/stdlib-2.0.0/libdoc/rake/rdoc/Rake/Task.html#method -i-enhance
Для переднего крючка (непроверенный):
task :before do
puts "BEFORE"
end
Rake::Task['db:migrate'].enhance(['before'])