EDIT:
--
Menggunakan ActiveRecord::Base.connections.exec_query()
sejauh yang saya tahu BANYAK pendekatan yang lebih baik hanya karena mengembalikan array hash seperti yang diharapkan, yang ActiveRecord::Base.connections.execute
tidak.
--
Harap baca hasil edit di atas, saya tinggalkan di bawah untuk referensi.
Meskipun saya menyadari pertanyaan ini cukup lama dan karena tautan yang diposting ohho memiliki 404, saya mengalami kesalahan yang sama baru-baru ini.
Saya dapat memperbaikinya dengan melakukan hal berikut:
result = ActiveRecord::Base.connection.execute("call example_proc()")
ActiveRecord::Base.clear_active_connections!
Setelah Anda menghapus koneksi, Anda dapat menjalankan kueri lain yang seperti sebelumnya akan gagal saat mencoba mengakses database melalui Rails atau proc tersimpan lainnya.
http://apidock.com/rails/v3.2.13 /ActiveRecord/Base/clear_active_connections%21/class
--EDIT:
Perlu juga disebutkan bahwa seseorang tidak boleh menyimpan koneksi ActiveRecord dalam variabel sesuai posting leente di tautan
"Jangan simpan di cache!
Jangan simpan koneksi dalam variabel, karena utas lain mungkin mencoba menggunakannya saat sudah diperiksa kembali ke kumpulan koneksi. Lihat:ConnectionPool "
connection = ActiveRecord::Base.connection #WRONG
threads = (1..100).map do
Thread.new do
begin
10.times do
connection.execute("SELECT SLEEP(1)") # WRONG
ActiveRecord::Base.connection.execute("SELECT SLEEP(1)") # CORRECT
end
puts "success"
rescue => e
puts e.message
end
end
end
threads.each(&:join)