gpt4 book ai didi

ruby-on-rails - 用于自动迁移引擎迁移的 Rake 任务

转载 作者:数据小太阳 更新时间:2023-10-29 08:38:42 25 4
gpt4 key购买 nike

我现在正在开发一个安装了引擎的 Rails 应用程序。

我认为编写一个 rake tast 是个好主意,它将从引擎复制迁移并运行 rake db:migrate。

但是,如果我只使用引擎 Arry 中的一个引擎运行 rake 任务(见下文),rake tast 将从引擎复制迁移并迁移数据库。但是,如果我将另一个引擎添加到阵列中,rake-Task 将不再起作用。

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

如何改进上面的脚本,以便可以迁移多个引擎?是否有其他脚本可以解决此问题(从引擎复制迁移并运行它们?)?

非常感谢!

菲利普

最佳答案

您将必须运行 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
`bundle exec rake #{engine}:install:migrations`
end
puts 'Migrating the database...'
`bundle exec rake db:migrate`
puts 'Done...'
end

end

关于ruby-on-rails - 用于自动迁移引擎迁移的 Rake 任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18381816/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com