我现在正在开发一个Rails应用程序,其中挂载了Engines。
我认为编写一个rake任务是个好主意,它会从Engine复制迁移并运行rake db:migrate。
然而,如果我只在engines-Arry中运行一个Engine的rake任务,rake任务将会从Engine复制迁移并迁移db。但如果我向数组中添加另一个Engine,rake任务将不再起作用。
如何改进上述脚本,以便能够迁移多个引擎? 是否有其他脚本可以解决此问题(复制引擎中的迁移并运行它们)? 非常感谢! Philipp
我认为编写一个rake任务是个好主意,它会从Engine复制迁移并运行rake db:migrate。
然而,如果我只在engines-Arry中运行一个Engine的rake任务,rake任务将会从Engine复制迁移并迁移db。但如果我向数组中添加另一个Engine,rake任务将不再起作用。
namespace :work_in_progress do
desc 'Migrate the engines db tables'
task migrate_migrations_from_engines: :environment do
# The array with the available engines (just add the new engine here)
engines = [
'engine_one',
'engine_two'
]
puts 'Migrating migrations from engines...'
engines.each do |engine|
puts 'Copying migrations from ' + engine
Rake::Task[engine + ':install:migrations'].invoke
end
puts 'Migrating the database...'
Rake::Task['db:migrate'].invoke
puts 'Done...'
end
end
如何改进上述脚本,以便能够迁移多个引擎? 是否有其他脚本可以解决此问题(复制引擎中的迁移并运行它们)? 非常感谢! Philipp
execute
代替invoke
。 - cortex