apn_sender 1.0.4 → 1.0.5

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.rdoc CHANGED
@@ -49,9 +49,11 @@ For production, you're probably better off running a dedicated daemon and settin
49
49
  # To run daemon. Pass --help to print all options
50
50
  ./script/apn_sender --environment=production --verbose start
51
51
 
52
- Note the --environment must be explicitly set (separately from your <code>RAILS_ENV</code>) to production in order to send messages via the production APN servers. Any other environment sends messages through Apple's sandbox servers at <code>gateway.sandbox.push.apple.com</code>.
52
+ Note the --environment must be explicitly set (separately from your <code>Rails.env</code>) to production in order to send messages via the production APN servers. Any other environment sends messages through Apple's sandbox servers at <code>gateway.sandbox.push.apple.com</code>.
53
53
 
54
- Check <code>RAILS_ROOT/logs/apn_sender.log</code> for debugging output. In addition to logging any major errors there, apn_sender hooks into the Resque::Worker logging to display any verbose or very_verbose worker output in apn_sender.log file as well.
54
+ Also, there are two similar options <code>:cert_path</code> and <code>:full_cert_path</code>. The former specifies the directory in which to file the .pem file (either apn_production.pem or apn_development.pem, depending on the environment). The latter specifies a .pem file explicitly, allowing customized certificate names for those that need them.
55
+
56
+ Check <code>logs/apn_sender.log</code> for debugging output. In addition to logging any major errors there, apn_sender hooks into the Resque::Worker logging to display any verbose or very_verbose worker output in apn_sender.log file as well.
55
57
 
56
58
 
57
59
  === 3. Checking Apple's Feedback Service
@@ -60,7 +62,7 @@ Since push notifications are a fire-and-forget sorta deal, where you get no indi
60
62
 
61
63
  It's actually really simple - you connect to them periodically and they give you a big dump of tokens you shouldn't send to anymore. The gem wraps this up nicely -- just call:
62
64
 
63
- # APN::Feedback accepts the same optional :environment and :cert_path options as APN::Sender
65
+ # APN::Feedback accepts the same optional :environment and :cert_path / :full_cert_path options as APN::Sender
64
66
  feedback = APN::Feedback.new()
65
67
 
66
68
  tokens = feedback.tokens # => Array of device tokens
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.4
1
+ 1.0.5
data/apn_sender.gemspec CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{apn_sender}
8
- s.version = "1.0.4"
8
+ s.version = "1.0.5"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Kali Donovan"]
@@ -65,18 +65,20 @@ module APN
65
65
 
66
66
  # Get a fix on the .pem certificate we'll be using for SSL
67
67
  def setup_paths
68
- # Set option defaults. RAILS_ROOT is still here not from Rails, but to handle passing in root from sender_daemon
69
- @opts[:root_path] ||= defined?(::Rails.root) ? ::Rails.root.to_s : (defined?(RAILS_ROOT) ? RAILS_ROOT : '/')
70
- @opts[:cert_path] ||= File.join(File.expand_path(@opts[:root_path]), "config", "certs")
71
68
  @opts[:environment] ||= ::Rails.env if defined?(::Rails.env)
72
-
73
- log_and_die("Missing certificate path. Please specify :cert_path when initializing class.") unless @opts[:cert_path]
74
-
75
- cert_name = apn_production? ? "apn_production.pem" : "apn_development.pem"
76
- cert_path = File.join(@opts[:cert_path], cert_name)
77
69
 
78
- @apn_cert = File.exists?(cert_path) ? File.read(cert_path) : nil
79
- log_and_die("Missing apple push notification certificate in #{cert_path}") unless @apn_cert
70
+ # Accept a complete :full_cert_path allowing arbitrary certificate names, or create a default from the Rails env
71
+ cert_path = @opts[:full_cert_path] || begin
72
+ # Note that RAILS_ROOT is still here not from Rails, but to handle passing in root from sender_daemon
73
+ @opts[:root_path] ||= defined?(::Rails.root) ? ::Rails.root.to_s : (defined?(RAILS_ROOT) ? RAILS_ROOT : '/')
74
+ @opts[:cert_path] ||= File.join(File.expand_path(@opts[:root_path]), "config", "certs")
75
+ @opts[:cert_name] ||= apn_production? ? "apn_production.pem" : "apn_development.pem"
76
+
77
+ File.join(@opts[:cert_path], @opts[:cert_name])
78
+ end
79
+
80
+ @apn_cert = File.read(cert_path) if File.exists?(cert_path)
81
+ log_and_die("Please specify correct :full_cert_path. No apple push notification certificate found in: #{cert_path}") unless @apn_cert
80
82
  end
81
83
 
82
84
  # Open socket to Apple's servers
@@ -29,6 +29,9 @@ module APN
29
29
  opts.on('--cert-path=NAME', 'Path to directory containing apn .pem certificates.') do |path|
30
30
  @options[:cert_path] = path
31
31
  end
32
+ opts.on('c', '--full-cert-path=NAME', 'Full path to desired .pem certificate (overrides environment selector).') do |path|
33
+ @options[:full_cert_path] = path
34
+ end
32
35
  opts.on('-n', '--number-of-workers=WORKERS', "Number of unique workers to spawn") do |worker_count|
33
36
  @options[:worker_count] = worker_count.to_i rescue 1
34
37
  end
data/lib/apn/tasks.rb CHANGED
@@ -11,7 +11,7 @@ namespace :apn do
11
11
  worker = nil
12
12
 
13
13
  begin
14
- worker = APN::Sender.new(:cert_path => ENV['CERT_PATH'], :environment => ENV['ENVIRONMENT'])
14
+ worker = APN::Sender.new(:full_cert_path => ENV['FULL_CERT_PATH'], :cert_path => ENV['CERT_PATH'], :environment => ENV['ENVIRONMENT'])
15
15
  worker.verbose = ENV['LOGGING'] || ENV['VERBOSE']
16
16
  worker.very_verbose = ENV['VVERBOSE']
17
17
  rescue Exception => e
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: apn_sender
3
3
  version: !ruby/object:Gem::Version
4
- hash: 31
4
+ hash: 29
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
8
  - 0
9
- - 4
10
- version: 1.0.4
9
+ - 5
10
+ version: 1.0.5
11
11
  platform: ruby
12
12
  authors:
13
13
  - Kali Donovan