toadhopper 0.9.4 → 0.9.5

Sign up to get free protection for your applications and to get access to all the features.
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