これは、Railsアプリケーションのバックグラウンドアクティビティをトレースするために作成したクラスです。
私の問題は、status
フィールドが正しく更新されているのに、logs
フィールドが更新されていないことです。なぜですか?
ps1:tmp_logs
必要なデータ、つまりルートディレクトリから見つかったhtmlファイルのリストを含むログを確認できます)
ps2:このコードはrake
とdelayed_job
gemを介して実行されます。
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)