Rails 3.1引擎迁移安装不遵循迁移时间戳

时间:2011-11-09 11:52:59

标签: ruby-on-rails migration

我有一个安装3个引擎的Rails应用程序。每个引擎都有自己的db迁移,其迁移命名的时间戳可以追溯到2010xxxxxx-migration-name.rb。运行bundle exec rake railties:install:migrations后,所有迁移都会复制到我的应用程序db / migrate,但不会考虑迁移的时间戳,它们都会重新命名为2011xxxx-migration-name.rb。有什么想法吗?

2 个答案:

答案 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

对于所有来自前导轨3.1次的发动机开发人员:

我们在our engine中添加了一个升级rake任务来处理这个问题。所以我们的用户可以轻松运行:

rake alchemy:upgrade