7

我正在创建一个 rake 任务来删除一些表和触发器。

我的耙子任务:

task :remove_rubyrep do
  sql = <<-SQL
    DROP TABLE rr_logged_events, rr_running_flags, rr_pending_changes;
  SQL
  ActiveRecord::Base.establish_connection
  ActiveRecord::Base.connection.execute(sql)
end

我试着这样运行:

rake remove_rubyrep
RAILS_ENV=development rake remove_rubyrep

问题是 rake 任务错误:

rake aborted!
ActiveRecord::ConnectionNotEstablished

关于如何允许 rake 任务连接到数据库以执行原始 sql 的任何建议?谢谢

4

1 回答 1

23

您没有在 rake 任务中加载 rails 应用程序,因此 ActiveRecord 永远不会创建数据库连接。

将您的 rake 任务更改为:

task :remove_rubyrep => :environment do

之后,您将不再需要“建立连接”行

于 2013-01-04T19:55:42.560 回答