如何覆盖自定义数据库适配器的 rake 任务?
我编写了一个自定义数据库适配器,它在 Rails 服务器运行时可以正确有效地工作。我现在想添加用于创建、删除和迁移数据库的常用 rake 任务定义。
我想实现:
db:[drop|create|migrate]
如何将这些定义与我的 gem 打包在一起,以便它们覆盖任何使用 gem 的人的默认定义?
我查看了其他适配器的源代码,但所有 rake 任务逻辑似乎都融入了 active_record 本身,每个任务只是切换适配器名称。
I've written a custom database adapter that works correctly and effectively when a rails server is running. I would now like to add the usual rake task definitions for creating, dropping and migrating the database.
I would like to implement:
db:[drop|create|migrate]
How do I package these definitions with my gem so that they override the default ones for anyone who uses the gem?
I looked through the source of other adapters but all the rake task logic appears to be baked into active_record itself, each task just switches on the adapter name.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这是可能的:
当
Take::Task#[]
无法解决任务时 它将失败
。如果您的任务有时存在,您可能需要:
如果您想将任务添加到现有的 rake 任务中,请使用enhance。
This is possible with:
When
Take::Task#[]
can't resolve a task it willfail
.If your tasks sometimes exists, you might want to:
If you want to add tasks to an existing rake task, use
enhance
.您可以
在重新定义之前写入删除原始任务。
另请查看覆盖rails的默认rake任务
You can write
to delete the original task before redefining it.
Also check out Overriding rails' default rake tasks