首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将其他gems中的rake任务分组

将其他gems中的rake任务分组
EN

Stack Overflow用户
提问于 2015-03-18 13:09:33
回答 1查看 54关注 0票数 1

为了避免在重新初始化项目时触发许多rake任务,我在lib/task/twiddle.rake中创建了以下任务

代码语言:javascript
复制
task :twiddle => %w(db:drop db:create railties:install:migrations db:migrate db:seed spree_sample:load)

从命令行触发这些命令中的每一个都是可行的。但是,当rake twiddle到达spree_sample:load时,运行它时会挂起以下错误:

代码语言:javascript
复制
NoMethodError: undefined method `slug' for #<Spree::Product:0x0000000ec9b9f0>

有人能解释为什么在CLI上运行一组特定的任务而不是通过rake任务运行吗?我需要一些图书馆吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-20 18:09:57

答案相对简单-- Rails只在启动时才从数据库加载模式信息。(您可以做一些类似reset_schema_information的操作来强制它重新加载)

通常您永远不会做db:migrate和db:seed后面的操作,因为Rails不会在迁移和种子之间重新加载应用程序。因此,当db:seed运行时,它将没有表信息。这就是为什么当您单独运行它们时会看到不同的结果--单独运行它们的行为会使Rails重新加载并修复捕获--22尝试使用仅由前面的命令可用的模式。

还有:安装:迁移在您的任务中没有意义--您只作为开发人员运行了1次,它创建了几个迁移文件(您签入到git),然后这些文件将永远驻留在您的应用程序中。因为您已经创建了那些迁移文件,所以您不需要定期重新运行railties:install:迁移。(升级狂潮时,您确实会重新运行它,但这是另一回事)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29122986

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档