Commit 5b0a2d55ca4a19cc64dc053cce02bc24e63d8514

Authored by Nick Recobra
1 parent cda23ec8
Exists in master and in 1 other branch production

Using ERB to render lighthouseapp body.

app/models/issue_tracker.rb
... ... @@ -15,6 +15,16 @@ class IssueTracker
15 15 field :issue_tracker_type, :type => String, :default => 'lighthouseapp'
16 16  
17 17 def create_issue err
  18 + return create_lighthouseapp_issue err if issue_tracker_type == 'lighthouseapp'
  19 + create_redmine_issue err if issue_tracker_type == 'redmine'
  20 + end
  21 +
  22 + protected
  23 + def create_redmine_issue err
  24 +
  25 + end
  26 +
  27 + def create_lighthouseapp_issue err
18 28 Lighthouse.account = account
19 29 Lighthouse.token = api_token
20 30  
... ... @@ -24,69 +34,13 @@ class IssueTracker
24 34 ticket = Lighthouse::Ticket.new(:project_id => project_id)
25 35 ticket.title = "[#{ err.environment }][#{ err.where }] #{err.message.to_s.truncate(100)}"
26 36  
27   - ticket.body = ""
28   - ticket.body += "[See this exception on Errbit](#{ app_err_url err.app, err } \"See this exception on Errbit\")"
29   - ticket.body += "\n"
30   - if notice = err.notices.first
31   - ticket.body += "# #{notice.message} #"
32   - ticket.body += "\n"
33   - ticket.body += "## Summary ##"
34   - ticket.body += "\n"
35   - if notice.request['url'].present?
36   - ticket.body += "### URL ###"
37   - ticket.body += "\n"
38   - ticket.body += "[#{notice.request['url']}](#{notice.request['url']})"
39   - ticket.body += "\n"
40   - end
41   - ticket.body += "### Where ###"
42   - ticket.body += "\n"
43   - ticket.body += notice.err.where
44   - ticket.body += "\n"
45   -
46   - ticket.body += "### Occured ###"
47   - ticket.body += "\n"
48   - ticket.body += notice.created_at.to_s(:micro)
49   - ticket.body += "\n"
50   -
51   - ticket.body += "### Similar ###"
52   - ticket.body += "\n"
53   - ticket.body += (notice.err.notices.count - 1).to_s
54   - ticket.body += "\n"
55   -
56   - ticket.body += "## Params ##"
57   - ticket.body += "\n"
58   - ticket.body += "<code>#{pretty_hash(notice.params)}</code>"
59   - ticket.body += "\n"
60   -
61   - ticket.body += "## Session ##"
62   - ticket.body += "\n"
63   - ticket.body += "<code>#{pretty_hash(notice.session)}</code>"
64   - ticket.body += "\n"
65   -
66   - ticket.body += "## Backtrace ##"
67   - ticket.body += "\n"
68   - ticket.body += "<code>"
69   - for line in notice.backtrace
70   - ticket.body += "#{line['number']}: #{line['file'].sub(/^\[PROJECT_ROOT\]/, '')} -> **#{line['method']}**"
71   - ticket.body += "\n"
72   - end
73   - ticket.body += "</code>"
74   - ticket.body += "\n"
75   -
76   - ticket.body += "## Environment ##"
77   - ticket.body += "\n"
78   - for key, val in notice.env_vars
79   - ticket.body += "#{key}: #{val}"
80   - end
81   - ticket.body += "\n"
82   - end
  37 + ticket.body = ERB.new(File.read(Rails.root + "app/views/errs/lighthouseapp_body.txt.erb").gsub(/^\s*/, '')).result(binding)
83 38  
84 39 ticket.tags << "errbit"
85 40 ticket.save!
86 41 err.update_attribute :issue_link, "#{Lighthouse::Ticket.site.to_s.sub(/#{Lighthouse::Ticket.site.path}$/, '')}#{Lighthouse::Ticket.element_path(ticket.id, :project_id => project_id)}".sub(/\.xml$/, '')
87 42 end
88 43  
89   - protected
90 44 def check_params
91 45 blank_flags = %w( api_token project_id account ).map {|m| self[m].blank? }
92 46 if blank_flags.any? && !blank_flags.all?
... ...
app/views/errs/lighthouseapp_body.txt.erb 0 → 100644
... ... @@ -0,0 +1,34 @@
  1 +[See this exception on Errbit](<%= app_err_url err.app, err %> "See this exception on Errbit")
  2 +<% if notice = err.notices.first %>
  3 + # <%= notice.message %> #
  4 + ## Summary ##
  5 + <% if notice.request['url'].present? %>
  6 + ### URL ###
  7 + [<%= notice.request['url'] %>](<%= notice.request['url'] %>)"
  8 + <% end %>
  9 + ### Where ###
  10 + <%= notice.err.where %>
  11 +
  12 + ### Occured ###
  13 + <%= notice.created_at.to_s(:micro) %>
  14 +
  15 + ### Similar ###
  16 + <%= (notice.err.notices.count - 1).to_s %>
  17 +
  18 + ## Params ##
  19 + <code><%= pretty_hash(notice.params) %></code>
  20 +
  21 + ## Session ##
  22 + <code><%= pretty_hash(notice.session) %></code>
  23 +
  24 + ## Backtrace ##
  25 + <code>
  26 + <% for line in notice.backtrace %><%= line['number'] %>: <%= line['file'].sub(/^\[PROJECT_ROOT\]/, '') %> -> **<%= line['method'] %>**
  27 + <% end %>
  28 + </code>
  29 +
  30 + ## Environment ##
  31 + <% for key, val in notice.env_vars %>
  32 + <%= key %>: <%= val %>
  33 + <% end %>
  34 +<% end %>
... ...