Tương tự như 'máy chủ đường ray' in mọi truy vấn sql được thực thi, tôi muốn thực hiện tương tự cho các tác vụ rake.Có thể đăng nhập truy vấn sql trên các tác vụ rake không?
Cách tốt nhất để đạt được điều đó là gì?
Tương tự như 'máy chủ đường ray' in mọi truy vấn sql được thực thi, tôi muốn thực hiện tương tự cho các tác vụ rake.Có thể đăng nhập truy vấn sql trên các tác vụ rake không?
Cách tốt nhất để đạt được điều đó là gì?
Tùy thuộc vào môi trường của bạn, Rake sẽ đăng nhập truy vấn sql giống như bất kỳ quá trình Rails sẽ & trong logfile cùng. Vì vậy, trên hộp dev của bạn, hãy kiểm tra tệp log/development.log của bạn - nó sẽ chứa các truy vấn của tác vụ Rake của bạn. Nếu bạn muốn truy vấn đăng nhập vào sản xuất, hãy đặt mức nhật ký trong tác vụ Rake của bạn thành DEBUG và đảm bảo tác vụ rake phụ thuộc vào: môi trường.
desc "Task with SQL logging"
task :test_log => :environment do
Rails.logger.level = Logger::DEBUG
Your code here...
end
echo '' > log/development.log
rake db:migrate:redo VERSION=20141017153933
cat log/development.log
tôi đã cố gắng nêu trên và không thể có được nó để làm việc. Cú pháp là tốt, không có lỗi, nhưng không có sql đến stdout (hoặc log). Tôi đang sử dụng đường ray 3.2. Tôi cũng đang chạy trong một môi trường sản xuất.
Để xem các truy vấn sql tạo ra bởi công việc cào của tôi, tôi đã sử dụng kỹ thuật tìm thấy tại http://eewang.github.io/blog/2013/07/29/how-to-use-rake-tasks-to-generate-migration-sql/
Đặc biệt, tôi chỉ chèn khối này trong nhiệm vụ của mình trước khi find() tuyên bố đã tạo ra các truy vấn SQL tôi intersted in:
ActiveRecord::Base.connection.class.class_eval do
# alias the adapter's execute for later use
alias :old_execute :execute
# define our own execute
def execute(sql, name = nil)
print "===== #{sql}\n"
old_execute sql, name
end
end
Sau đó, tôi có thể thấy SQL trên thiết bị xuất chuẩn. Đây không phải là mã của tôi - Eugene Wang đã đưa ra kỹ thuật này.
Có thể trùng lặp: is it possible to output the sql change scripts that rake db:migrate produces?
Có một số tùy chọn tốt ở đó. Yêu thích của tôi tất nhiên là câu trả lời của tôi.
ah, tôi thấy chúng ở trong development.log, cảm ơn – mbdev