【发布时间】:2011-09-06 13:14:05
【问题描述】:
我编写了一个自定义数据库适配器,它在 Rails 服务器运行时可以正常有效地工作。我现在想添加用于创建、删除和迁移数据库的常用 rake 任务定义。
我想实现:
db:[drop|create|migrate]
如何将这些定义与我的 gem 打包,以便它们覆盖任何使用 gem 的人的默认定义?
我查看了其他适配器的来源,但所有 rake 任务逻辑似乎都被烘焙到了 active_record 本身,每个任务只是打开适配器名称。
【问题讨论】:
-
您确定要覆盖它们吗?如果你的工作与标准的不完全一样,如果你的工作与标准的完全一样,那么 AR 版本应该没问题。
-
@mu 是的,我很确定。 /activerecord/railties/databases.rake 只是委托给它定义的方法(例如 drop_database、create_database),这些方法会打开已知的连接适配器(mysql、sqlite、postgressql 等)。如果自定义适配器未命名为提供的适配器之一,则您无法调用自己的 drop 和 create 实现。
-
哇,难以置信。我没想到 ActiveRecord 会如此愚蠢和设计糟糕,我原以为所有这些东西都会被推到数据库驱动程序中。我认为您正在尝试添加 Oracle 驱动程序或类似的东西?
标签: ruby-on-rails ruby-on-rails-3 activerecord rake rake-task