2013-01-04 11 views
7

Tôi đang làm việc để tạo ra một nhiệm vụ cào để loại bỏ một vài bảng và trình kích hoạt.ActiveRecord :: ConnectionNotEstablished trong một nhiệm vụ rake

My cào nhiệm vụ:

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 

Tôi cố gắng chạy này như sau:

rake remove_rubyrep 
RAILS_ENV=development rake remove_rubyrep 

Vấn đề là các lỗi nhiệm vụ cào với:

rake aborted! 
ActiveRecord::ConnectionNotEstablished 

Bất kỳ đề xuất về cách cho phép công việc cào để kết nối với DB để thực thi sql thô? Cảm ơn

Trả lời

21

Bạn không tải ứng dụng đường ray trong tác vụ cào của bạn, do đó ActiveRecord không bao giờ tạo kết nối cơ sở dữ liệu.

Thay đổi nhiệm vụ cào của bạn để:

task :remove_rubyrep => :environment do 

Sau khi làm điều đó, bạn sẽ không còn cần "establish_connection" dòng

+0

tinh khiết thiên tài, cảm ơn bạn – AnApprentice