gpt4 book ai didi

ruby-on-rails - 如何覆盖自定义数据库适配器的 rake 任务?

转载 作者:行者123 更新时间:2023-12-04 07:37:47 27 4
gpt4 key购买 nike

我编写了一个自定义数据库适配器,它在 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 fail .
如果您的任务有时存在,您可能希望:
task_exists = Rake.application.tasks.any? { |t| t.name == 'db:create' }
Rake::Task['db:create'].clear if task_exists

如果要将任务添加到现有的 rake 任务,请使用 enhance .
Rake::Task['db:create'].enhance do
Rake::Task['db:after_create'].invoke
end

关于ruby-on-rails - 如何覆盖自定义数据库适配器的 rake 任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6205968/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com