這是我寫的一個類,用於跟蹤我的Rails應用程序中的後臺活動。Ruby on Rails爲什麼不保存我的數據?
我的問題是status
字段被正確更新,但logs
字段不是。任何想法爲什麼?
PS1:我可以在tmp_logs
包含我想要的數據的日誌中看到,即從根目錄中找到HTML文件)
PS2名單:這個代碼是通過rake
運行和delayed_job
寶石。
class MaintenanceOperation < ActiveRecord::Base
attr_accessible :logs, :status, :operation
def track_object_elements_in_html
status = "started"
tmp_logs = logs
self.save
begin
nb_files = 0
html_files = File.join(my_root, "**", "*.{html,htm,HTML,HTM}")
Dir.glob(html_files).each do |file|
nb_files += 1
tmp_logs << file << "\n"
logger.debug tmp_logs
end
tmp_logs << "Found #{nb_files} files." << "\n"
self.logs = tmp_logs
self.status = "done"
rescue Exception => e
logger.error "Finished performing maintenance operation with error"
logger.error e.message
e.backtrace.each { |line| logger.error line }
logger.error "Flagging as error"
self.status = "error"
end
self.save
end
end
編輯:
我可以看空的交易中我的日誌改變logs
後保存時。
2013-02-18 19:15:28.981 [meh] (0.1ms) begin transaction (pid:80725)
2013-02-18 19:15:28.982 [meh] (0.0ms) commit transaction (pid:80725)
嘗試'#save!',它會顯示錯誤。 (他們違背了Ruby慣例,這是一種不安全的方法,它在失敗時引發錯誤。) – Reactormonk 2013-02-18 18:11:17
我沒有收到錯誤,我可以在日誌中看到以下空事務:2013-02-18 19:15:28.981 [meh](0.1ms)開始交易(pid:80725) 2013-02-18 19:15:28.982 [meh](0.0ms)commit transaction(pid:80725) – 2013-02-18 18:16:16