notificate 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 439b7d13b42b1e8ba4fa48fdf5e992d90ec15304
4
+ data.tar.gz: 7b54968bd0af5a57c847ad8802ba1abf84c81e59
5
+ SHA512:
6
+ metadata.gz: 417b1f76de6b9d664aedee54354399a8bb97c59edbb8bc9e01df7c373ca0cbbd62777e3ba7a4fd5e62f6b735c0469c94954fb5fb2c74641b1765e32cf3c18fea
7
+ data.tar.gz: 0b6a918889b6f9d7bb8b41a77a3821fb9a832c144935446df10a08df667dab6d9f33ae020f6e8dc9d51f41456d91cc9d034069286d4adfcd99d978de37d7d54b
Binary file
Binary file
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
@@ -0,0 +1,8 @@
1
+ # A sample Guardfile
2
+ # More info at https://github.com/guard/guard#readme
3
+
4
+ guard 'minitest' do
5
+ watch(%r|^test/(.*)\/?(.*)_test\.rb|)
6
+ watch(%r|^lib/(.*)([^/]+)\.rb|) { |m| "test/#{m[1]}#{m[2]}_test.rb" }
7
+ watch(%r|^test/test_helper\.rb|) { "test" }
8
+ end
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 James Newton <james@Zaphyous.com>
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,29 @@
1
+ # Howell::Rails
2
+
3
+ TODO: Write a gem description
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'howell-rails'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install howell-rails
18
+
19
+ ## Usage
20
+
21
+ TODO: Write usage instructions here
22
+
23
+ ## Contributing
24
+
25
+ 1. Fork it
26
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
27
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
28
+ 4. Push to the branch (`git push origin my-new-feature`)
29
+ 5. Create new Pull Request
@@ -0,0 +1,11 @@
1
+ require 'bundler/gem_tasks'
2
+ require 'rake/testtask'
3
+
4
+ Rake::TestTask.new(:test) do |t|
5
+ t.libs << 'test'
6
+ t.pattern = 'test/**/*_test.rb'
7
+ t.verbose = false
8
+ t.warning = true
9
+ end
10
+
11
+ task :default => :test
@@ -0,0 +1,7 @@
1
+ module Notificate::Rails::Configuration
2
+ attr_reader :options
3
+
4
+ def configure(opts = {})
5
+ @options = Notificate::ObjectifiedHash.new(opts)
6
+ end
7
+ end
@@ -0,0 +1,34 @@
1
+ module Notificate::Rails::Controller
2
+ def self.included(klass)
3
+ klass.extend ControllerMethods
4
+ end
5
+
6
+ def rails_data
7
+ {
8
+ environment: ::Notificate::Rails.options.environment,
9
+ root: ::Notificate::Rails.options.project_root
10
+ }
11
+ end
12
+
13
+ def notify_notificate(exception)
14
+ ::Notificate::ExceptionCatcher.notify(exception, rails_data)
15
+ end
16
+
17
+ def _notificate_around_filter
18
+ begin
19
+ yield
20
+ rescue Object => error
21
+ handler = error.respond_to?(:original_exception) ? error.original_exception : error
22
+
23
+ notify_notificate(error) unless handler_for_rescue(handler)
24
+
25
+ raise
26
+ end
27
+ end
28
+
29
+ module ControllerMethods
30
+ def enable_notificate_notifications(options = {})
31
+ prepend_around_filter :_notificate_around_filter, options
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,28 @@
1
+ module Notificate::Rails
2
+ class Rack
3
+ def initialize(app)
4
+ @app = app
5
+ end
6
+
7
+ def call(env)
8
+ @env = env
9
+
10
+ begin
11
+ result = @app.call(env)
12
+ rescue ::Exception => ex
13
+ @env['notificate.notified'] = ::Notificate::ExceptionCatcher.notify(ex, rack_data)
14
+
15
+ raise ex
16
+ end
17
+
18
+ result
19
+ end
20
+
21
+ def rack_data
22
+ {
23
+ environment: ::Notificate::Rails.options.environment,
24
+ root: ::Notificate::Rails.options.project_root
25
+ }
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,20 @@
1
+ class Notificate::Rails::Railtie < Rails::Railtie
2
+ initializer 'notificate.configure_rails_initialization' do |app|
3
+ Notificate::Rails.configure(
4
+ environment: Rails.env.to_s,
5
+ project_root: Rails.root.to_s
6
+ )
7
+
8
+ if app.respond_to?(:config) and app.config.respond_to?(:middleware)
9
+ require 'notificate-rails/rack'
10
+
11
+ if defined?(ActionDispatch::DebugExceptions)
12
+ app.config.middleware.insert_after ActionDispatch::DebugExceptions, Notificate::Rails::Rack
13
+ elsif defined?(ActionDispatch::ShowExceptions)
14
+ app.config.middleware.insert_after ActionDispatch::ShowExceptions, Notificate::Rails::Rack
15
+ else
16
+ app.config.middleware.insert 0, Notificate::Rails::Rack
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,5 @@
1
+ module Notificate
2
+ module Rails
3
+ VERSION = '0.0.1'
4
+ end
5
+ end
@@ -0,0 +1,31 @@
1
+ module Notificate; end
2
+
3
+ require 'json'
4
+ require 'httparty'
5
+ require 'notificate-rails/version'
6
+ require 'notificate/objectified_hash'
7
+ require 'notificate/configuration'
8
+ require 'notificate/notice'
9
+ require 'notificate/exception_catcher'
10
+
11
+ module Notificate
12
+ extend Configuration
13
+
14
+ def self.notice(message)
15
+ payload = { body: { payload: { message: message } }.to_json }
16
+
17
+ Notice.new(payload, :application)
18
+ end
19
+ end
20
+
21
+ if defined?(Rails)
22
+ require 'notificate-rails/configuration'
23
+ require 'notificate-rails/railtie'
24
+ require 'notificate-rails/controller'
25
+
26
+ module Notificate::Rails
27
+ extend Configuration
28
+
29
+ include Controller
30
+ end
31
+ end
@@ -0,0 +1,14 @@
1
+ module Notificate::Configuration
2
+ attr_reader :options
3
+
4
+ def configure(opts = {})
5
+ opts[:protocol] ||= :https
6
+ opts[:port] ||= 80
7
+
8
+ @options = Notificate::ObjectifiedHash.new(opts)
9
+ end
10
+
11
+ def request_path
12
+ "#{options.protocol}://#{options.hostname}:#{options.port}/#{options.endpoint}#{options.params}"
13
+ end
14
+ end
@@ -0,0 +1,7 @@
1
+ module Notificate::ExceptionCatcher
2
+ def self.notify(exception, data)
3
+ payload = { body: { payload: { exception: exception.to_s, data: data } }.to_json }
4
+
5
+ ::Notificate::Notice.new(payload, :exception)
6
+ end
7
+ end
@@ -0,0 +1,22 @@
1
+ class Notificate::Notice
2
+ include ::HTTParty
3
+
4
+ def initialize(message, message_type)
5
+ @defaults = { headers: { 'Content-Type' => 'application/json'} }
6
+
7
+ case message_type
8
+ when :application
9
+ app_notice(message)
10
+ when :exception
11
+ exception_notice(message)
12
+ end
13
+ end
14
+
15
+ def app_notice(payload)
16
+ self.class.post(Notificate.request_path, payload.merge(@defaults))
17
+ end
18
+
19
+ def exception_notice(payload)
20
+ self.class.post(Notificate.request_path, payload.merge(@defaults))
21
+ end
22
+ end
@@ -0,0 +1,14 @@
1
+ class Notificate::ObjectifiedHash
2
+ def initialize(hash)
3
+ @data = hash.inject({}) do |data, (key, value)|
4
+ value = self.new(value) if value.is_a? Hash
5
+
6
+ data[key.to_s] = value
7
+ data
8
+ end
9
+ end
10
+
11
+ def method_missing(key)
12
+ @data.key?(key.to_s) ? @data[key.to_s] : nil
13
+ end
14
+ end
@@ -0,0 +1,31 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'notificate-rails/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = 'notificate'
8
+ spec.version = Notificate::Rails::VERSION
9
+ spec.authors = ['James Newton']
10
+ spec.email = ['james@Zaphyous.com']
11
+ spec.description = %q{Send notices to howell throughout rails applications}
12
+ spec.summary = %q{Send notices to howell throughout rails applications}
13
+ spec.homepage = 'https://github.com/zaphyous/notificate'
14
+ spec.license = 'MIT'
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ['lib']
20
+
21
+ spec.add_dependency 'httparty'
22
+ spec.add_dependency 'json'
23
+
24
+ spec.add_development_dependency 'bundler', '~> 1.3'
25
+ spec.add_development_dependency 'rake'
26
+ spec.add_development_dependency 'minitest'
27
+ spec.add_development_dependency 'minitest-colorize'
28
+ spec.add_development_dependency 'guard-minitest'
29
+ spec.add_development_dependency 'webmock'
30
+ spec.add_development_dependency 'rails'
31
+ end
@@ -0,0 +1,18 @@
1
+ require 'test_helper'
2
+
3
+ class NotificateRailsConfigurationTest < MiniTest::Unit::TestCase
4
+ def setup
5
+ Notificate::Rails.configure(
6
+ environment: 'production',
7
+ project_root: File.expand_path(File.dirname(__FILE__) + '../../../'),
8
+ )
9
+ end
10
+
11
+ def test_environment
12
+ assert_equal Notificate::Rails.options.environment, 'production'
13
+ end
14
+
15
+ def test_project_root
16
+ assert_equal Notificate::Rails.options.project_root, File.expand_path(File.dirname(__FILE__) + '../../..')
17
+ end
18
+ end
@@ -0,0 +1,27 @@
1
+ require 'test_helper'
2
+
3
+ class NotificateConfigurationTest < MiniTest::Unit::TestCase
4
+ def setup
5
+ notificate_config
6
+ end
7
+
8
+ def test_hostname
9
+ assert_equal Notificate.options.hostname, 'example.com'
10
+ end
11
+
12
+ def test_endpoint
13
+ assert_equal Notificate.options.endpoint, 'app_notices'
14
+ end
15
+
16
+ def test_params
17
+ assert_equal Notificate.options.params, '?channel=zaphyous'
18
+ end
19
+
20
+ def test_port
21
+ assert_equal Notificate.options.port, 1234
22
+ end
23
+
24
+ def test_request_path
25
+ assert_equal Notificate.request_path, 'http://example.com:1234/app_notices?channel=zaphyous'
26
+ end
27
+ end
@@ -0,0 +1,17 @@
1
+ require 'test_helper'
2
+
3
+ # TODO:
4
+ # * Add a test to check the content of what is being sent in a notice
5
+ class NotificateNoticeTest < MiniTest::Unit::TestCase
6
+ def setup
7
+ notificate_config
8
+
9
+ @stub_notice = stub_request(:post, Notificate.request_path)
10
+ end
11
+
12
+ def test_notices_going_to_endpoint
13
+ Notificate.notice 'Testing'
14
+
15
+ assert_requested @stub_notice
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ require 'minitest/autorun'
2
+ require 'minitest-colorize'
3
+ require 'webmock/minitest'
4
+ require 'rails'
5
+ require 'notificate'
6
+
7
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
8
+
9
+ def notificate_config(opts = {})
10
+ Notificate.configure(
11
+ protocol: opts[:protocol] || 'http',
12
+ hostname: opts[:hostname] || 'example.com',
13
+ endpoint: opts[:endpoint] || 'app_notices',
14
+ params: opts[:params] || '?channel=zaphyous',
15
+ port: opts[:port] || 1234
16
+ )
17
+ end
metadata ADDED
@@ -0,0 +1,217 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: notificate
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - James Newton
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain:
11
+ - |
12
+ -----BEGIN CERTIFICATE-----
13
+ MIIDcDCCAligAwIBAgIBATANBgkqhkiG9w0BAQUFADA/MQ4wDAYDVQQDDAVqYW1l
14
+ czEYMBYGCgmSJomT8ixkARkWCFphcGh5b3VzMRMwEQYKCZImiZPyLGQBGRYDY29t
15
+ MB4XDTEzMDQwNTIxMzEzOVoXDTE0MDQwNTIxMzEzOVowPzEOMAwGA1UEAwwFamFt
16
+ ZXMxGDAWBgoJkiaJk/IsZAEZFghaYXBoeW91czETMBEGCgmSJomT8ixkARkWA2Nv
17
+ bTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOh7OtTl+UmXxZh2pbmv
18
+ J6ed/K2X5XtZvxQBEaEMtnfmgHcWbQY6akcAO68Kau4/jLbkq6yolAzMG48WEnj1
19
+ SrL28103hyZAhLcBTPLkGgark3GsK6TFsuoStBMAmA1y8aToBSKSP+eksjGMj7LJ
20
+ AfRKNfBokbXttjcaM1iqwYEXsLiJ4DHUDV4fWEEqCtDq8T9UKniDzDDRnLiiv4W8
21
+ KTyx7ZXvfwFRUJdNLjafnyVFFscru4eYAxKIBRJ890EBNMwIQwwc6i7p1xCpBILw
22
+ gQNSk2bNbL9QS3qaF0mmFduQpS3yi5zSfm+b/BMTmVhdRpJl5L3V2mJSK57JIaES
23
+ zN0CAwEAAaN3MHUwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAwHQYDVR0OBBYEFKf6
24
+ AvzYWNq1vKs1A98HazUOXGebMB0GA1UdEQQWMBSBEmphbWVzQFphcGh5b3VzLmNv
25
+ bTAdBgNVHRIEFjAUgRJqYW1lc0BaYXBoeW91cy5jb20wDQYJKoZIhvcNAQEFBQAD
26
+ ggEBACo8Gb2O/KyIccN1X0vShC6PMzpo7IdyVs+naFqU3de8+vazLUxLHgi8yqg5
27
+ Ue4FdR++juHJCCAPJghrYi0/RlNR7+ZVhgM9/MFO283DaYyHW1+CRXp7KKlbcyUS
28
+ +2iqTVsjDNu4RCpjDZd0p7iqGk11+tpaWpnEvgCCGjnhox/Mmu2tjpxYP4z3RpDZ
29
+ IPJIx8Whh1iM5GGR2jt7O6PY7sYUBv5v85T0RTNY1xTUIwzZy1sjLMqgcZBlFF/8
30
+ IdasO+EybhhmNT32weebimCM21ychbBqkWzJGPlIfqgvmOMbQc/TwQcwkYPgoX6l
31
+ QdB79NrQet5m6RR7qA5joVvZhZA=
32
+ -----END CERTIFICATE-----
33
+ date: 2013-05-01 00:00:00.000000000 Z
34
+ dependencies:
35
+ - !ruby/object:Gem::Dependency
36
+ name: httparty
37
+ requirement: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - '>='
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
42
+ type: :runtime
43
+ prerelease: false
44
+ version_requirements: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - '>='
47
+ - !ruby/object:Gem::Version
48
+ version: '0'
49
+ - !ruby/object:Gem::Dependency
50
+ name: json
51
+ requirement: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - '>='
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ type: :runtime
57
+ prerelease: false
58
+ version_requirements: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - '>='
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ - !ruby/object:Gem::Dependency
64
+ name: bundler
65
+ requirement: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ~>
68
+ - !ruby/object:Gem::Version
69
+ version: '1.3'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ~>
75
+ - !ruby/object:Gem::Version
76
+ version: '1.3'
77
+ - !ruby/object:Gem::Dependency
78
+ name: rake
79
+ requirement: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - '>='
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
84
+ type: :development
85
+ prerelease: false
86
+ version_requirements: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - '>='
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
91
+ - !ruby/object:Gem::Dependency
92
+ name: minitest
93
+ requirement: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - '>='
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
98
+ type: :development
99
+ prerelease: false
100
+ version_requirements: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - '>='
103
+ - !ruby/object:Gem::Version
104
+ version: '0'
105
+ - !ruby/object:Gem::Dependency
106
+ name: minitest-colorize
107
+ requirement: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - '>='
110
+ - !ruby/object:Gem::Version
111
+ version: '0'
112
+ type: :development
113
+ prerelease: false
114
+ version_requirements: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - '>='
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
119
+ - !ruby/object:Gem::Dependency
120
+ name: guard-minitest
121
+ requirement: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ type: :development
127
+ prerelease: false
128
+ version_requirements: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - '>='
131
+ - !ruby/object:Gem::Version
132
+ version: '0'
133
+ - !ruby/object:Gem::Dependency
134
+ name: webmock
135
+ requirement: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - '>='
138
+ - !ruby/object:Gem::Version
139
+ version: '0'
140
+ type: :development
141
+ prerelease: false
142
+ version_requirements: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - '>='
145
+ - !ruby/object:Gem::Version
146
+ version: '0'
147
+ - !ruby/object:Gem::Dependency
148
+ name: rails
149
+ requirement: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - '>='
152
+ - !ruby/object:Gem::Version
153
+ version: '0'
154
+ type: :development
155
+ prerelease: false
156
+ version_requirements: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - - '>='
159
+ - !ruby/object:Gem::Version
160
+ version: '0'
161
+ description: Send notices to howell throughout rails applications
162
+ email:
163
+ - james@Zaphyous.com
164
+ executables: []
165
+ extensions: []
166
+ extra_rdoc_files: []
167
+ files:
168
+ - .gitignore
169
+ - Gemfile
170
+ - Guardfile
171
+ - LICENSE.txt
172
+ - README.md
173
+ - Rakefile
174
+ - lib/notificate-rails/configuration.rb
175
+ - lib/notificate-rails/controller.rb
176
+ - lib/notificate-rails/rack.rb
177
+ - lib/notificate-rails/railtie.rb
178
+ - lib/notificate-rails/version.rb
179
+ - lib/notificate.rb
180
+ - lib/notificate/configuration.rb
181
+ - lib/notificate/exception_catcher.rb
182
+ - lib/notificate/notice.rb
183
+ - lib/notificate/objectified_hash.rb
184
+ - notificate.gemspec
185
+ - test/lib/notificate-rails/configuration_test.rb
186
+ - test/lib/notificate/configuration_test.rb
187
+ - test/lib/notificate/notice_test.rb
188
+ - test/test_helper.rb
189
+ homepage: https://github.com/zaphyous/notificate
190
+ licenses:
191
+ - MIT
192
+ metadata: {}
193
+ post_install_message:
194
+ rdoc_options: []
195
+ require_paths:
196
+ - lib
197
+ required_ruby_version: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - '>='
200
+ - !ruby/object:Gem::Version
201
+ version: '0'
202
+ required_rubygems_version: !ruby/object:Gem::Requirement
203
+ requirements:
204
+ - - '>='
205
+ - !ruby/object:Gem::Version
206
+ version: '0'
207
+ requirements: []
208
+ rubyforge_project:
209
+ rubygems_version: 2.0.3
210
+ signing_key:
211
+ specification_version: 4
212
+ summary: Send notices to howell throughout rails applications
213
+ test_files:
214
+ - test/lib/notificate-rails/configuration_test.rb
215
+ - test/lib/notificate/configuration_test.rb
216
+ - test/lib/notificate/notice_test.rb
217
+ - test/test_helper.rb
Binary file