ruby-on-rails – 如何覆盖自定义数据库适配器的rake任务?
发布时间:2020-12-16 20:52:08 所属栏目:百科 来源:网络整理
导读:我编写了一个自定义数据库适配器,可以在rails服务器运行时正常有效地工作.我现在想添加用于创建,删除和迁移数据库的常用rake任务定义. 我想实现: db:[drop|create|migrate] 如何使用我的gem打包这些定义,以便它们覆盖使用gem的任何人的默认定义? 我查看了
我编写了一个自定义数据库适配器,可以在rails服务器运行时正常有效地工作.我现在想添加用于创建,删除和迁移数据库的常用rake任务定义.
我想实现: db:[drop|create|migrate] 如何使用我的gem打包这些定义,以便它们覆盖使用gem的任何人的默认定义? 我查看了其他适配器的来源,但所有rake任务逻辑似乎都被烘焙到active_record本身,每个任务只是打开适配器名称. 解决方法
这有可能:
# somewhere in your gem's tasks Rake::Task['db:create'].clear # then re-define namespace 'db' do task 'create' do # ... end end 当Take :: Task#[]无法解析任务it will task_exists = Rake.application.tasks.any? { |t| t.name == 'db:create' } Rake::Task['db:create'].clear if task_exists 如果要将任务添加到现有rake任务,请使用增强功能. Rake::Task['db:create'].enhance do Rake::Task['db:after_create'].invoke end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |