如何以编程方式调用Rails迁移生成器?

6
仅仅从命令行运行rails g会导致长时间预加载。我想要快速从正在运行的rails c中生成多个迁移,所以我尝试了以下方法:
require 'rails/generators'
Rails::Generators.invoke('migration',['user_book_list_followings'],{:behavior=>:invoke, :destination_root=>Rails.root})

你问我从哪里得到那些 :behavior 和 :destination_root 参数的?我在运行命令生成器时进行了 pry 到 Rails::Generators#invoke 执行点,并记录下了精确的参数。

然而,有趣的事情是,我遇到了一个错误:

没有为必需选项“--orm”提供值

我有什么遗漏吗?(我使用的是 Rails 3.2.3 版本)

2个回答

2
require 'rails/generators'
Rails::Generators.invoke("active_record:migration", ["create_something", "list_order:string", "name:string"], {migration: true, timestamps: true})

0

加速调用rails g的一个解决方案是使用spring

Spring是Rails应用程序预加载器。它通过在后台运行您的应用程序来加快开发速度,这样每次运行测试、rake任务或迁移时都不需要启动它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接