从引擎安装迁移不起作用

时间:2012-01-05 15:35:32

标签: ruby-on-rails ruby-on-rails-3.1 rake rails-migrations rails-engines

我在Rails 3.1.3中创建了一个新引擎,显然有一个rake任务可以复制所有迁移。我试着跟随rake abc:install:migrations投掷:

rake aborted!
Don't know how to build task 'abc:install:migrations'

(See full trace by running task with --trace)

我也尝试rake abc_engine:install:migrations同样的结果。

然后我读bundle exec rake railties:install:migrationsbundle exec rake railties:install:migrations FROM=abc_engine也应该这样做,但没有成功。即使没有抛出任何错误,也没有复制任何内容。

我的迁移位于引擎文件夹中的db / migrate /中,我从spec / dummy /

运行了上面的所有命令

有没有人知道如何使用这个新的rake任务来从引擎复制迁移?

3 个答案:

答案 0 :(得分:10)

我跑了这个:

rake railties:install:migrations

我的迁移是从引擎中复制的。 希望这会有所帮助。

答案 1 :(得分:2)

我终于找到/幸运得到了我的(类似)问题。对于第一个错误,它只是消失了,不知道为什么。然后我发现我没有使用通常的文件名格式创建迁移,因此ActiveRecord::Migrator.migrations方法忽略了它们。

答案 2 :(得分:1)

如果您安装引擎的应用程序尚未安装ActiveRecord(即您首次通过安装引擎将ActiveRecord引入主机应用程序),您也可能会收到此错误。具体而言,如果您的require "active_record/railtie"中没有application.rb,或者已将其注释掉,则会收到此错误。该行启用了rake railties:install:migrations任务,该任务定义为here。反过来,rake railties:install:migrations任务here会调用rake abc_engine:install:migrations

Tl; dr:尝试将require "active_record/railtie"添加到application.rb,如果它尚未存在的话。