Попробуйте этот код:
require 'rake'
require 'rake/testtask'
require 'rake/rdoctask'
require 'tasks/rails'
Rake::Task["db:version"].invoke
Я только что попробовал это в ./script/console
, и это сработало. Это не будет работать без require
строк.
Я использую его для вызова других рейк-задач из рейк-задачи (когда это не предварительное требование, а что-то, что должно произойти в середине).
Обратите внимание, что вы не получите никакого вывода от команды. Если вы хотите, чтобы вы могли просто пойти с хорошими старыми галочками и запустить команду следующим образом:
output = `rake db:version`
Это запустит другой процесс, но я не думаю, что есть проблема с этим.