Commit b8bacbc64b00ca7c1670fc112409ba7920fb426c

Authored by Stephen Crosby
1 parent b31b460f
Exists in master and in 1 other branch production

Refs #785 add md and txt issue tracker templates

app/controllers/problems_controller.rb
... ... @@ -61,7 +61,7 @@ class ProblemsController < ApplicationController
61 61 end
62 62  
63 63 def create_issue
64   - body = render_to_string "issue_trackers/issue", layout: false, formats: [:txt]
  64 + body = render_to_string "issue_trackers/issue", layout: false, formats: [:md]
65 65 title = "[#{ problem.environment }][#{ problem.where }] #{problem.message.to_s.truncate(100)}"
66 66  
67 67 issue = Issue.new(problem: problem, user: current_user, title: title, body: body)
... ...
app/helpers/hash_helper.rb
1 1 module HashHelper
2 2  
3 3 def pretty_hash(hash, nesting = 0)
  4 + return '{}' if hash.empty?
  5 +
4 6 tab_size = 2
5 7 nesting += 1
6 8  
... ...
app/views/issue_trackers/issue.md.erb 0 → 100644
... ... @@ -0,0 +1,41 @@
  1 +[See this exception on Errbit](<%= app_problem_url problem.app, problem %>)
  2 +<% if notice = problem.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.where %>
  11 +
  12 +### Occured ###
  13 +<%= notice.created_at.to_s(:micro) %>
  14 +
  15 +### Similar ###
  16 +<%= (notice.problem.notices_count - 1).to_s %>
  17 +
  18 +## Params ##
  19 +~~~
  20 +<%= pretty_hash(notice.params) %>
  21 +~~~
  22 +
  23 +## Session ##
  24 +~~~
  25 +<%= pretty_hash(notice.session) %>
  26 +~~~
  27 +
  28 +## Backtrace ##
  29 +~~~
  30 +<% notice.backtrace_lines.each do |line| %><%= line.number %>: <%= line.file_relative %> -> **<%= line.method %>**
  31 +<% end %>
  32 +~~~
  33 +
  34 +<% if notice.env_vars.present? %>
  35 +## Environment ##
  36 +| Key | Value |
  37 +|------------|------------|
  38 +<% notice.env_vars.each do |key, val| %>| <%= key %> | <%= val %> |
  39 +<% end %>
  40 +<% end %>
  41 +<% end %>
... ...
app/views/issue_trackers/issue.txt.erb
1   -[See this exception on Errbit](<%= app_problem_url problem.app, problem %> "See this exception on Errbit")
  1 +Errbit link: <%= app_problem_url problem.app, problem %>
2 2 <% if notice = problem.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.where %>
11   -
12   -### Occured ###
13   -<%= notice.created_at.to_s(:micro) %>
14   -
15   -### Similar ###
16   -<%= (notice.problem.notices_count - 1).to_s %>
17   -
18   -## Params ##
19   -```
20   -<%= pretty_hash(notice.params) %>
21   -```
  3 +<% notice.message %>
22 4  
23   -## Session ##
24   -```
25   -<%= pretty_hash(notice.session) %>
26   -```
27   -
28   -## Backtrace ##
29   -```
30   -<% notice.backtrace_lines.each do |line| %><%= line.number %>: <%= line.file_relative %> -> **<%= line.method %>**
  5 +Summary
  6 +-------
  7 +<% if notice.request['url'].present? %>
  8 +URL: <%= notice.request['url'] %>
31 9 <% end %>
32   -```
33   -
34   -## Environment ##
35   -
36   -<table>
37   -<% for key, val in notice.env_vars %>
38   - <tr>
39   - <td><%= key %>:</td>
40   - <td><%= val %></td>
41   - </tr>
  10 +Where: <%= notice.where %>
  11 +Occured: <%= notice.created_at.to_s(:micro) %>
  12 +Similar: <%= (notice.problem.notices_count - 1).to_s %>
  13 +Params: <%= pretty_hash notice.params %>
  14 +Session: <%= pretty_hash notice.session %>
  15 +Env: <%= pretty_hash notice.env_vars %>
  16 +
  17 +Backtrace
  18 +---------
  19 +<% notice.backtrace_lines.each do |line| %><%= sprintf('%5d: %s **%s', line.number, line.file_relative, line.method) %>
42 20 <% end %>
43   -</table>
44 21 <% end %>
45   -
... ...
spec/views/issue_trackers/issue.md.erb_spec.rb 0 → 100644
... ... @@ -0,0 +1,16 @@
  1 +describe "issue_trackers/issue.md.erb", type: 'view' do
  2 + let(:problem) {
  3 + problem = Fabricate(:problem)
  4 + Fabricate(:notice, :err => Fabricate(:err, :problem => problem))
  5 + problem
  6 + }
  7 +
  8 + before do
  9 + allow(view).to receive(:problem).and_return(problem)
  10 + end
  11 +
  12 + it "has the problem url" do
  13 + render
  14 + expect(rendered).to match(app_problem_url problem.app, problem)
  15 + end
  16 +end
... ...
spec/views/issue_trackers/issue.txt.erb_spec.rb 0 → 100644
... ... @@ -0,0 +1,16 @@
  1 +describe "issue_trackers/issue.txt.erb", type: 'view' do
  2 + let(:problem) {
  3 + problem = Fabricate(:problem)
  4 + Fabricate(:notice, :err => Fabricate(:err, :problem => problem))
  5 + problem
  6 + }
  7 +
  8 + before do
  9 + allow(view).to receive(:problem).and_return(problem)
  10 + end
  11 +
  12 + it "has the problem url" do
  13 + render
  14 + expect(rendered).to match(app_problem_url problem.app, problem)
  15 + end
  16 +end
... ...