toadhopper 0.9.4 → 0.9.5

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,15 +1,18 @@
1
- only :release do
2
- gem 'haml', '~> 2.0'
1
+ source :gemcutter
2
+
3
+ group :runtime do
4
+ gem 'haml', '~> 2.2.0'
3
5
  gem 'nokogiri'
4
6
  end
5
7
 
6
- only :development do
8
+ group :development do
7
9
  gem 'yard'
8
10
  gem 'jeweler'
9
11
  end
10
12
 
11
- only :test do
13
+ group :test do
12
14
  gem 'rake'
13
15
  gem 'nokogiri'
14
- gem 'test-unit', :require_as => 'test/unit'
16
+ gem 'test-unit', :require => 'test/unit'
17
+ gem 'ruby-debug'
15
18
  end
data/README.md CHANGED
@@ -15,23 +15,24 @@ You can install it via rubygems:
15
15
 
16
16
  ## Development
17
17
 
18
- Firstly, `gem install bundler`, then:
18
+ Install Bundler 0.9.x, then:
19
19
 
20
20
  % git clone git://github.com/toolmantim/toadhopper.git
21
21
  % cd toadhopper
22
- % gem bundle
23
- % bin/rake test
22
+ % bundle install
23
+ % bundle exec rake test
24
24
 
25
25
  If you set a `HOPTOAD_API_KEY` environment variable it'll test actually posting to the Hoptoad API. For example:
26
26
 
27
- % bin/rake test HOPTOAD_API_KEY=abc123
27
+ % bundle exec rake test HOPTOAD_API_KEY=abc123
28
28
 
29
29
  To generate the docs:
30
30
 
31
- % bin/yardoc
31
+ % bundle exec yardoc
32
32
 
33
33
  ## Contributors
34
34
 
35
35
  * [Tim Lucas](http://github.com/toolmantim)
36
36
  * [Samuel Tesla](http://github.com/stesla)
37
37
  * [atmos](http://github.com/atmos)
38
+ * [indirect](http://github.com/indirect)
data/Rakefile CHANGED
@@ -1,4 +1,5 @@
1
- Bundler.require_env(:development)
1
+ Bundler.setup(:runtime, :development, :test)
2
+ Bundler.require(:runtime, :development, :test)
2
3
 
3
4
  require 'rake/testtask'
4
5
 
@@ -13,16 +14,16 @@ Jeweler::Tasks.new do |s|
13
14
  s.summary = "Post error notifications to Hoptoad"
14
15
  s.email = "t.lucas@toolmantim.com"
15
16
  s.homepage = "http://github.com/toolmantim/toadhopper"
16
- s.authors = ["Tim Lucas", "Samuel Tesla", "Corey Donohoe"]
17
+ s.authors = ["Tim Lucas", "Samuel Tesla", "Corey Donohoe", "Andre Arko"]
17
18
  s.extra_rdoc_files = ["README.md", "LICENSE"]
18
19
  s.executables = nil # stops jeweler automatically adding bin/*
19
-
20
+
20
21
  require File.join(File.dirname(__FILE__), 'lib', 'toadhopper')
21
22
  s.version = ToadHopper::VERSION
22
23
 
23
24
  require 'bundler'
24
- bundler_env = Bundler::Environment.load(File.dirname(__FILE__) + '/Gemfile')
25
- bundler_env.dependencies.each do |d|
26
- s.add_dependency(d.name, d.version) if d.in?(:release)
27
- end
25
+ bundle = Bundler::Definition.from_gemfile("Gemfile")
26
+ bundle.dependencies.
27
+ select { |d| d.groups.include?(:runtime) }.
28
+ each { |d| s.add_dependency(d.name, d.version_requirements.to_s) }
28
29
  end
data/lib/notice.haml CHANGED
@@ -1,5 +1,5 @@
1
1
  !!!XML
2
- %notice{:version => '2.0.0'}
2
+ %notice{:version => '2.0.18'}
3
3
  %api-key= api_key
4
4
  %notifier
5
5
  %name= notifier_name
data/lib/toadhopper.rb CHANGED
@@ -5,7 +5,7 @@ require 'nokogiri'
5
5
 
6
6
  # Posts errors to the Hoptoad API
7
7
  class ToadHopper
8
- VERSION = "0.9.4"
8
+ VERSION = "0.9.5"
9
9
 
10
10
  # Hoptoad API response
11
11
  class Response < Struct.new(:status, :body, :errors); end
@@ -78,10 +78,14 @@ class ToadHopper
78
78
 
79
79
  # @private
80
80
  def document_for(exception, options={})
81
+ Haml::Engine.new(notice_template, :escape_html => true).render(Object.new, filtered_data(exception, options))
82
+ end
83
+
84
+ def filtered_data(exception, options)
81
85
  defaults = {
82
86
  :error => exception,
83
87
  :api_key => api_key,
84
- :environment => clean(ENV.to_hash),
88
+ :environment => ENV.to_hash,
85
89
  :backtrace => exception.backtrace.map {|l| backtrace_line(l)},
86
90
  :url => 'http://localhost/',
87
91
  :component => 'http://localhost/',
@@ -94,7 +98,13 @@ class ToadHopper
94
98
  :project_root => Dir.pwd
95
99
  }.merge(options)
96
100
 
97
- Haml::Engine.new(notice_template, :escape_html => true).render(Object.new, defaults)
101
+ # Filter session and environment
102
+ [:session, :environment].each{|n| defaults[n] = clean(defaults[n]) if defaults[n] }
103
+
104
+ # Filter params
105
+ defaults[:request].params = clean(defaults[:request].params) if defaults[:request] && defaults[:request].params
106
+
107
+ defaults
98
108
  end
99
109
 
100
110
  # @private
@@ -135,4 +145,4 @@ end
135
145
  # @return [ToadHopper]
136
146
  def ToadHopper(api_key)
137
147
  ToadHopper.new(api_key)
138
- end
148
+ end
data/test/helper.rb CHANGED
@@ -1,3 +1,8 @@
1
- Bundler.require_env(:test)
1
+ Bundler.setup(:runtime, :test)
2
+ Bundler.require(:runtime, :test)
2
3
 
3
- require File.join(File.dirname(__FILE__), "..", "lib", "toadhopper")
4
+ require File.expand_path("../../lib/toadhopper", __FILE__)
5
+
6
+ def toadhopper
7
+ @toadhopper ||= ToadHopper.new(ENV['HOPTOAD_API_KEY'] || "test api key")
8
+ end
data/test/test_filters.rb CHANGED
@@ -1,10 +1,6 @@
1
1
  require File.expand_path(File.join(File.dirname(__FILE__), 'helper'))
2
2
 
3
3
  class ToadHopper::TestFilters < Test::Unit::TestCase
4
- def toadhopper
5
- @toadhopper ||= ToadHopper("test api key")
6
- end
7
-
8
4
  def test_no_filters
9
5
  assert_equal( {:id => "myid", :password => "mypassword"},
10
6
  toadhopper.clean(:id => "myid", :password => "mypassword"))
@@ -28,3 +24,14 @@ class ToadHopper::TestFilters < Test::Unit::TestCase
28
24
  toadhopper.clean(:id => "myid", :email => "myemail", :password => "mypassword"))
29
25
  end
30
26
  end
27
+
28
+ class ToadHopper::TestCleanedOptions < Test::Unit::TestCase
29
+ def test_filtering_params
30
+ request = Struct.new(:params).new
31
+ request.params = {:password => "foo"}
32
+ error = begin; raise "Kaboom!"; rescue => e; e end
33
+
34
+ toadhopper.filters = "password"
35
+ assert_equal({:password => "[FILTERED]"}, toadhopper.filtered_data(error, :request => request)[:request].params)
36
+ end
37
+ end
data/test/test_posting.rb CHANGED
@@ -2,17 +2,16 @@ require File.expand_path(File.join(File.dirname(__FILE__), 'helper'))
2
2
 
3
3
  class ToadHopper::TestPosting < Test::Unit::TestCase
4
4
  def test_posting
5
- toadhopper = ToadHopper("abc123")
6
5
  error = begin; raise "Kaboom!"; rescue => e; e end
7
6
 
8
- response = toadhopper.post!(error)
7
+ response = ToadHopper('bogus key').post!(error)
9
8
  assert_equal 422, response.status
10
9
  assert_equal ['No project exists with the given API key.'], response.errors
11
10
  end
12
11
 
13
12
  if ENV['HOPTOAD_API_KEY']
14
13
  def test_posting_integration
15
- toadhopper = ToadHopper(ENV['HOPTOAD_API_KEY'])
14
+ toadhopper.filters = "HOPTOAD_API_KEY", "ROOT_PASSWORD"
16
15
  error = begin; raise "Kaboom!"; rescue => e; e end
17
16
 
18
17
  response = toadhopper.post!(error)
metadata CHANGED
@@ -1,17 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: toadhopper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.4
4
+ version: 0.9.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tim Lucas
8
8
  - Samuel Tesla
9
9
  - Corey Donohoe
10
+ - Andre Arko
10
11
  autorequire:
11
12
  bindir: bin
12
13
  cert_chain: []
13
14
 
14
- date: 2009-12-24 00:00:00 +11:00
15
+ date: 2010-02-17 00:00:00 -08:00
15
16
  default_executable:
16
17
  dependencies:
17
18
  - !ruby/object:Gem::Dependency
@@ -22,7 +23,7 @@ dependencies:
22
23
  requirements:
23
24
  - - ~>
24
25
  - !ruby/object:Gem::Version
25
- version: "2.0"
26
+ version: 2.2.0
26
27
  version:
27
28
  - !ruby/object:Gem::Dependency
28
29
  name: nokogiri