uniform_notifier 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/.gitignore ADDED
@@ -0,0 +1,4 @@
1
+ pkg/*
2
+ *.gem
3
+ .bundle
4
+ .rvmrc
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in uniform_notifier.gemspec
4
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,28 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ uniform_notifier (0.0.1)
5
+
6
+ GEM
7
+ remote: http://rubygems.org/
8
+ specs:
9
+ diff-lcs (1.1.2)
10
+ rspec (2.1.0)
11
+ rspec-core (~> 2.1.0)
12
+ rspec-expectations (~> 2.1.0)
13
+ rspec-mocks (~> 2.1.0)
14
+ rspec-core (2.1.0)
15
+ rspec-expectations (2.1.0)
16
+ diff-lcs (~> 1.1.2)
17
+ rspec-mocks (2.1.0)
18
+ ruby-growl (3.0)
19
+ xmpp4r (0.5)
20
+
21
+ PLATFORMS
22
+ ruby
23
+
24
+ DEPENDENCIES
25
+ rspec
26
+ ruby-growl
27
+ uniform_notifier!
28
+ xmpp4r
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2010 Richard Huang (flyerhzm@gmail.com)
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,71 @@
1
+ UniformNotifier
2
+ ===============
3
+
4
+ uniform_notifier is extracted from [bullet][0], it gives you the ability to send notification through rails logger, customized logger, javascript alert, javascript console, growl, and xmpp.
5
+
6
+ Install
7
+ -------
8
+
9
+ 1. install directly
10
+
11
+ gem install uniform_notifier
12
+
13
+ if you want to notify by growl or xmpp, you should install them first
14
+
15
+ gem install ruby-growl
16
+ gem install xmpp4r
17
+
18
+ 2. add it into Gemfile (Bundler)
19
+
20
+ gem "uniform_notifier"
21
+
22
+ you should add ruby-growl and xmpp4r gem if you want.
23
+
24
+ Usage
25
+ -----
26
+
27
+ There are two types of notifications, one is <code>inline_notify</code>, for javascript alert and javascript console notifiers, which returns a string and will be combined, the other is <code>out_of_channel_notify</code>, for rails logger, customized logger, growl and xmpp, which doesn't return anything, just send the message to the notifiers.
28
+
29
+ By default, all notifiers are disabled, you should enable them first.
30
+
31
+ # javascript alert
32
+ UniformNotifier.alert = true
33
+
34
+ # javascript console
35
+ UniformNotifier.console = true
36
+
37
+ # rails logger
38
+ UniformNotifier.rails_logger = true
39
+
40
+ # customized logger
41
+ logger = File.open('notify.log', 'a+')
42
+ logger.sync = true
43
+ UniformNotifier.customized_logger = logger
44
+
45
+ # growl without password
46
+ UniformNotifier.growl = true
47
+ # growl with passowrd
48
+ UniformNotifier.growl = { :password => 'growl password' }
49
+
50
+ # xmpp
51
+ UniformNotifier.xmpp = { :account => 'bullets_account@jabber.org',
52
+ :password => 'bullets_password_for_jabber',
53
+ :receiver => 'your_account@jabber.org',
54
+ :show_online_status => true }
55
+
56
+ After that, you can enjoy the notifiers, that's cool!
57
+
58
+ # the notify message will be notified to rails logger, customized logger, growl or xmpp.
59
+ UniformNotifier.active_notfiiers.out_of_channel_notify(notify_message)
60
+
61
+ # the notify message will be wrapped by <script type="text/javascript">...</script>,
62
+ # you should append the javascript_str at the bottom of http response body.
63
+ # for more information, please check https://github.com/flyerhzm/bullet/blob/master/lib/bullet/rack.rb
64
+ responses = []
65
+ UniformNotifier.active_notifiers.each do |notifier|
66
+ responses << notifier.inline_notify(notify_message)
67
+ end
68
+ javascript_str = responses.join("\n")
69
+
70
+
71
+ [0]: https://github.com/flyerhzm/bullet
data/Rakefile ADDED
@@ -0,0 +1,2 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
@@ -0,0 +1,21 @@
1
+ module UniformNotifier
2
+ class Base
3
+ def self.active?
4
+ false
5
+ end
6
+
7
+ def self.inline_notify( message )
8
+ end
9
+
10
+ def self.out_of_channel_notify( message )
11
+ end
12
+
13
+ def self.wrap_js_association( message )
14
+ <<-CODE
15
+ <script type="text/javascript">/*<![CDATA[*/
16
+ #{message}
17
+ /*]]>*/</script>
18
+ CODE
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,24 @@
1
+ module UniformNotifier
2
+ class CustomizedLogger < Base
3
+ @logger = nil
4
+
5
+ def self.active?
6
+ @logger
7
+ end
8
+
9
+ def self.out_of_channel_notify( message )
10
+ return unless active?
11
+ @logger.warn message
12
+ end
13
+
14
+ def self.setup(logdev)
15
+ require 'logger'
16
+
17
+ @logger = Logger.new( logdev )
18
+
19
+ def @logger.format_message( severity, timestamp, progname, msg )
20
+ "#{timestamp.strftime("%Y-%m-%d %H:%M:%S")}[#{severity}] #{msg}"
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,38 @@
1
+ module UniformNotifier
2
+ class Growl < Base
3
+ @growl = nil
4
+
5
+ def self.active?
6
+ @growl
7
+ end
8
+
9
+ def self.out_of_channel_notify( message )
10
+ return unless active?
11
+ notify( message )
12
+ end
13
+
14
+ def self.setup_connection( growl )
15
+ require 'ruby-growl'
16
+ @password = growl == true ? nil : growl[:password]
17
+ @growl = connect
18
+
19
+ notify 'Uniform Notifier Growl has been turned on'
20
+ rescue LoadError
21
+ @growl = nil
22
+ raise NotificationError.new( 'You must install the ruby-growl gem to use Growl notification: `gem install ruby-growl`' )
23
+ end
24
+
25
+ private
26
+ def self.connect
27
+ ::Growl.new 'localhost',
28
+ 'uniform_notifier',
29
+ [ 'uniform_notifier' ],
30
+ nil,
31
+ @password
32
+ end
33
+
34
+ def self.notify( message )
35
+ @growl.notify( 'uniform_notifier', 'Uniform Notifier', message )
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,13 @@
1
+ module UniformNotifier
2
+ class JavascriptAlert < Base
3
+ def self.active?
4
+ UniformNotifier.alert
5
+ end
6
+
7
+ def self.inline_notify( message )
8
+ return unless self.active?
9
+
10
+ wrap_js_association "alert( #{message.inspect} );"
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,25 @@
1
+ module UniformNotifier
2
+ class JavascriptConsole < Base
3
+ def self.active?
4
+ UniformNotifier.console
5
+ end
6
+
7
+ def self.inline_notify( message )
8
+ return unless active?
9
+
10
+ code = <<-CODE
11
+ if (typeof(console) !== 'undefined' && console.log) {
12
+ if (console.groupCollapsed && console.groupEnd) {
13
+ console.groupCollapsed(#{"Uniform Notifier".inspect});
14
+ console.log(#{message.inspect});
15
+ console.groupEnd();
16
+ } else {
17
+ console.log(#{message.inspect});
18
+ }
19
+ }
20
+ CODE
21
+
22
+ wrap_js_association code
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,12 @@
1
+ module UniformNotifier
2
+ class RailsLogger < Base
3
+ def self.active?
4
+ UniformNotifier.rails_logger
5
+ end
6
+
7
+ def self.out_of_channel_notify( message )
8
+ return unless active?
9
+ Rails.logger.warn message
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,3 @@
1
+ module UniformNotifier
2
+ VERSION = "1.0.0"
3
+ end
@@ -0,0 +1,50 @@
1
+ module UniformNotifier
2
+ class Xmpp < Base
3
+ @receiver = nil
4
+ @xmpp = nil
5
+ @password = nil
6
+
7
+ def self.active?
8
+ @xmpp
9
+ end
10
+
11
+ def self.out_of_channel_notify( message )
12
+ return unless active?
13
+ notify( message )
14
+ end
15
+
16
+ def self.setup_connection( xmpp_information )
17
+ require 'xmpp4r'
18
+
19
+ @receiver = xmpp_information[:receiver]
20
+ @password = xmpp_information[:password]
21
+ @account = xmpp_information[:account]
22
+ @show_online_status = xmpp_information[:show_online_status]
23
+
24
+ connect
25
+ rescue LoadError
26
+ @xmpp = nil
27
+ raise NotificationError.new( 'You must install the xmpp4r gem to use XMPP notification: `gem install xmpp4r`' )
28
+ end
29
+
30
+ private
31
+ def self.connect
32
+ jid = Jabber::JID.new( @account )
33
+ @xmpp = Jabber::Client.new( jid )
34
+ @xmpp.connect
35
+ @xmpp.auth( @password )
36
+ @xmpp.send( presence_status ) if @show_online_status
37
+ end
38
+
39
+ def self.notify( message )
40
+ message = Jabber::Message.new( @receiver, message ).
41
+ set_type( :normal ).
42
+ set_subject( 'Uniform Notifier' )
43
+ @xmpp.send( message )
44
+ end
45
+
46
+ def self.presence_status
47
+ Jabber::Presence.new.set_status( "Uniform Notifier started on #{Time.now}" )
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,33 @@
1
+ require 'uniform_notifier/base'
2
+ require 'uniform_notifier/javascript_alert'
3
+ require 'uniform_notifier/javascript_console'
4
+ require 'uniform_notifier/growl'
5
+ require 'uniform_notifier/xmpp'
6
+ require 'uniform_notifier/rails_logger'
7
+ require 'uniform_notifier/customized_logger'
8
+
9
+ module UniformNotifier
10
+ class NotificationError < StandardError; end
11
+
12
+ class <<self
13
+ attr_accessor :alert, :console, :growl, :rails_logger, :xmpp
14
+
15
+ NOTIFIERS = [JavascriptAlert, JavascriptConsole, Growl, Xmpp, RailsLogger, CustomizedLogger]
16
+
17
+ def active_notifiers
18
+ NOTIFIERS.select { |notifier| notifier.active? }
19
+ end
20
+
21
+ def growl=(growl)
22
+ UniformNotifier::Growl.setup_connection(growl)
23
+ end
24
+
25
+ def xmpp=(xmpp)
26
+ UniformNotifier::Xmpp.setup_connection(xmpp)
27
+ end
28
+
29
+ def customized_logger=(logdev)
30
+ UniformNotifier::CustomizedLogger.setup(logdev)
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,4 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
2
+
3
+ require "uniform_notifier"
4
+ require "rspec"
@@ -0,0 +1,22 @@
1
+ require "spec_helper"
2
+
3
+ describe UniformNotifier::CustomizedLogger do
4
+ it "should not notify to customized logger" do
5
+ UniformNotifier::CustomizedLogger.out_of_channel_notify("notify rails logger").should be_nil
6
+ end
7
+
8
+ it "should notify to customized logger" do
9
+ logger = File.open( 'test.log', 'a+' )
10
+ logger.sync = true
11
+
12
+ now = Time.now
13
+ Time.stub!(:now).and_return(now)
14
+ UniformNotifier.customized_logger = logger
15
+ UniformNotifier::CustomizedLogger.out_of_channel_notify("notify rails logger")
16
+
17
+ logger.seek(0)
18
+ logger.read.should == "#{now.strftime("%Y-%m-%d %H:%M:%S")}[WARN] notify rails logger"
19
+
20
+ File.delete('test.log')
21
+ end
22
+ end
@@ -0,0 +1,29 @@
1
+ require 'spec_helper'
2
+ require 'ruby-growl'
3
+
4
+ describe UniformNotifier::Growl do
5
+
6
+ it "should not notify growl" do
7
+ UniformNotifier::Growl.out_of_channel_notify('notify growl').should be_nil
8
+ end
9
+
10
+ it "should notify growl without password" do
11
+ growl = double('growl')
12
+ Growl.should_receive(:new).with('localhost', 'uniform_notifier', ['uniform_notifier'], nil, nil).and_return(growl)
13
+ growl.should_receive(:notify).with('uniform_notifier', 'Uniform Notifier', 'Uniform Notifier Growl has been turned on').ordered
14
+ growl.should_receive(:notify).with('uniform_notifier', 'Uniform Notifier', 'notify growl without password').ordered
15
+
16
+ UniformNotifier.growl = true
17
+ UniformNotifier::Growl.out_of_channel_notify('notify growl without password')
18
+ end
19
+
20
+ it "should notify growl with password" do
21
+ growl = double('growl')
22
+ Growl.should_receive(:new).with('localhost', 'uniform_notifier', ['uniform_notifier'], nil, '123456').and_return(growl)
23
+ growl.should_receive(:notify).with('uniform_notifier', 'Uniform Notifier', 'Uniform Notifier Growl has been turned on').ordered
24
+ growl.should_receive(:notify).with('uniform_notifier', 'Uniform Notifier', 'notify growl with password').ordered
25
+
26
+ UniformNotifier.growl = { :password => '123456' }
27
+ UniformNotifier::Growl.out_of_channel_notify('notify growl with password')
28
+ end
29
+ end
@@ -0,0 +1,16 @@
1
+ require "spec_helper"
2
+
3
+ describe UniformNotifier::JavascriptAlert do
4
+ it "should not notify message" do
5
+ UniformNotifier::JavascriptAlert.inline_notify("javascript alert!").should be_nil
6
+ end
7
+
8
+ it "should notify message" do
9
+ UniformNotifier.alert = true
10
+ UniformNotifier::JavascriptAlert.inline_notify("javascript alert!").should == <<-CODE
11
+ <script type="text/javascript">/*<![CDATA[*/
12
+ alert( "javascript alert!" );
13
+ /*]]>*/</script>
14
+ CODE
15
+ end
16
+ end
@@ -0,0 +1,25 @@
1
+ require "spec_helper"
2
+
3
+ describe UniformNotifier::JavascriptConsole do
4
+ it "should not notify message" do
5
+ UniformNotifier::JavascriptConsole.inline_notify("javascript console!").should be_nil
6
+ end
7
+
8
+ it "should notify message" do
9
+ UniformNotifier.console = true
10
+ UniformNotifier::JavascriptConsole.inline_notify("javascript console!").should == <<-CODE
11
+ <script type="text/javascript">/*<![CDATA[*/
12
+ if (typeof(console) !== 'undefined' && console.log) {
13
+ if (console.groupCollapsed && console.groupEnd) {
14
+ console.groupCollapsed(#{"Uniform Notifier".inspect});
15
+ console.log(#{"javascript console!".inspect});
16
+ console.groupEnd();
17
+ } else {
18
+ console.log(#{"javascript console!".inspect});
19
+ }
20
+ }
21
+
22
+ /*]]>*/</script>
23
+ CODE
24
+ end
25
+ end
@@ -0,0 +1,20 @@
1
+ require "spec_helper"
2
+
3
+ class Rails
4
+ # mock Rails
5
+ end
6
+
7
+ describe UniformNotifier::RailsLogger do
8
+ it "should not notify rails logger" do
9
+ UniformNotifier::RailsLogger.out_of_channel_notify("notify rails logger").should be_nil
10
+ end
11
+
12
+ it "should notify rails logger" do
13
+ logger = double("logger")
14
+ Rails.should_receive(:logger).and_return(logger)
15
+ logger.should_receive(:warn).with("notify rails logger")
16
+
17
+ UniformNotifier.rails_logger = true
18
+ UniformNotifier::RailsLogger.out_of_channel_notify("notify rails logger")
19
+ end
20
+ end
@@ -0,0 +1,51 @@
1
+ require 'spec_helper'
2
+ require 'xmpp4r'
3
+
4
+ describe UniformNotifier::Xmpp do
5
+ it "should not notify xmpp" do
6
+ UniformNotifier::Xmpp.out_of_channel_notify("notify xmpp").should be_nil
7
+ end
8
+
9
+ it "should notify xmpp without online status" do
10
+ jid = double("jid")
11
+ xmpp = double("xmpp")
12
+ Jabber::JID.should_receive(:new).with('from@gmail.com').and_return(jid)
13
+ Jabber::Client.should_receive(:new).with(jid).and_return(xmpp)
14
+ xmpp.should_receive(:connect)
15
+ xmpp.should_receive(:auth).with('123456')
16
+
17
+ message = double("message")
18
+ Jabber::Message.should_receive(:new).with('to@gmail.com', 'notify xmpp').and_return(message)
19
+ message.should_receive(:set_type).with(:normal).and_return(message)
20
+ message.should_receive(:set_subject).with('Uniform Notifier').and_return(message)
21
+ xmpp.should_receive(:send).with(message)
22
+
23
+ UniformNotifier.xmpp = {:account => 'from@gmail.com', :password => '123456', :receiver => 'to@gmail.com', :show_online_status => false}
24
+ UniformNotifier::Xmpp.out_of_channel_notify('notify xmpp')
25
+ end
26
+
27
+ it "should notify xmpp with online status" do
28
+ jid = double("jid")
29
+ xmpp = double("xmpp")
30
+ Jabber::JID.should_receive(:new).with('from@gmail.com').and_return(jid)
31
+ Jabber::Client.should_receive(:new).with(jid).and_return(xmpp)
32
+ xmpp.should_receive(:connect)
33
+ xmpp.should_receive(:auth).with('123456')
34
+
35
+ presence = double("presence")
36
+ now = Time.now
37
+ Time.stub!(:now).and_return(now)
38
+ Jabber::Presence.should_receive(:new).and_return(presence)
39
+ presence.should_receive(:set_status).with("Uniform Notifier started on #{now}").and_return(presence)
40
+ xmpp.should_receive(:send).with(presence)
41
+
42
+ message = double("message")
43
+ Jabber::Message.should_receive(:new).with('to@gmail.com', 'notify xmpp').and_return(message)
44
+ message.should_receive(:set_type).with(:normal).and_return(message)
45
+ message.should_receive(:set_subject).with('Uniform Notifier').and_return(message)
46
+ xmpp.should_receive(:send).with(message)
47
+
48
+ UniformNotifier.xmpp = {:account => 'from@gmail.com', :password => '123456', :receiver => 'to@gmail.com', :show_online_status => true}
49
+ UniformNotifier::Xmpp.out_of_channel_notify('notify xmpp')
50
+ end
51
+ end
@@ -0,0 +1,25 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "uniform_notifier/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "uniform_notifier"
7
+ s.version = UniformNotifier::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["Richard Huang"]
10
+ s.email = ["flyerhzm@gmail.com"]
11
+ s.homepage = "http://rubygems.org/gems/uniform_notifier"
12
+ s.summary = %q{uniform notifier for rails logger, customized logger, javascript alert, javascript console, growl and xmpp}
13
+ s.description = %q{uniform notifier for rails logger, customized logger, javascript alert, javascript console, growl and xmpp}
14
+
15
+ s.rubyforge_project = "uniform_notifier"
16
+
17
+ s.add_development_dependency "rspec"
18
+ s.add_development_dependency "ruby-growl"
19
+ s.add_development_dependency "xmpp4r"
20
+
21
+ s.files = `git ls-files`.split("\n")
22
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
23
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
24
+ s.require_paths = ["lib"]
25
+ end
metadata ADDED
@@ -0,0 +1,137 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: uniform_notifier
3
+ version: !ruby/object:Gem::Version
4
+ hash: 23
5
+ prerelease: false
6
+ segments:
7
+ - 1
8
+ - 0
9
+ - 0
10
+ version: 1.0.0
11
+ platform: ruby
12
+ authors:
13
+ - Richard Huang
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2010-11-19 00:00:00 +08:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: rspec
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 3
30
+ segments:
31
+ - 0
32
+ version: "0"
33
+ type: :development
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ name: ruby-growl
37
+ prerelease: false
38
+ requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ hash: 3
44
+ segments:
45
+ - 0
46
+ version: "0"
47
+ type: :development
48
+ version_requirements: *id002
49
+ - !ruby/object:Gem::Dependency
50
+ name: xmpp4r
51
+ prerelease: false
52
+ requirement: &id003 !ruby/object:Gem::Requirement
53
+ none: false
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ hash: 3
58
+ segments:
59
+ - 0
60
+ version: "0"
61
+ type: :development
62
+ version_requirements: *id003
63
+ description: uniform notifier for rails logger, customized logger, javascript alert, javascript console, growl and xmpp
64
+ email:
65
+ - flyerhzm@gmail.com
66
+ executables: []
67
+
68
+ extensions: []
69
+
70
+ extra_rdoc_files: []
71
+
72
+ files:
73
+ - .gitignore
74
+ - Gemfile
75
+ - Gemfile.lock
76
+ - LICENSE
77
+ - README.md
78
+ - Rakefile
79
+ - lib/uniform_notifier.rb
80
+ - lib/uniform_notifier/base.rb
81
+ - lib/uniform_notifier/customized_logger.rb
82
+ - lib/uniform_notifier/growl.rb
83
+ - lib/uniform_notifier/javascript_alert.rb
84
+ - lib/uniform_notifier/javascript_console.rb
85
+ - lib/uniform_notifier/rails_logger.rb
86
+ - lib/uniform_notifier/version.rb
87
+ - lib/uniform_notifier/xmpp.rb
88
+ - spec/spec_helper.rb
89
+ - spec/uniform_notifier/customized_logger_spec.rb
90
+ - spec/uniform_notifier/growl_spec.rb
91
+ - spec/uniform_notifier/javascript_alert_spec.rb
92
+ - spec/uniform_notifier/javascript_console_spec.rb
93
+ - spec/uniform_notifier/rails_logger_spec.rb
94
+ - spec/uniform_notifier/xmpp_spec.rb
95
+ - uniform_notifier.gemspec
96
+ has_rdoc: true
97
+ homepage: http://rubygems.org/gems/uniform_notifier
98
+ licenses: []
99
+
100
+ post_install_message:
101
+ rdoc_options: []
102
+
103
+ require_paths:
104
+ - lib
105
+ required_ruby_version: !ruby/object:Gem::Requirement
106
+ none: false
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ hash: 3
111
+ segments:
112
+ - 0
113
+ version: "0"
114
+ required_rubygems_version: !ruby/object:Gem::Requirement
115
+ none: false
116
+ requirements:
117
+ - - ">="
118
+ - !ruby/object:Gem::Version
119
+ hash: 3
120
+ segments:
121
+ - 0
122
+ version: "0"
123
+ requirements: []
124
+
125
+ rubyforge_project: uniform_notifier
126
+ rubygems_version: 1.3.7
127
+ signing_key:
128
+ specification_version: 3
129
+ summary: uniform notifier for rails logger, customized logger, javascript alert, javascript console, growl and xmpp
130
+ test_files:
131
+ - spec/spec_helper.rb
132
+ - spec/uniform_notifier/customized_logger_spec.rb
133
+ - spec/uniform_notifier/growl_spec.rb
134
+ - spec/uniform_notifier/javascript_alert_spec.rb
135
+ - spec/uniform_notifier/javascript_console_spec.rb
136
+ - spec/uniform_notifier/rails_logger_spec.rb
137
+ - spec/uniform_notifier/xmpp_spec.rb