airbrake_tools 0.0.10 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
- source :rubygems
1
+ source 'https://rubygems.org'
2
2
  gemspec
3
3
 
4
4
  gem "bump", "0.3.8"
data/Gemfile.lock CHANGED
@@ -1,11 +1,11 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- airbrake_tools (0.0.10)
4
+ airbrake_tools (1.0.0)
5
5
  airbrake-api (>= 4.2.2)
6
6
 
7
7
  GEM
8
- remote: http://rubygems.org/
8
+ remote: https://rubygems.org/
9
9
  specs:
10
10
  airbrake-api (4.2.2)
11
11
  faraday_middleware (~> 0.8)
data/Readme.md CHANGED
@@ -80,6 +80,7 @@ Mysql2::Error: Lost connection to MySQL server during reconnect
80
80
  -p, --pages NUM How maybe pages to iterate over (default: hot:1 summary:5)
81
81
  -c, --compare-depth NUM At what level to compare backtraces (default: 7)
82
82
  -e, --environment ENV Only show errors from this environment (default: production)
83
+ --project NAME Name of project to fetch errors for
83
84
  -h, --help Show this.
84
85
  -v, --version Show Version
85
86
  ```
@@ -1,3 +1,3 @@
1
1
  module AirbrakeTools
2
- VERSION = "0.0.10"
2
+ VERSION = "1.0.0"
3
3
  end
@@ -21,6 +21,8 @@ module AirbrakeTools
21
21
  AirbrakeAPI.auth_token = ARGV[1]
22
22
  AirbrakeAPI.secure = true
23
23
 
24
+ options[:project_id] = project_id(options.delete(:project_name)) if options[:project_name]
25
+
24
26
  if AirbrakeAPI.account.to_s.empty? || AirbrakeAPI.auth_token.to_s.empty?
25
27
  puts "Usage instructions: airbrake-tools --help"
26
28
  return 1
@@ -124,7 +126,7 @@ module AirbrakeTools
124
126
 
125
127
  def backtrace(notice)
126
128
  return if notice.backtrace.is_a?(String)
127
- notice.backtrace.first[1]
129
+ [*notice.backtrace.first[1]] # can be string or array
128
130
  end
129
131
 
130
132
  def average_first_project_line(backtraces)
@@ -155,7 +157,7 @@ module AirbrakeTools
155
157
  def errors_from_pages(options)
156
158
  errors = []
157
159
  options[:pages].times do |i|
158
- errors.concat(AirbrakeAPI.errors(:page => i+1) || [])
160
+ errors.concat(AirbrakeAPI.errors(:page => i+1, :project_id => options[:project_id]) || [])
159
161
  end
160
162
  select_env(errors, options)
161
163
  end
@@ -205,6 +207,7 @@ module AirbrakeTools
205
207
  opts.on("-c NUM", "--compare-depth NUM", Integer, "How deep to compare backtraces in summary (default: first line in project + #{DEFAULT_COMPARE_DEPTH_ADDITION})") {|s| options[:compare_depth] = s }
206
208
  opts.on("-p NUM", "--pages NUM", Integer, "How maybe pages to iterate over (default: hot:#{DEFAULT_HOT_PAGES} new:#{DEFAULT_NEW_PAGES} summary:#{DEFAULT_SUMMARY_PAGES})") {|s| options[:pages] = s }
207
209
  opts.on("-e ENV", "--environment ENV", String, "Only show errors from this environment (default: #{DEFAULT_ENVIRONMENT})") {|s| options[:env] = s }
210
+ opts.on("--project NAME", String, "Name of project to fetch errors for") {|p| options[:project_name] = p }
208
211
  opts.on("-h", "--help", "Show this.") { puts opts; exit }
209
212
  opts.on("-v", "--version", "Show Version"){ puts "airbrake-tools #{VERSION}"; exit }
210
213
  end.parse!(argv)
@@ -225,5 +228,12 @@ module AirbrakeTools
225
228
  def sparkline(notices, options)
226
229
  `#{File.expand_path('../../spark.sh',__FILE__)} #{sparkline_data(notices, options).join(" ")}`.strip
227
230
  end
231
+
232
+ def project_id(project_name)
233
+ @projects ||= AirbrakeAPI.projects
234
+ project = @projects.detect { |p| p.name == project_name }
235
+ raise "project with name #{name} not found try #{@projects.map(&:name).join(", ")}" unless project
236
+ project.id
237
+ end
228
238
  end
229
239
  end
@@ -133,8 +133,8 @@ describe "airbrake-tools" do
133
133
  end
134
134
 
135
135
  it "adds blame if file exists" do
136
- AirbrakeTools.send(:present_line, "[PROJECT_ROOT]/Gemfile:1 adasdsad").should ==
137
- "Gemfile:1 adasdsad -- ^acc8204 (<jcheatham@zendesk.com> 2012-11-06 18:45:10 -0800 )"
136
+ AirbrakeTools.send(:present_line, "[PROJECT_ROOT]/Gemfile:2 adasdsad").should ==
137
+ "Gemfile:2 adasdsad -- ^acc8204 (<jcheatham@zendesk.com> 2012-11-06 18:45:10 -0800 )"
138
138
  end
139
139
 
140
140
  it "does not add blame to system files" do
@@ -193,4 +193,24 @@ describe "airbrake-tools" do
193
193
  AirbrakeTools.send(:select_env, [stub(:rails_env => "production")], {}).size.should == 1
194
194
  end
195
195
  end
196
+
197
+ describe ".project_id" do
198
+ before do
199
+ AirbrakeAPI.should_receive(:projects).and_return([stub(:name => "a", :id => 123), stub(:name => "b", :id => 234)])
200
+ end
201
+
202
+ after do
203
+ AirbrakeTools.instance_variable_set(:@projects, nil) # unset stubs
204
+ end
205
+
206
+ it "returns id for a name" do
207
+ AirbrakeTools.send(:project_id, "a").should == 123
208
+ end
209
+
210
+ it "raises a nice error when project was not found" do
211
+ expect{
212
+ AirbrakeTools.send(:project_id, "c")
213
+ }.to raise_error(/not found/)
214
+ end
215
+ end
196
216
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: airbrake_tools
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.10
4
+ version: 1.0.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-02-28 00:00:00.000000000 Z
12
+ date: 2013-06-04 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: airbrake-api
@@ -62,7 +62,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
62
62
  version: '0'
63
63
  segments:
64
64
  - 0
65
- hash: -3539053511181789551
65
+ hash: 873247243575833967
66
66
  required_rubygems_version: !ruby/object:Gem::Requirement
67
67
  none: false
68
68
  requirements:
@@ -71,7 +71,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
71
71
  version: '0'
72
72
  segments:
73
73
  - 0
74
- hash: -3539053511181789551
74
+ hash: 873247243575833967
75
75
  requirements: []
76
76
  rubyforge_project:
77
77
  rubygems_version: 1.8.23