我有一个安装3个引擎的Rails应用程序。每个引擎都有自己的db迁移,其迁移命名的时间戳可以追溯到2010xxxxxx-migration-name.rb。运行bundle exec rake railties:install:migrations
后,所有迁移都会复制到我的应用程序db / migrate,但不会考虑迁移的时间戳,它们都会重新命名为2011xxxx-migration-name.rb。有什么想法吗?
答案 0 :(得分:1)
迁移会自动重命名,导致它们不与应用程序中的迁移冲突。它们将被整合在一个有凝聚力的一系列迁移中,而不是通过您的应用程序拆分。
答案 1 :(得分:1)
我们今天遇到了这个问题,同时升级了使用pre rails 3.1引擎的旧rails应用程序。该引擎使用了来自lazyatom的旧引擎插件。
此引擎插件带来了它自己的迁移器类,并没有将迁移文件复制到应用程序db/migrate
文件夹中。
如果现在使用rake任务将插件文件安装到应用程序中,时间戳会更新,rake db:migrate
会尝试再次运行所有旧迁移。
通过rsync
将所有旧迁移复制到db/migrate
文件夹,而不使用rake任务:
rsync -ruv FULL_ENGINE_PATH/db/migrate RAILS_APP_PATH/db
我们在our engine中添加了一个升级rake任务来处理这个问题。所以我们的用户可以轻松运行:
rake alchemy:upgrade