Merge pull request #306 from cantino/truncate_agent_log_messages

truncate log messages to 2048 characters

Andrew Cantino %!s(int64=10) %!d(string=hace) años
padre
commit
5db30d2cb7
Se han modificado 2 ficheros con 15 adiciones y 0 borrados
  1. 8 0
      app/models/agent_log.rb
  2. 7 0
      spec/models/agent_log_spec.rb

+ 8 - 0
app/models/agent_log.rb

@@ -11,6 +11,8 @@ class AgentLog < ActiveRecord::Base
11 11
   validates_presence_of :agent, :message
12 12
   validates_numericality_of :level, :only_integer => true, :greater_than_or_equal_to => 0, :less_than => 5
13 13
 
14
+  before_save :truncate_message
15
+
14 16
   def self.log_for_agent(agent, message, options = {})
15 17
     log = agent.logs.create! options.merge(:message => message)
16 18
     if agent.logs.count > log_length
@@ -26,4 +28,10 @@ class AgentLog < ActiveRecord::Base
26 28
   def self.log_length
27 29
     ENV['AGENT_LOG_LENGTH'].present? ? ENV['AGENT_LOG_LENGTH'].to_i : 200
28 30
   end
31
+
32
+  protected
33
+
34
+  def truncate_message
35
+    self.message = message[0...2048] if message.present?
36
+  end
29 37
 end

+ 7 - 0
spec/models/agent_log_spec.rb

@@ -42,6 +42,13 @@ describe AgentLog do
42 42
     end
43 43
   end
44 44
 
45
+  it "truncates message to a reasonable length" do
46
+    log = AgentLog.new(:agent => agents(:jane_website_agent), :level => 3)
47
+    log.message = "a" * 3000
48
+    log.save!
49
+    log.message.length.should == 2048
50
+  end
51
+
45 52
   describe "#log_for_agent" do
46 53
     it "creates AgentLogs" do
47 54
       log = AgentLog.log_for_agent(agents(:jane_website_agent), "some message", :level => 4, :outbound_event => events(:jane_website_agent_event))