ruby-on-rails - ActiveRecord::ConnectionNotEstablished 在 rake 任务中

标签 ruby-on-rails ruby-on-rails-3 postgresql postgresql-9.1

我正在努力创建一个 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 的任何建议?谢谢

最佳答案

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

将您的抽佣任务更改为:

task :remove_rubyrep => :environment do

这样做之后,您将不再需要“establish_connection”行

关于ruby-on-rails - ActiveRecord::ConnectionNotEstablished 在 rake 任务中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14163938/

相关文章:

mysql - 在现有表sql上创建主键

postgresql - 根据 PostgreSQL 中的条件创建新列

sql - 为什么这个查询不使用我创建的索引?

ruby-on-rails - Rails 复选框和参数

javascript - 使用 will_paginate 更新 ajax 内容

ruby-on-rails - 使用 Dragonfly 从 URL 分配图像

ruby-on-rails - 如何在Ruby on Rails 3中控制选择框的大小?

ruby - Rails 应用程序中复杂数据结构的遍历

ruby-on-rails - rails : Getting rid of generic "X is invalid" validation errors

ruby-on-rails - 用户的未定义方法 'suspend_paypal'