rapns 3.1.0 → 3.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +6 -0
- data/README.md +26 -20
- data/config/database.yml +9 -0
- data/lib/generators/templates/add_gcm.rb +12 -12
- data/lib/rapns/apns/app.rb +2 -2
- data/lib/rapns/apns_feedback.rb +12 -0
- data/lib/rapns/daemon/apns/app_runner.rb +6 -17
- data/lib/rapns/daemon/apns/connection.rb +3 -3
- data/lib/rapns/daemon/apns/delivery.rb +2 -2
- data/lib/rapns/daemon/apns/delivery_handler.rb +19 -5
- data/lib/rapns/daemon/apns/feedback_receiver.rb +10 -6
- data/lib/rapns/daemon/app_runner.rb +14 -8
- data/lib/rapns/daemon/database_reconnectable.rb +6 -6
- data/lib/rapns/daemon/delivery_handler.rb +1 -1
- data/lib/rapns/daemon/feeder.rb +1 -1
- data/lib/rapns/daemon/gcm/delivery.rb +4 -4
- data/lib/rapns/daemon/interruptible_sleep.rb +2 -2
- data/lib/rapns/daemon/reflectable.rb +1 -1
- data/lib/rapns/daemon.rb +4 -40
- data/lib/rapns/logger.rb +66 -0
- data/lib/rapns/push.rb +6 -2
- data/lib/rapns/upgraded.rb +31 -0
- data/lib/rapns/version.rb +1 -1
- data/lib/rapns.rb +12 -0
- data/spec/acceptance_spec_helper.rb +2 -2
- data/spec/unit/apns/feedback_spec.rb +0 -3
- data/spec/unit/apns/notification_spec.rb +0 -3
- data/spec/unit/apns_feedback_spec.rb +16 -0
- data/spec/unit/app_spec.rb +1 -3
- data/spec/unit/daemon/apns/app_runner_spec.rb +9 -5
- data/spec/unit/daemon/apns/connection_spec.rb +2 -2
- data/spec/unit/daemon/apns/delivery_handler_spec.rb +14 -9
- data/spec/unit/daemon/apns/delivery_spec.rb +2 -3
- data/spec/unit/daemon/apns/feedback_receiver_spec.rb +6 -6
- data/spec/unit/daemon/app_runner_spec.rb +26 -6
- data/spec/unit/daemon/database_reconnectable_spec.rb +9 -7
- data/spec/unit/daemon/delivery_handler_shared.rb +3 -3
- data/spec/unit/daemon/feeder_spec.rb +2 -1
- data/spec/unit/daemon/gcm/app_runner_spec.rb +1 -1
- data/spec/unit/daemon/gcm/delivery_spec.rb +7 -7
- data/spec/unit/daemon/reflectable_spec.rb +2 -2
- data/spec/unit/daemon_spec.rb +25 -75
- data/spec/unit/embed_spec.rb +6 -0
- data/spec/unit/gcm/app_spec.rb +1 -2
- data/spec/unit/gcm/notification_spec.rb +0 -2
- data/spec/unit/{daemon/logger_spec.rb → logger_spec.rb} +19 -20
- data/spec/unit/notification_spec.rb +1 -3
- data/spec/unit/push_spec.rb +20 -9
- data/spec/unit/rapns_spec.rb +9 -0
- data/spec/unit/upgraded_spec.rb +46 -0
- data/spec/unit_spec_helper.rb +5 -2
- metadata +20 -6
- data/lib/rapns/daemon/logger.rb +0 -68
data/spec/unit/daemon_spec.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require 'unit_spec_helper'
|
2
2
|
|
3
3
|
describe Rapns::Daemon, "when starting" do
|
4
4
|
module Rails; end
|
@@ -7,41 +7,43 @@ describe Rapns::Daemon, "when starting" do
|
|
7
7
|
let(:password) { stub }
|
8
8
|
let(:config) { stub(:pid_file => nil, :airbrake_notify => false,
|
9
9
|
:foreground => true, :embedded => false, :push => false) }
|
10
|
-
let(:logger) { stub(:info => nil, :error => nil, :warn => nil) }
|
10
|
+
let(:logger) { stub(:logger, :info => nil, :error => nil, :warn => nil) }
|
11
11
|
|
12
12
|
before do
|
13
13
|
Rapns.stub(:config => config)
|
14
|
+
Rapns::Logger.stub(:new => logger)
|
14
15
|
Rapns::Daemon::Feeder.stub(:start)
|
15
|
-
Rapns::Daemon::Logger.stub(:new).and_return(logger)
|
16
16
|
Rapns::Daemon::AppRunner.stub(:sync => nil, :stop => nil)
|
17
17
|
Rapns::Daemon.stub(:daemonize => nil, :reconnect_database => nil, :exit => nil, :puts => nil)
|
18
18
|
File.stub(:open)
|
19
19
|
Rails.stub(:root).and_return("/rails_root")
|
20
20
|
end
|
21
21
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
22
|
+
unless defined?(JRUBY_VERSION)
|
23
|
+
it "forks into a daemon if the foreground option is false" do
|
24
|
+
config.stub(:foreground => false)
|
25
|
+
ActiveRecord::Base.stub(:establish_connection)
|
26
|
+
Rapns::Daemon.should_receive(:daemonize)
|
27
|
+
Rapns::Daemon.start
|
28
|
+
end
|
28
29
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
30
|
+
it "does not fork into a daemon if the foreground option is true" do
|
31
|
+
config.stub(:foreground => true)
|
32
|
+
Rapns::Daemon.should_not_receive(:daemonize)
|
33
|
+
Rapns::Daemon.start
|
34
|
+
end
|
34
35
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
36
|
+
it "does not fork into a daemon if the push option is true" do
|
37
|
+
config.stub(:push => true)
|
38
|
+
Rapns::Daemon.should_not_receive(:daemonize)
|
39
|
+
Rapns::Daemon.start
|
40
|
+
end
|
40
41
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
42
|
+
it "does not fork into a daemon if the embedded option is true" do
|
43
|
+
config.stub(:embedded => true)
|
44
|
+
Rapns::Daemon.should_not_receive(:daemonize)
|
45
|
+
Rapns::Daemon.start
|
46
|
+
end
|
45
47
|
end
|
46
48
|
|
47
49
|
it 'sets up setup signal traps' do
|
@@ -55,12 +57,6 @@ describe Rapns::Daemon, "when starting" do
|
|
55
57
|
Rapns::Daemon.start
|
56
58
|
end
|
57
59
|
|
58
|
-
it 'does not setup signal traps when in push mode' do
|
59
|
-
config.stub(:push => true)
|
60
|
-
Rapns::Daemon.should_not_receive(:setup_signal_traps)
|
61
|
-
Rapns::Daemon.start
|
62
|
-
end
|
63
|
-
|
64
60
|
it "writes the process ID to the PID file" do
|
65
61
|
Rapns::Daemon.should_receive(:write_pid_file)
|
66
62
|
Rapns::Daemon.start
|
@@ -82,52 +78,6 @@ describe Rapns::Daemon, "when starting" do
|
|
82
78
|
Rapns::Daemon::AppRunner.should_receive(:sync)
|
83
79
|
Rapns::Daemon.start
|
84
80
|
end
|
85
|
-
|
86
|
-
it "sets up the logger" do
|
87
|
-
config.stub(:airbrake_notify => true)
|
88
|
-
Rapns::Daemon::Logger.should_receive(:new).with(:foreground => true, :airbrake_notify => true)
|
89
|
-
Rapns::Daemon.start
|
90
|
-
end
|
91
|
-
|
92
|
-
it "makes the logger accessible" do
|
93
|
-
Rapns::Daemon.start
|
94
|
-
Rapns::Daemon.logger.should == logger
|
95
|
-
end
|
96
|
-
|
97
|
-
it 'prints a warning if there are no apps' do
|
98
|
-
Rapns::App.stub(:count => 0)
|
99
|
-
logger.should_receive(:warn).any_number_of_times
|
100
|
-
Rapns::Daemon.start
|
101
|
-
end
|
102
|
-
|
103
|
-
it 'prints a warning exists if rapns has not been upgraded' do
|
104
|
-
Rapns::App.stub(:count).and_raise(ActiveRecord::StatementInvalid)
|
105
|
-
Rapns::Daemon.should_receive(:puts).any_number_of_times
|
106
|
-
Rapns::Daemon.should_receive(:exit).with(1)
|
107
|
-
Rapns::Daemon.start
|
108
|
-
end
|
109
|
-
|
110
|
-
it 'does not exit if Rapns has not been upgraded and is embedded' do
|
111
|
-
config.stub(:embedded => true)
|
112
|
-
Rapns::App.stub(:count).and_raise(ActiveRecord::StatementInvalid)
|
113
|
-
Rapns::Daemon.should_receive(:puts).any_number_of_times
|
114
|
-
Rapns::Daemon.should_not_receive(:exit)
|
115
|
-
Rapns::Daemon.start
|
116
|
-
end
|
117
|
-
|
118
|
-
it 'does not exit if Rapns has not been upgraded and is in push mode' do
|
119
|
-
config.stub(:push => true)
|
120
|
-
Rapns::App.stub(:count).and_raise(ActiveRecord::StatementInvalid)
|
121
|
-
Rapns::Daemon.should_receive(:puts).any_number_of_times
|
122
|
-
Rapns::Daemon.should_not_receive(:exit)
|
123
|
-
Rapns::Daemon.start
|
124
|
-
end
|
125
|
-
|
126
|
-
it 'warns if rapns.yml still exists' do
|
127
|
-
File.should_receive(:exists?).with('/rails_root/config/rapns/rapns.yml').and_return(true)
|
128
|
-
logger.should_receive(:warn).with("Since 2.0.0 rapns uses command-line options and a Ruby based configuration file.\nPlease run 'rails g rapns' to generate a new configuration file into config/initializers.\nRemove config/rapns/rapns.yml to avoid this warning.\n")
|
129
|
-
Rapns::Daemon.start
|
130
|
-
end
|
131
81
|
end
|
132
82
|
|
133
83
|
describe Rapns::Daemon, "when being shutdown" do
|
data/spec/unit/embed_spec.rb
CHANGED
@@ -23,6 +23,8 @@ describe Rapns, 'embed' do
|
|
23
23
|
end
|
24
24
|
|
25
25
|
describe Rapns, 'shutdown' do
|
26
|
+
before { Rapns.config.embedded = true }
|
27
|
+
|
26
28
|
it 'shuts down the daemon' do
|
27
29
|
Rapns::Daemon.should_receive(:shutdown)
|
28
30
|
Rapns.shutdown
|
@@ -30,6 +32,8 @@ describe Rapns, 'shutdown' do
|
|
30
32
|
end
|
31
33
|
|
32
34
|
describe Rapns, 'sync' do
|
35
|
+
before { Rapns.config.embedded = true }
|
36
|
+
|
33
37
|
it 'syncs the AppRunner' do
|
34
38
|
Rapns::Daemon::AppRunner.should_receive(:sync)
|
35
39
|
Rapns.sync
|
@@ -37,6 +41,8 @@ describe Rapns, 'sync' do
|
|
37
41
|
end
|
38
42
|
|
39
43
|
describe Rapns, 'debug' do
|
44
|
+
before { Rapns.config.embedded = true }
|
45
|
+
|
40
46
|
it 'debugs the AppRunner' do
|
41
47
|
Rapns::Daemon::AppRunner.should_receive(:debug)
|
42
48
|
Rapns.debug
|
data/spec/unit/gcm/app_spec.rb
CHANGED
@@ -10,8 +10,6 @@ describe Rapns::Gcm::Notification do
|
|
10
10
|
let(:data_setter) { 'data=' }
|
11
11
|
let(:data_getter) { 'data' }
|
12
12
|
|
13
|
-
it { should validate_presence_of :registration_ids }
|
14
|
-
|
15
13
|
it "has a 'data' payload limit of 4096 bytes" do
|
16
14
|
notification.data = { :key => "a" * 4096 }
|
17
15
|
notification.valid?.should be_false
|
@@ -16,11 +16,11 @@ module HoptoadNotifier
|
|
16
16
|
end
|
17
17
|
|
18
18
|
module Airbrake
|
19
|
-
def self.
|
19
|
+
def self.notify_or_ignore(e)
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
23
|
-
describe Rapns::
|
23
|
+
describe Rapns::Logger do
|
24
24
|
let(:log) { stub(:sync= => true) }
|
25
25
|
let(:config) { stub(:airbrake_notify => true) }
|
26
26
|
|
@@ -29,7 +29,6 @@ describe Rapns::Daemon::Logger do
|
|
29
29
|
@buffered_logger = mock("BufferedLogger", :info => nil, :error => nil, :level => 0, :auto_flushing => 1, :auto_flushing= => nil)
|
30
30
|
Rails.logger = @buffered_logger
|
31
31
|
ActiveSupport::BufferedLogger.stub(:new).and_return(@buffered_logger)
|
32
|
-
Rapns::Daemon.stub(:config => config)
|
33
32
|
File.stub(:open => log)
|
34
33
|
STDERR.stub(:puts)
|
35
34
|
end
|
@@ -38,32 +37,32 @@ describe Rapns::Daemon::Logger do
|
|
38
37
|
File.stub(:open).and_raise(Errno::ENOENT)
|
39
38
|
STDERR.should_receive(:puts).with(/No such file or directory/)
|
40
39
|
STDERR.should_receive(:puts).with(/Logging disabled/)
|
41
|
-
Rapns::
|
40
|
+
Rapns::Logger.new(:foreground => true)
|
42
41
|
end
|
43
42
|
|
44
43
|
it "should open the a log file in the Rails log directory" do
|
45
44
|
File.should_receive(:open).with('/rails_root/log/rapns.log', 'a')
|
46
|
-
Rapns::
|
45
|
+
Rapns::Logger.new(:foreground => true)
|
47
46
|
end
|
48
47
|
|
49
48
|
it 'sets sync mode on the log descriptor' do
|
50
49
|
log.should_receive(:sync=).with(true)
|
51
|
-
Rapns::
|
50
|
+
Rapns::Logger.new(:foreground => true)
|
52
51
|
end
|
53
52
|
|
54
53
|
it 'instantiates the BufferedLogger' do
|
55
54
|
ActiveSupport::BufferedLogger.should_receive(:new).with(log, Rails.logger.level)
|
56
|
-
Rapns::
|
55
|
+
Rapns::Logger.new(:foreground => true)
|
57
56
|
end
|
58
57
|
|
59
58
|
it "should print out the msg if running in the foreground" do
|
60
|
-
logger = Rapns::
|
59
|
+
logger = Rapns::Logger.new(:foreground => true)
|
61
60
|
STDOUT.should_receive(:puts).with(/hi mom/)
|
62
61
|
logger.info("hi mom")
|
63
62
|
end
|
64
63
|
|
65
64
|
it "should not print out the msg if not running in the foreground" do
|
66
|
-
logger = Rapns::
|
65
|
+
logger = Rapns::Logger.new(:foreground => false)
|
67
66
|
STDOUT.should_not_receive(:puts).with(/hi mom/)
|
68
67
|
logger.info("hi mom")
|
69
68
|
end
|
@@ -71,19 +70,19 @@ describe Rapns::Daemon::Logger do
|
|
71
70
|
it "should prefix log lines with the current time" do
|
72
71
|
now = Time.now
|
73
72
|
Time.stub(:now).and_return(now)
|
74
|
-
logger = Rapns::
|
73
|
+
logger = Rapns::Logger.new(:foreground => false)
|
75
74
|
@buffered_logger.should_receive(:info).with(/#{Regexp.escape("[#{now.to_s(:db)}]")}/)
|
76
75
|
logger.info("blah")
|
77
76
|
end
|
78
77
|
|
79
78
|
it "should prefix error logs with the ERROR label" do
|
80
|
-
logger = Rapns::
|
79
|
+
logger = Rapns::Logger.new(:foreground => false)
|
81
80
|
@buffered_logger.should_receive(:error).with(/#{Regexp.escape("[ERROR]")}/)
|
82
81
|
logger.error("eeek")
|
83
82
|
end
|
84
83
|
|
85
84
|
it "should prefix warn logs with the WARNING label" do
|
86
|
-
logger = Rapns::
|
85
|
+
logger = Rapns::Logger.new(:foreground => false)
|
87
86
|
@buffered_logger.should_receive(:warn).with(/#{Regexp.escape("[WARNING]")}/)
|
88
87
|
logger.warn("eeek")
|
89
88
|
end
|
@@ -91,7 +90,7 @@ describe Rapns::Daemon::Logger do
|
|
91
90
|
it "should handle an Exception instance" do
|
92
91
|
e = RuntimeError.new("hi mom")
|
93
92
|
e.stub(:backtrace => [])
|
94
|
-
logger = Rapns::
|
93
|
+
logger = Rapns::Logger.new(:foreground => false)
|
95
94
|
@buffered_logger.should_receive(:error).with(/RuntimeError, hi mom/)
|
96
95
|
logger.error(e)
|
97
96
|
end
|
@@ -99,7 +98,7 @@ describe Rapns::Daemon::Logger do
|
|
99
98
|
it "should notify Airbrake of the exception" do
|
100
99
|
e = RuntimeError.new("hi mom")
|
101
100
|
e.stub(:backtrace => [])
|
102
|
-
logger = Rapns::
|
101
|
+
logger = Rapns::Logger.new(:foreground => false, :airbrake_notify => true)
|
103
102
|
Airbrake.should_receive(:notify_or_ignore).with(e)
|
104
103
|
logger.error(e)
|
105
104
|
end
|
@@ -111,7 +110,7 @@ describe Rapns::Daemon::Logger do
|
|
111
110
|
|
112
111
|
after do
|
113
112
|
module Airbrake
|
114
|
-
def self.
|
113
|
+
def self.notify_or_ignore(e)
|
115
114
|
end
|
116
115
|
end
|
117
116
|
end
|
@@ -119,7 +118,7 @@ describe Rapns::Daemon::Logger do
|
|
119
118
|
it "should notify using HoptoadNotifier" do
|
120
119
|
e = RuntimeError.new("hi mom")
|
121
120
|
e.stub(:backtrace => [])
|
122
|
-
logger = Rapns::
|
121
|
+
logger = Rapns::Logger.new(:foreground => false, :airbrake_notify => true)
|
123
122
|
HoptoadNotifier.should_receive(:notify_or_ignore).with(e)
|
124
123
|
logger.error(e)
|
125
124
|
end
|
@@ -128,7 +127,7 @@ describe Rapns::Daemon::Logger do
|
|
128
127
|
it "should not notify Airbrake of the exception if the airbrake_notify option is false" do
|
129
128
|
e = RuntimeError.new("hi mom")
|
130
129
|
e.stub(:backtrace => [])
|
131
|
-
logger = Rapns::
|
130
|
+
logger = Rapns::Logger.new(:foreground => false, :airbrake_notify => false)
|
132
131
|
Airbrake.should_not_receive(:notify_or_ignore).with(e)
|
133
132
|
logger.error(e)
|
134
133
|
end
|
@@ -136,13 +135,13 @@ describe Rapns::Daemon::Logger do
|
|
136
135
|
it "should not notify Airbrake if explicitly disabled in the call to error" do
|
137
136
|
e = RuntimeError.new("hi mom")
|
138
137
|
e.stub(:backtrace => [])
|
139
|
-
logger = Rapns::
|
138
|
+
logger = Rapns::Logger.new(:foreground => false, :airbrake_notify => true)
|
140
139
|
Airbrake.should_not_receive(:notify_or_ignore).with(e)
|
141
140
|
logger.error(e, :airbrake_notify => false)
|
142
141
|
end
|
143
142
|
|
144
143
|
it "should not attempt to notify Airbrake of the error is not an Exception" do
|
145
|
-
logger = Rapns::
|
144
|
+
logger = Rapns::Logger.new(:foreground => false)
|
146
145
|
Airbrake.should_not_receive(:notify_or_ignore)
|
147
146
|
logger.error("string error message")
|
148
147
|
end
|
@@ -150,7 +149,7 @@ describe Rapns::Daemon::Logger do
|
|
150
149
|
it 'defaults auto_flushing to true if the Rails logger does not respond to auto_flushing' do
|
151
150
|
rails_logger = mock(:info => nil, :error => nil, :level => 0)
|
152
151
|
Rails.logger = rails_logger
|
153
|
-
logger = Rapns::
|
152
|
+
logger = Rapns::Logger.new({})
|
154
153
|
@buffered_logger.auto_flushing.should be_true
|
155
154
|
end
|
156
155
|
end
|
data/spec/unit/push_spec.rb
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
require 'unit_spec_helper'
|
2
2
|
|
3
3
|
describe Rapns, 'push' do
|
4
|
-
|
5
|
-
Rapns::
|
6
|
-
Rapns::Daemon.stub(:
|
4
|
+
before do
|
5
|
+
Rapns::Upgraded.stub(:check => nil)
|
6
|
+
Rapns::Daemon::AppRunner.stub(:sync => nil, :wait => nil)
|
7
|
+
Rapns::Daemon::Feeder.stub(:start => nil)
|
7
8
|
end
|
8
9
|
|
9
10
|
it 'sets the push config option to true' do
|
@@ -11,18 +12,28 @@ describe Rapns, 'push' do
|
|
11
12
|
Rapns.config.push.should be_true
|
12
13
|
end
|
13
14
|
|
14
|
-
it '
|
15
|
-
Rapns::Daemon.should_receive(:
|
15
|
+
it 'syncs the app runner' do
|
16
|
+
Rapns::Daemon::AppRunner.should_receive(:sync)
|
16
17
|
Rapns.push
|
17
18
|
end
|
18
19
|
|
19
|
-
it '
|
20
|
-
Rapns::Daemon.should_receive(:
|
20
|
+
it 'starts the feeder' do
|
21
|
+
Rapns::Daemon::Feeder.should_receive(:start)
|
22
|
+
Rapns.push
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'waits on the app runner' do
|
26
|
+
Rapns::Daemon::AppRunner.should_receive(:wait)
|
27
|
+
Rapns.push
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'stops on the app runner' do
|
31
|
+
Rapns::Daemon::AppRunner.should_receive(:stop)
|
21
32
|
Rapns.push
|
22
33
|
end
|
23
34
|
|
24
35
|
it 'overrides the default config options with those given as a hash' do
|
25
|
-
Rapns.config.
|
26
|
-
expect { Rapns.push(:
|
36
|
+
Rapns.config.batch_size = 20
|
37
|
+
expect { Rapns.push(:batch_size => 10) }.to change(Rapns.config, :batch_size).to(10)
|
27
38
|
end
|
28
39
|
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
require 'unit_spec_helper'
|
2
|
+
|
3
|
+
describe Rapns do
|
4
|
+
it "lazy initializes the logger" do
|
5
|
+
Rapns.config.stub(:airbrake_notify => true, :foreground => true)
|
6
|
+
Rapns::Logger.should_receive(:new).with(:foreground => true, :airbrake_notify => true)
|
7
|
+
Rapns.logger
|
8
|
+
end
|
9
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require 'unit_spec_helper'
|
2
|
+
|
3
|
+
describe Rapns::Upgraded do
|
4
|
+
let(:logger) { stub(:logger, :warn => nil) }
|
5
|
+
let(:config) { stub(:config) }
|
6
|
+
|
7
|
+
before do
|
8
|
+
Rails.stub(:root).and_return('/rails_root')
|
9
|
+
Rapns.stub(:logger => logger, :config => config)
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'prints a warning if there are no apps' do
|
13
|
+
Rapns::App.stub(:count => 0)
|
14
|
+
Rapns.logger.should_receive(:warn).any_number_of_times
|
15
|
+
Rapns::Upgraded.check(:exit => false)
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'prints a warning and exists if rapns has not been upgraded' do
|
19
|
+
Rapns::App.stub(:count).and_raise(ActiveRecord::StatementInvalid)
|
20
|
+
Rapns::Upgraded.should_receive(:puts).any_number_of_times
|
21
|
+
Rapns::Upgraded.should_receive(:exit).with(1)
|
22
|
+
Rapns::Upgraded.check(:exit => true)
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'does not exit if Rapns has not been upgraded and :exit is false' do
|
26
|
+
Rapns.config.stub(:embedded => true)
|
27
|
+
Rapns::App.stub(:count).and_raise(ActiveRecord::StatementInvalid)
|
28
|
+
Rapns::Upgraded.should_receive(:puts).any_number_of_times
|
29
|
+
Rapns::Upgraded.should_not_receive(:exit)
|
30
|
+
Rapns::Upgraded.check(:exit => false)
|
31
|
+
end
|
32
|
+
|
33
|
+
it 'does not exit if Rapns has not been upgraded and is in push mode' do
|
34
|
+
Rapns.config.stub(:push => true)
|
35
|
+
Rapns::App.stub(:count).and_raise(ActiveRecord::StatementInvalid)
|
36
|
+
Rapns::Upgraded.should_receive(:puts).any_number_of_times
|
37
|
+
Rapns::Upgraded.should_not_receive(:exit)
|
38
|
+
Rapns::Upgraded.check(:exit => false)
|
39
|
+
end
|
40
|
+
|
41
|
+
it 'warns if rapns.yml still exists' do
|
42
|
+
File.should_receive(:exists?).with('/rails_root/config/rapns/rapns.yml').and_return(true)
|
43
|
+
Rapns.logger.should_receive(:warn).with("Since 2.0.0 rapns uses command-line options and a Ruby based configuration file.\nPlease run 'rails g rapns' to generate a new configuration file into config/initializers.\nRemove config/rapns/rapns.yml to avoid this warning.\n")
|
44
|
+
Rapns::Upgraded.check(:exit => false)
|
45
|
+
end
|
46
|
+
end
|
data/spec/unit_spec_helper.rb
CHANGED
@@ -49,7 +49,6 @@ end
|
|
49
49
|
require 'bundler'
|
50
50
|
Bundler.require(:default)
|
51
51
|
|
52
|
-
require 'shoulda'
|
53
52
|
require 'database_cleaner'
|
54
53
|
|
55
54
|
DatabaseCleaner.strategy = :truncation
|
@@ -69,7 +68,11 @@ RSpec.configure do |config|
|
|
69
68
|
# PerfTools::CpuProfiler.stop
|
70
69
|
# end
|
71
70
|
|
72
|
-
config.before(:each)
|
71
|
+
config.before(:each) do
|
72
|
+
DatabaseCleaner.clean
|
73
|
+
end
|
74
|
+
|
75
|
+
config.after(:each) { Rapns.logger = nil }
|
73
76
|
end
|
74
77
|
|
75
78
|
# a test certificate that contains both an X509 certificate and
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rapns
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-04-02 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: multi_json
|
@@ -69,6 +69,7 @@ files:
|
|
69
69
|
- lib/rapns/apns/feedback.rb
|
70
70
|
- lib/rapns/apns/notification.rb
|
71
71
|
- lib/rapns/apns/required_fields_validator.rb
|
72
|
+
- lib/rapns/apns_feedback.rb
|
72
73
|
- lib/rapns/app.rb
|
73
74
|
- lib/rapns/configuration.rb
|
74
75
|
- lib/rapns/daemon.rb
|
@@ -91,7 +92,6 @@ files:
|
|
91
92
|
- lib/rapns/daemon/gcm/delivery.rb
|
92
93
|
- lib/rapns/daemon/gcm/delivery_handler.rb
|
93
94
|
- lib/rapns/daemon/interruptible_sleep.rb
|
94
|
-
- lib/rapns/daemon/logger.rb
|
95
95
|
- lib/rapns/daemon/reflectable.rb
|
96
96
|
- lib/rapns/deprecatable.rb
|
97
97
|
- lib/rapns/deprecation.rb
|
@@ -101,6 +101,7 @@ files:
|
|
101
101
|
- lib/rapns/gcm/notification.rb
|
102
102
|
- lib/rapns/gcm/payload_data_size_validator.rb
|
103
103
|
- lib/rapns/gcm/registration_ids_count_validator.rb
|
104
|
+
- lib/rapns/logger.rb
|
104
105
|
- lib/rapns/multi_json_helper.rb
|
105
106
|
- lib/rapns/notification.rb
|
106
107
|
- lib/rapns/patches.rb
|
@@ -108,6 +109,7 @@ files:
|
|
108
109
|
- lib/rapns/patches/rails/3.1.1/postgresql_adapter.rb
|
109
110
|
- lib/rapns/push.rb
|
110
111
|
- lib/rapns/reflection.rb
|
112
|
+
- lib/rapns/upgraded.rb
|
111
113
|
- lib/rapns/version.rb
|
112
114
|
- lib/tasks/cane.rake
|
113
115
|
- lib/tasks/test.rake
|
@@ -121,6 +123,7 @@ files:
|
|
121
123
|
- spec/unit/apns/app_spec.rb
|
122
124
|
- spec/unit/apns/feedback_spec.rb
|
123
125
|
- spec/unit/apns/notification_spec.rb
|
126
|
+
- spec/unit/apns_feedback_spec.rb
|
124
127
|
- spec/unit/app_spec.rb
|
125
128
|
- spec/unit/configuration_spec.rb
|
126
129
|
- spec/unit/daemon/apns/app_runner_spec.rb
|
@@ -140,7 +143,6 @@ files:
|
|
140
143
|
- spec/unit/daemon/gcm/delivery_handler_spec.rb
|
141
144
|
- spec/unit/daemon/gcm/delivery_spec.rb
|
142
145
|
- spec/unit/daemon/interruptible_sleep_spec.rb
|
143
|
-
- spec/unit/daemon/logger_spec.rb
|
144
146
|
- spec/unit/daemon/reflectable_spec.rb
|
145
147
|
- spec/unit/daemon_spec.rb
|
146
148
|
- spec/unit/deprecatable_spec.rb
|
@@ -148,10 +150,13 @@ files:
|
|
148
150
|
- spec/unit/embed_spec.rb
|
149
151
|
- spec/unit/gcm/app_spec.rb
|
150
152
|
- spec/unit/gcm/notification_spec.rb
|
153
|
+
- spec/unit/logger_spec.rb
|
151
154
|
- spec/unit/notification_shared.rb
|
152
155
|
- spec/unit/notification_spec.rb
|
153
156
|
- spec/unit/push_spec.rb
|
157
|
+
- spec/unit/rapns_spec.rb
|
154
158
|
- spec/unit/reflection_spec.rb
|
159
|
+
- spec/unit/upgraded_spec.rb
|
155
160
|
- spec/unit_spec_helper.rb
|
156
161
|
- bin/rapns
|
157
162
|
homepage: https://github.com/ileitch/rapns
|
@@ -166,15 +171,21 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
166
171
|
- - ! '>='
|
167
172
|
- !ruby/object:Gem::Version
|
168
173
|
version: '0'
|
174
|
+
segments:
|
175
|
+
- 0
|
176
|
+
hash: -3688702007568166292
|
169
177
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
170
178
|
none: false
|
171
179
|
requirements:
|
172
180
|
- - ! '>='
|
173
181
|
- !ruby/object:Gem::Version
|
174
182
|
version: '0'
|
183
|
+
segments:
|
184
|
+
- 0
|
185
|
+
hash: -3688702007568166292
|
175
186
|
requirements: []
|
176
187
|
rubyforge_project:
|
177
|
-
rubygems_version: 1.8.
|
188
|
+
rubygems_version: 1.8.25
|
178
189
|
signing_key:
|
179
190
|
specification_version: 3
|
180
191
|
summary: Professional grade APNs and GCM for Ruby
|
@@ -189,6 +200,7 @@ test_files:
|
|
189
200
|
- spec/unit/apns/app_spec.rb
|
190
201
|
- spec/unit/apns/feedback_spec.rb
|
191
202
|
- spec/unit/apns/notification_spec.rb
|
203
|
+
- spec/unit/apns_feedback_spec.rb
|
192
204
|
- spec/unit/app_spec.rb
|
193
205
|
- spec/unit/configuration_spec.rb
|
194
206
|
- spec/unit/daemon/apns/app_runner_spec.rb
|
@@ -208,7 +220,6 @@ test_files:
|
|
208
220
|
- spec/unit/daemon/gcm/delivery_handler_spec.rb
|
209
221
|
- spec/unit/daemon/gcm/delivery_spec.rb
|
210
222
|
- spec/unit/daemon/interruptible_sleep_spec.rb
|
211
|
-
- spec/unit/daemon/logger_spec.rb
|
212
223
|
- spec/unit/daemon/reflectable_spec.rb
|
213
224
|
- spec/unit/daemon_spec.rb
|
214
225
|
- spec/unit/deprecatable_spec.rb
|
@@ -216,8 +227,11 @@ test_files:
|
|
216
227
|
- spec/unit/embed_spec.rb
|
217
228
|
- spec/unit/gcm/app_spec.rb
|
218
229
|
- spec/unit/gcm/notification_spec.rb
|
230
|
+
- spec/unit/logger_spec.rb
|
219
231
|
- spec/unit/notification_shared.rb
|
220
232
|
- spec/unit/notification_spec.rb
|
221
233
|
- spec/unit/push_spec.rb
|
234
|
+
- spec/unit/rapns_spec.rb
|
222
235
|
- spec/unit/reflection_spec.rb
|
236
|
+
- spec/unit/upgraded_spec.rb
|
223
237
|
- spec/unit_spec_helper.rb
|
data/lib/rapns/daemon/logger.rb
DELETED
@@ -1,68 +0,0 @@
|
|
1
|
-
module Rapns
|
2
|
-
module Daemon
|
3
|
-
class Logger
|
4
|
-
def initialize(options)
|
5
|
-
@options = options
|
6
|
-
|
7
|
-
begin
|
8
|
-
log = File.open(File.join(Rails.root, 'log', 'rapns.log'), 'a')
|
9
|
-
log.sync = true
|
10
|
-
@logger = ActiveSupport::BufferedLogger.new(log, Rails.logger.level)
|
11
|
-
@logger.auto_flushing = Rails.logger.respond_to?(:auto_flushing) ? Rails.logger.auto_flushing : true
|
12
|
-
rescue Errno::ENOENT, Errno::EPERM => e
|
13
|
-
@logger = nil
|
14
|
-
error(e)
|
15
|
-
error('Logging disabled.')
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
def info(msg)
|
20
|
-
log(:info, msg)
|
21
|
-
end
|
22
|
-
|
23
|
-
def error(msg, options = {})
|
24
|
-
airbrake_notify(msg) if notify_via_airbrake?(msg, options)
|
25
|
-
log(:error, msg, 'ERROR', STDERR)
|
26
|
-
end
|
27
|
-
|
28
|
-
def warn(msg)
|
29
|
-
log(:warn, msg, 'WARNING', STDERR)
|
30
|
-
end
|
31
|
-
|
32
|
-
private
|
33
|
-
|
34
|
-
def log(where, msg, prefix = nil, io = STDOUT)
|
35
|
-
if msg.is_a?(Exception)
|
36
|
-
formatted_backtrace = msg.backtrace.join("\n")
|
37
|
-
msg = "#{msg.class.name}, #{msg.message}\n#{formatted_backtrace}"
|
38
|
-
end
|
39
|
-
|
40
|
-
formatted_msg = "[#{Time.now.to_s(:db)}] "
|
41
|
-
formatted_msg << "[#{prefix}] " if prefix
|
42
|
-
formatted_msg << msg
|
43
|
-
|
44
|
-
if io == STDERR
|
45
|
-
io.puts formatted_msg
|
46
|
-
elsif @options[:foreground]
|
47
|
-
io.puts formatted_msg
|
48
|
-
end
|
49
|
-
|
50
|
-
@logger.send(where, formatted_msg) if @logger
|
51
|
-
end
|
52
|
-
|
53
|
-
def airbrake_notify(e)
|
54
|
-
return unless @options[:airbrake_notify] == true
|
55
|
-
|
56
|
-
if defined?(Airbrake)
|
57
|
-
Airbrake.notify_or_ignore(e)
|
58
|
-
elsif defined?(HoptoadNotifier)
|
59
|
-
HoptoadNotifier.notify_or_ignore(e)
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
|
-
def notify_via_airbrake?(msg, options)
|
64
|
-
msg.is_a?(Exception) && options[:airbrake_notify] != false
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|