TCo*_*ple 6 rake activerecord ruby-on-rails rake-task ruby-on-rails-3
我编写了一个自定义数据库适配器,可以在rails服务器运行时正常有效地工作.我现在想添加用于创建,删除和迁移数据库的常用rake任务定义.
我想实现:
db:[drop|create|migrate]
Run Code Online (Sandbox Code Playgroud)
如何使用我的gem打包这些定义,以便它们覆盖使用gem的任何人的默认定义?
我查看了其他适配器的源代码,但所有rake任务逻辑似乎都被烘焙到active_record本身,每个任务只是打开适配器名称.
cap*_*ete 12
这有可能:
# somewhere in your gem's tasks
Rake::Task['db:create'].clear
# then re-define
namespace 'db' do
task 'create' do
# ...
end
end
Run Code Online (Sandbox Code Playgroud)
当Take::Task#[]
无法解析任务它将fail
.如果您的任务有时存在,您可能希望:
task_exists = Rake.application.tasks.any? { |t| t.name == 'db:create' }
Rake::Task['db:create'].clear if task_exists
Run Code Online (Sandbox Code Playgroud)
如果要将任务添加到现有rake任务,请使用enhance
.
Rake::Task['db:create'].enhance do
Rake::Task['db:after_create'].invoke
end
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5239 次 |
最近记录: |