uniform_notifier 1.11.0 → 1.12.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +6 -1
  3. data/Gemfile +3 -1
  4. data/README.md +18 -1
  5. data/Rakefile +13 -11
  6. data/lib/uniform_notifier.rb +8 -7
  7. data/lib/uniform_notifier/airbrake.rb +2 -0
  8. data/lib/uniform_notifier/base.rb +17 -14
  9. data/lib/uniform_notifier/bugsnag.rb +5 -3
  10. data/lib/uniform_notifier/customized_logger.rb +6 -4
  11. data/lib/uniform_notifier/errors.rb +3 -1
  12. data/lib/uniform_notifier/growl.rb +23 -20
  13. data/lib/uniform_notifier/honeybadger.rb +2 -0
  14. data/lib/uniform_notifier/javascript_alert.rb +7 -3
  15. data/lib/uniform_notifier/javascript_console.rb +18 -14
  16. data/lib/uniform_notifier/rails_logger.rb +3 -1
  17. data/lib/uniform_notifier/raise.rb +3 -1
  18. data/lib/uniform_notifier/rollbar.rb +2 -0
  19. data/lib/uniform_notifier/sentry.rb +2 -0
  20. data/lib/uniform_notifier/slack.rb +20 -19
  21. data/lib/uniform_notifier/terminal_notifier.rb +23 -0
  22. data/lib/uniform_notifier/version.rb +3 -1
  23. data/lib/uniform_notifier/xmpp.rb +26 -23
  24. data/spec/spec_helper.rb +8 -6
  25. data/spec/uniform_notifier/airbrake_spec.rb +12 -10
  26. data/spec/uniform_notifier/base_spec.rb +10 -8
  27. data/spec/uniform_notifier/bugsnag_spec.rb +21 -19
  28. data/spec/uniform_notifier/customized_logger_spec.rb +9 -7
  29. data/spec/uniform_notifier/growl_spec.rb +19 -18
  30. data/spec/uniform_notifier/honeybadger_spec.rb +12 -10
  31. data/spec/uniform_notifier/javascript_alert_spec.rb +29 -9
  32. data/spec/uniform_notifier/javascript_console_spec.rb +55 -17
  33. data/spec/uniform_notifier/rails_logger_spec.rb +9 -7
  34. data/spec/uniform_notifier/raise_spec.rb +13 -11
  35. data/spec/uniform_notifier/rollbar_spec.rb +8 -6
  36. data/spec/uniform_notifier/sentry_spec.rb +12 -10
  37. data/spec/uniform_notifier/slack_spec.rb +10 -8
  38. data/spec/uniform_notifier/terminal_notifier_spec.rb +25 -0
  39. data/spec/uniform_notifier/xmpp_spec.rb +17 -15
  40. data/uniform_notifier.gemspec +18 -17
  41. metadata +6 -3
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class UniformNotifier
2
4
  class RailsLogger < Base
3
5
  def self.active?
@@ -6,7 +8,7 @@ class UniformNotifier
6
8
 
7
9
  protected
8
10
 
9
- def self._out_of_channel_notify( data )
11
+ def self._out_of_channel_notify(data)
10
12
  message = data.values.compact.join("\n")
11
13
 
12
14
  Rails.logger.warn message
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class UniformNotifier
2
4
  class Raise < Base
3
5
  def self.active?
@@ -10,7 +12,7 @@ class UniformNotifier
10
12
 
11
13
  protected
12
14
 
13
- def self._out_of_channel_notify( data )
15
+ def self._out_of_channel_notify(data)
14
16
  message = data.values.compact.join("\n")
15
17
 
16
18
  raise @exception_class, message
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class UniformNotifier
2
4
  class RollbarNotifier < Base
3
5
  def self.active?
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class UniformNotifier
2
4
  class SentryNotifier < Base
3
5
  def self.active?
@@ -1,6 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class UniformNotifier
2
4
  class Slack < Base
3
- POSSIBLE_OPTIONS = [:username, :channel]
5
+ POSSIBLE_OPTIONS = %i[username channel].freeze
4
6
 
5
7
  @slack = nil
6
8
 
@@ -9,7 +11,7 @@ class UniformNotifier
9
11
  @slack
10
12
  end
11
13
 
12
- def setup_connection(config={})
14
+ def setup_connection(config = {})
13
15
  webhook_url, options = parse_config(config)
14
16
  fail_connection('webhook_url required for Slack notification') unless webhook_url
15
17
 
@@ -22,30 +24,29 @@ class UniformNotifier
22
24
 
23
25
  protected
24
26
 
25
- def _out_of_channel_notify(data)
26
- message = data.values.compact.join("\n")
27
- notify(message)
28
- end
27
+ def _out_of_channel_notify(data)
28
+ message = data.values.compact.join("\n")
29
+ notify(message)
30
+ end
29
31
 
30
32
  private
31
33
 
32
- def fail_connection(message)
33
- @slack = nil
34
- raise NotificationError.new(message)
35
- end
36
-
37
- def notify(message)
38
- @slack.ping message
39
- end
34
+ def fail_connection(message)
35
+ @slack = nil
36
+ raise NotificationError, message
37
+ end
40
38
 
41
- def parse_config(config)
42
- options = config.select do |name, value|
43
- POSSIBLE_OPTIONS.include?(name) && !value.nil?
44
- end
39
+ def notify(message)
40
+ @slack.ping message
41
+ end
45
42
 
46
- return config[:webhook_url], options
43
+ def parse_config(config)
44
+ options = config.select do |name, value|
45
+ POSSIBLE_OPTIONS.include?(name) && !value.nil?
47
46
  end
48
47
 
48
+ [config[:webhook_url], options]
49
+ end
49
50
  end
50
51
  end
51
52
  end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ class UniformNotifier
4
+ class TerminalNotifier < Base
5
+ def self.active?
6
+ !!UniformNotifier.terminal_notifier
7
+ end
8
+
9
+ protected
10
+
11
+ def self._out_of_channel_notify(data)
12
+ unless defined?(::TerminalNotifier)
13
+ begin
14
+ require 'terminal-notifier'
15
+ rescue LoadError
16
+ raise NotificationError, 'You must install the terminal-notifier gem to use terminal_notifier: `gem install terminal-notifier`'
17
+ end
18
+ end
19
+
20
+ ::TerminalNotifier.notify(data[:body], title: data[:title])
21
+ end
22
+ end
23
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class UniformNotifier
2
- VERSION = "1.11.0"
4
+ VERSION = '1.12.0'
3
5
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class UniformNotifier
2
4
  class Xmpp < Base
3
5
  @receiver = nil
@@ -8,7 +10,7 @@ class UniformNotifier
8
10
  @xmpp
9
11
  end
10
12
 
11
- def self.setup_connection( xmpp_information )
13
+ def self.setup_connection(xmpp_information)
12
14
  return unless xmpp_information
13
15
 
14
16
  require 'xmpp4r'
@@ -23,36 +25,37 @@ class UniformNotifier
23
25
  connect if @stay_connected
24
26
  rescue LoadError
25
27
  @xmpp = nil
26
- raise NotificationError.new( 'You must install the xmpp4r gem to use XMPP notification: `gem install xmpp4r`' )
28
+ raise NotificationError, 'You must install the xmpp4r gem to use XMPP notification: `gem install xmpp4r`'
27
29
  end
28
30
 
29
31
  protected
30
32
 
31
- def self._out_of_channel_notify( data )
33
+ def self._out_of_channel_notify(data)
32
34
  message = data.values.compact.join("\n")
33
35
 
34
- notify( message )
36
+ notify(message)
35
37
  end
36
38
 
37
39
  private
38
- def self.connect
39
- jid = Jabber::JID.new( @account )
40
- @xmpp = Jabber::Client.new( jid )
41
- @xmpp.connect
42
- @xmpp.auth( @password )
43
- @xmpp.send( presence_status ) if @show_online_status
44
- end
45
-
46
- def self.notify( message )
47
- connect unless @stay_connected
48
- message = Jabber::Message.new( @receiver, message ).
49
- set_type( :normal ).
50
- set_subject( 'Uniform Notifier' )
51
- @xmpp.send( message )
52
- end
53
-
54
- def self.presence_status
55
- Jabber::Presence.new.set_status( "Uniform Notifier started on #{Time.now}" )
56
- end
40
+
41
+ def self.connect
42
+ jid = Jabber::JID.new(@account)
43
+ @xmpp = Jabber::Client.new(jid)
44
+ @xmpp.connect
45
+ @xmpp.auth(@password)
46
+ @xmpp.send(presence_status) if @show_online_status
47
+ end
48
+
49
+ def self.notify(message)
50
+ connect unless @stay_connected
51
+ message = Jabber::Message.new(@receiver, message)
52
+ .set_type(:normal)
53
+ .set_subject('Uniform Notifier')
54
+ @xmpp.send(message)
55
+ end
56
+
57
+ def self.presence_status
58
+ Jabber::Presence.new.set_status("Uniform Notifier started on #{Time.now}")
59
+ end
57
60
  end
58
61
  end
data/spec/spec_helper.rb CHANGED
@@ -1,7 +1,9 @@
1
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
1
+ # frozen_string_literal: true
2
2
 
3
- require "uniform_notifier"
4
- require "ruby-growl"
5
- require "xmpp4r"
6
- require "slack-notifier"
7
- require "rspec"
3
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
4
+
5
+ require 'uniform_notifier'
6
+ require 'ruby-growl'
7
+ require 'xmpp4r'
8
+ require 'slack-notifier'
9
+ require 'rspec'
@@ -1,25 +1,27 @@
1
- require "spec_helper"
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
2
4
 
3
5
  class Airbrake
4
6
  # mock Airbrake
5
7
  end
6
8
 
7
9
  RSpec.describe UniformNotifier::AirbrakeNotifier do
8
- it "should not notify airbrake" do
9
- expect(UniformNotifier::AirbrakeNotifier.out_of_channel_notify(:title => "notify airbrake")).to be_nil
10
+ it 'should not notify airbrake' do
11
+ expect(UniformNotifier::AirbrakeNotifier.out_of_channel_notify(title: 'notify airbrake')).to be_nil
10
12
  end
11
13
 
12
- it "should notify airbrake" do
13
- expect(Airbrake).to receive(:notify).with(UniformNotifier::Exception.new("notify airbrake"), {})
14
+ it 'should notify airbrake' do
15
+ expect(Airbrake).to receive(:notify).with(UniformNotifier::Exception.new('notify airbrake'), {})
14
16
 
15
17
  UniformNotifier.airbrake = true
16
- UniformNotifier::AirbrakeNotifier.out_of_channel_notify(:title => "notify airbrake")
18
+ UniformNotifier::AirbrakeNotifier.out_of_channel_notify(title: 'notify airbrake')
17
19
  end
18
20
 
19
- it "should notify airbrake" do
20
- expect(Airbrake).to receive(:notify).with(UniformNotifier::Exception.new("notify airbrake"), :foo => :bar)
21
+ it 'should notify airbrake' do
22
+ expect(Airbrake).to receive(:notify).with(UniformNotifier::Exception.new('notify airbrake'), foo: :bar)
21
23
 
22
- UniformNotifier.airbrake = { :foo => :bar }
23
- UniformNotifier::AirbrakeNotifier.out_of_channel_notify("notify airbrake")
24
+ UniformNotifier.airbrake = { foo: :bar }
25
+ UniformNotifier::AirbrakeNotifier.out_of_channel_notify('notify airbrake')
24
26
  end
25
27
  end
@@ -1,22 +1,24 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  RSpec.describe UniformNotifier::Base do
4
- context "#inline_channel_notify" do
6
+ context '#inline_channel_notify' do
5
7
  before do
6
8
  allow(UniformNotifier::Base).to receive(:active?).and_return(true)
7
9
  end
8
- it "should keep the compatibility" do
9
- expect(UniformNotifier::Base).to receive(:_inline_notify).once.with(:title => "something")
10
- UniformNotifier::Base.inline_notify("something")
10
+ it 'should keep the compatibility' do
11
+ expect(UniformNotifier::Base).to receive(:_inline_notify).once.with(title: 'something')
12
+ UniformNotifier::Base.inline_notify('something')
11
13
  end
12
14
  end
13
- context "#out_of_channel_notify" do
15
+ context '#out_of_channel_notify' do
14
16
  before do
15
17
  allow(UniformNotifier::Base).to receive(:active?).and_return(true)
16
18
  end
17
- it "should keep the compatibility" do
18
- expect(UniformNotifier::Base).to receive(:_out_of_channel_notify).once.with(:title => "something")
19
- UniformNotifier::Base.out_of_channel_notify("something")
19
+ it 'should keep the compatibility' do
20
+ expect(UniformNotifier::Base).to receive(:_out_of_channel_notify).once.with(title: 'something')
21
+ UniformNotifier::Base.out_of_channel_notify('something')
20
22
  end
21
23
  end
22
24
  end
@@ -1,4 +1,6 @@
1
- require "spec_helper"
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
2
4
 
3
5
  class Bugsnag
4
6
  # mock Bugsnag
@@ -6,51 +8,51 @@ end
6
8
 
7
9
  RSpec.describe UniformNotifier::BugsnagNotifier do
8
10
  let(:notification_data) { {} }
9
- it "should not notify bugsnag" do
11
+ it 'should not notify bugsnag' do
10
12
  expect(Bugsnag).not_to receive(:notify)
11
13
  UniformNotifier::BugsnagNotifier.out_of_channel_notify(notification_data)
12
14
  end
13
- context "with string notification" do
14
- let(:notification_data) { {:user => 'user', :title => 'notify bugsnag', :url => 'URL', body: 'something'} }
15
+ context 'with string notification' do
16
+ let(:notification_data) { { user: 'user', title: 'notify bugsnag', url: 'URL', body: 'something' } }
15
17
 
16
- it "should notify bugsnag" do
17
- expect(Bugsnag).to receive(:notify).with(UniformNotifier::Exception.new(notification_data[:title]), :grouping_hash => notification_data[:body], :notification => notification_data)
18
+ it 'should notify bugsnag' do
19
+ expect(Bugsnag).to receive(:notify).with(UniformNotifier::Exception.new(notification_data[:title]), grouping_hash: notification_data[:body], notification: notification_data)
18
20
 
19
21
  UniformNotifier.bugsnag = true
20
22
  UniformNotifier::BugsnagNotifier.out_of_channel_notify(notification_data)
21
23
  end
22
24
 
23
- it "should notify bugsnag with option" do
24
- expect(Bugsnag).to receive(:notify).with(UniformNotifier::Exception.new(notification_data[:title]), :foo => :bar, :grouping_hash => notification_data[:body], :notification => notification_data)
25
+ it 'should notify bugsnag with option' do
26
+ expect(Bugsnag).to receive(:notify).with(UniformNotifier::Exception.new(notification_data[:title]), foo: :bar, grouping_hash: notification_data[:body], notification: notification_data)
25
27
 
26
- UniformNotifier.bugsnag = { :foo => :bar }
28
+ UniformNotifier.bugsnag = { foo: :bar }
27
29
  UniformNotifier::BugsnagNotifier.out_of_channel_notify(notification_data)
28
30
  end
29
31
  end
30
- context "with hash notification" do
31
- let(:notification_data) { "notify bugsnag" }
32
+ context 'with hash notification' do
33
+ let(:notification_data) { 'notify bugsnag' }
32
34
 
33
- it "should notify bugsnag" do
34
- expect(Bugsnag).to receive(:notify).with(UniformNotifier::Exception.new("notify bugsnag"), :grouping_hash => "notify bugsnag", :notification => {:title => "notify bugsnag"})
35
+ it 'should notify bugsnag' do
36
+ expect(Bugsnag).to receive(:notify).with(UniformNotifier::Exception.new('notify bugsnag'), grouping_hash: 'notify bugsnag', notification: { title: 'notify bugsnag' })
35
37
 
36
38
  UniformNotifier.bugsnag = true
37
39
  UniformNotifier::BugsnagNotifier.out_of_channel_notify(notification_data)
38
40
  end
39
41
 
40
- it "should notify bugsnag with option" do
41
- expect(Bugsnag).to receive(:notify).with(UniformNotifier::Exception.new("notify bugsnag"), :foo => :bar, :grouping_hash => "notify bugsnag", :notification => {:title => "notify bugsnag"})
42
+ it 'should notify bugsnag with option' do
43
+ expect(Bugsnag).to receive(:notify).with(UniformNotifier::Exception.new('notify bugsnag'), foo: :bar, grouping_hash: 'notify bugsnag', notification: { title: 'notify bugsnag' })
42
44
 
43
- UniformNotifier.bugsnag = { :foo => :bar }
45
+ UniformNotifier.bugsnag = { foo: :bar }
44
46
  UniformNotifier::BugsnagNotifier.out_of_channel_notify(notification_data)
45
47
  end
46
48
  end
47
49
 
48
- it "should notify bugsnag with correct backtrace" do
50
+ it 'should notify bugsnag with correct backtrace' do
49
51
  expect(Bugsnag).to receive(:notify) do |error|
50
52
  expect(error).to be_a UniformNotifier::Exception
51
- expect(error.backtrace).to eq ["bugsnag spec test"]
53
+ expect(error.backtrace).to eq ['bugsnag spec test']
52
54
  end
53
55
  UniformNotifier.bugsnag = true
54
- UniformNotifier::BugsnagNotifier.out_of_channel_notify(backtrace: ["bugsnag spec test"])
56
+ UniformNotifier::BugsnagNotifier.out_of_channel_notify(backtrace: ['bugsnag spec test'])
55
57
  end
56
58
  end
@@ -1,21 +1,23 @@
1
- require "spec_helper"
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
2
4
 
3
5
  RSpec.describe UniformNotifier::CustomizedLogger do
4
- it "should not notify to customized logger" do
5
- expect(UniformNotifier::CustomizedLogger.out_of_channel_notify(:title => "notify rails logger")).to be_nil
6
+ it 'should not notify to customized logger' do
7
+ expect(UniformNotifier::CustomizedLogger.out_of_channel_notify(title: 'notify rails logger')).to be_nil
6
8
  end
7
9
 
8
- it "should notify to customized logger" do
9
- logger = File.open( 'test.log', 'a+' )
10
+ it 'should notify to customized logger' do
11
+ logger = File.open('test.log', 'a+')
10
12
  logger.sync = true
11
13
 
12
14
  now = Time.now
13
15
  allow(Time).to receive(:now).and_return(now)
14
16
  UniformNotifier.customized_logger = logger
15
- UniformNotifier::CustomizedLogger.out_of_channel_notify(:title => "notify rails logger")
17
+ UniformNotifier::CustomizedLogger.out_of_channel_notify(title: 'notify rails logger')
16
18
 
17
19
  logger.seek(0)
18
- expect(logger.read).to eq "#{now.strftime("%Y-%m-%d %H:%M:%S")}[WARN] notify rails logger"
20
+ expect(logger.read).to eq "#{now.strftime('%Y-%m-%d %H:%M:%S')}[WARN] notify rails logger"
19
21
 
20
22
  File.delete('test.log')
21
23
  end
@@ -1,13 +1,14 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  RSpec.describe UniformNotifier::Growl do
4
-
5
- it "should not notify growl" do
6
- expect(UniformNotifier::Growl.out_of_channel_notify(:title => 'notify growl')).to be_nil
6
+ it 'should not notify growl' do
7
+ expect(UniformNotifier::Growl.out_of_channel_notify(title: 'notify growl')).to be_nil
7
8
  end
8
9
 
9
- it "should notify growl without password" do
10
- growl = double('growl', :is_a? => true)
10
+ it 'should notify growl without password' do
11
+ growl = double('growl', is_a?: true)
11
12
  expect(Growl).to receive(:new).with('localhost', 'uniform_notifier').and_return(growl)
12
13
  expect(growl).to receive(:add_notification).with('uniform_notifier')
13
14
  expect(growl).to receive(:password=).with(nil)
@@ -15,42 +16,42 @@ RSpec.describe UniformNotifier::Growl do
15
16
  expect(growl).to receive(:notify).with('uniform_notifier', 'Uniform Notifier', 'notify growl without password').ordered
16
17
 
17
18
  UniformNotifier.growl = true
18
- UniformNotifier::Growl.out_of_channel_notify(:title => 'notify growl without password')
19
+ UniformNotifier::Growl.out_of_channel_notify(title: 'notify growl without password')
19
20
  end
20
21
 
21
- it "should notify growl with password" do
22
- growl = double('growl', :is_a? => true)
22
+ it 'should notify growl with password' do
23
+ growl = double('growl', is_a?: true)
23
24
  expect(Growl).to receive(:new).with('localhost', 'uniform_notifier').and_return(growl)
24
25
  expect(growl).to receive(:add_notification).with('uniform_notifier')
25
26
  expect(growl).to receive(:password=).with('123456')
26
27
  expect(growl).to receive(:notify).with('uniform_notifier', 'Uniform Notifier', 'Uniform Notifier Growl has been turned on').ordered
27
28
  expect(growl).to receive(:notify).with('uniform_notifier', 'Uniform Notifier', 'notify growl with password').ordered
28
29
 
29
- UniformNotifier.growl = { :password => '123456' }
30
- UniformNotifier::Growl.out_of_channel_notify(:title => 'notify growl with password')
30
+ UniformNotifier.growl = { password: '123456' }
31
+ UniformNotifier::Growl.out_of_channel_notify(title: 'notify growl with password')
31
32
  end
32
33
 
33
- it "should notify growl with host" do
34
- growl = double('growl', :is_a? => true)
34
+ it 'should notify growl with host' do
35
+ growl = double('growl', is_a?: true)
35
36
  expect(Growl).to receive(:new).with('10.10.156.17', 'uniform_notifier').and_return(growl)
36
37
  expect(growl).to receive(:add_notification).with('uniform_notifier')
37
38
  expect(growl).to receive(:password=).with('123456')
38
39
  expect(growl).to receive(:notify).with('uniform_notifier', 'Uniform Notifier', 'Uniform Notifier Growl has been turned on').ordered
39
40
  expect(growl).to receive(:notify).with('uniform_notifier', 'Uniform Notifier', 'notify growl with password').ordered
40
41
 
41
- UniformNotifier.growl = { :password => '123456', :host => '10.10.156.17' }
42
- UniformNotifier::Growl.out_of_channel_notify(:title => 'notify growl with password')
42
+ UniformNotifier.growl = { password: '123456', host: '10.10.156.17' }
43
+ UniformNotifier::Growl.out_of_channel_notify(title: 'notify growl with password')
43
44
  end
44
45
 
45
- it "should notify growl with quiet" do
46
- growl = double('growl', :is_a? => true)
46
+ it 'should notify growl with quiet' do
47
+ growl = double('growl', is_a?: true)
47
48
  expect(Growl).to receive(:new).with('localhost', 'uniform_notifier').and_return(growl)
48
49
  expect(growl).to receive(:add_notification).with('uniform_notifier')
49
50
  expect(growl).to receive(:password=).with('123456')
50
51
  expect(growl).not_to receive(:notify).with('uniform_notifier', 'Uniform Notifier', 'Uniform Notifier Growl has been turned on')
51
52
  expect(growl).to receive(:notify).with('uniform_notifier', 'Uniform Notifier', 'notify growl with password')
52
53
 
53
- UniformNotifier.growl = { :password => '123456', :quiet => true }
54
- UniformNotifier::Growl.out_of_channel_notify(:title => 'notify growl with password')
54
+ UniformNotifier.growl = { password: '123456', quiet: true }
55
+ UniformNotifier::Growl.out_of_channel_notify(title: 'notify growl with password')
55
56
  end
56
57
  end