rapns 2.0.0rc1 → 2.0.0rc2

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/README.md CHANGED
@@ -47,17 +47,17 @@ Generate the migration, rapns.yml and migrate:
47
47
  app = Rapns::App.new
48
48
  app.key = "my_app"
49
49
  app.certificate = File.read("/path/to/development.pem")
50
+ app.environment = "development"
50
51
  app.password = "certificate password"
51
52
  app.connections = 1
52
53
  app.save!
53
54
 
54
55
  * `key` is a symbolic name to tie this app to notifications.
55
56
  * `certificate` is the contents of your PEM certificate, NOT its path on disk.
57
+ * `environment` the certificate type, either `development` or `production`.
56
58
  * `password` should be left blank if you did not password protect your certificate.
57
59
  * `connections` (default: 1) the number of connections to keep open to the APNs. Consider increasing this if you are sending a large number of notifications to this app.
58
60
 
59
- The APNs environment is automatically detected from the app certificate, you do not need to configure push and feedback hosts.
60
-
61
61
  ## Starting the rapns Daemon
62
62
 
63
63
  cd /path/to/rails/app
@@ -2,6 +2,7 @@ class CreateRapnsApps < ActiveRecord::Migration
2
2
  def self.up
3
3
  create_table :rapns_apps do |t|
4
4
  t.string :key, :null => false
5
+ t.string :environment, :null => false
5
6
  t.text :certificate, :null => false
6
7
  t.string :password, :null => true
7
8
  t.integer :connections, :null => false, :default => 1
data/lib/rapns/app.rb CHANGED
@@ -3,6 +3,7 @@ module Rapns
3
3
  self.table_name = 'rapns_apps'
4
4
 
5
5
  validates :key, :presence => true, :uniqueness => true
6
+ validates :environment, :presence => true, :inclusion => { :in => %w(development production) }
6
7
  validates :certificate, :presence => true
7
8
  validates_numericality_of :connections, :greater_than => 0, :only_integer => true
8
9
  end
@@ -38,10 +38,8 @@ module Rapns
38
38
  if @all[app.key]
39
39
  @all[app.key].sync(app)
40
40
  else
41
- environment = detect_environment(app)
42
- next unless environment
43
- push_host, push_port = HOSTS[environment][:push]
44
- feedback_host, feedback_port = HOSTS[environment][:feedback]
41
+ push_host, push_port = HOSTS[app.environment.to_sym][:push]
42
+ feedback_host, feedback_port = HOSTS[app.environment.to_sym][:feedback]
45
43
  feedback_poll = Rapns::Daemon.config.feedback_poll
46
44
  runner = AppRunner.new(app, push_host, push_port, feedback_host, feedback_port, feedback_poll)
47
45
  runner.start
@@ -61,17 +59,6 @@ module Rapns
61
59
  @all.values.map(&:debug)
62
60
  end
63
61
 
64
- def self.detect_environment(app)
65
- if app.certificate =~ /Apple Development IOS Push Services/i
66
- :development
67
- elsif app.certificate =~ /Apple Production IOS Push Services/i
68
- :production
69
- else
70
- Rapns::Daemon.logger.error("Could not detect environment for app '#{app.key}'.")
71
- nil
72
- end
73
- end
74
-
75
62
  def initialize(app, push_host, push_port, feedback_host, feedback_port, feedback_poll)
76
63
  @app = app
77
64
  @push_host = push_host
data/lib/rapns/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Rapns
2
- VERSION = '2.0.0rc1'
2
+ VERSION = '2.0.0rc2'
3
3
  end
@@ -140,8 +140,8 @@ describe Rapns::Daemon::AppRunner, 'ready' do
140
140
  end
141
141
 
142
142
  describe Rapns::Daemon::AppRunner, 'sync' do
143
- let(:app) { stub(:key => 'app') }
144
- let(:new_app) { stub(:key => 'new_app') }
143
+ let(:app) { stub(:key => 'app', :environment => 'development') }
144
+ let(:new_app) { stub(:key => 'new_app', :environment => 'development') }
145
145
  let(:runner) { stub(:sync => nil, :stop => nil) }
146
146
  let(:new_runner) { stub }
147
147
  let(:logger) { stub(:error => nil) }
@@ -166,7 +166,7 @@ describe Rapns::Daemon::AppRunner, 'sync' do
166
166
  end
167
167
 
168
168
  it 'starts a runner for a new app with a production certificate' do
169
- new_app.stub(:certificate => 'Apple Production IOS Push Services')
169
+ new_app.stub(:environment => 'production')
170
170
  Rapns::App.stub(:all => [new_app])
171
171
  new_runner = stub
172
172
  Rapns::Daemon::AppRunner.should_receive(:new).with(new_app, 'gateway.push.apple.com', 2195,
@@ -176,7 +176,7 @@ it 'starts a runner for a new app with a production certificate' do
176
176
  end
177
177
 
178
178
  it 'starts a runner for a new app with a development certificate' do
179
- new_app.stub(:certificate => 'Apple Development IOS Push Services')
179
+ new_app.stub(:environment => 'development')
180
180
  Rapns::App.stub(:all => [new_app])
181
181
  new_runner = stub
182
182
  Rapns::Daemon::AppRunner.should_receive(:new).with(new_app, 'gateway.sandbox.push.apple.com', 2195,
@@ -185,20 +185,6 @@ it 'starts a runner for a new app with a production certificate' do
185
185
  Rapns::Daemon::AppRunner.sync
186
186
  end
187
187
 
188
- it 'logs an error if the environment cannot be determined from the certificate' do
189
- new_app.stub(:certificate => 'wat')
190
- Rapns::App.stub(:all => [new_app])
191
- Rapns::Daemon.logger.should_receive(:error).with("Could not detect environment for app 'new_app'.")
192
- Rapns::Daemon::AppRunner.sync
193
- end
194
-
195
- it 'does not attempt to start an AppRunner if the environment could not be detected' do
196
- new_app.stub(:certificate => 'wat')
197
- Rapns::App.stub(:all => [new_app])
198
- Rapns::Daemon::AppRunner.should_not_receive(:new)
199
- Rapns::Daemon::AppRunner.sync
200
- end
201
-
202
188
  it 'deletes old apps' do
203
189
  Rapns::App.stub(:all => [])
204
190
  runner.should_receive(:stop)
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: 2.0.0rc1
4
+ version: 2.0.0rc2
5
5
  prerelease: 5
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: 2012-06-18 00:00:00.000000000 Z
12
+ date: 2012-06-19 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: Easy to use library for Apple's Push Notification Service with Rails
15
15
  3