rpush 5.2.0 → 6.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (84) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +59 -0
  3. data/README.md +53 -8
  4. data/lib/generators/templates/add_adm.rb +1 -1
  5. data/lib/generators/templates/add_alert_is_json_to_rapns_notifications.rb +2 -2
  6. data/lib/generators/templates/add_app_to_rapns.rb +2 -2
  7. data/lib/generators/templates/add_fail_after_to_rpush_notifications.rb +1 -1
  8. data/lib/generators/templates/add_gcm.rb +11 -25
  9. data/lib/generators/templates/add_rpush.rb +33 -83
  10. data/lib/generators/templates/add_wpns.rb +1 -1
  11. data/lib/generators/templates/create_rapns_apps.rb +1 -1
  12. data/lib/generators/templates/create_rapns_feedback.rb +3 -9
  13. data/lib/generators/templates/create_rapns_notifications.rb +3 -9
  14. data/lib/generators/templates/rename_rapns_to_rpush.rb +9 -33
  15. data/lib/generators/templates/rpush.rb +1 -4
  16. data/lib/generators/templates/rpush_2_0_0_updates.rb +5 -17
  17. data/lib/generators/templates/rpush_2_1_0_updates.rb +1 -1
  18. data/lib/generators/templates/rpush_2_6_0_updates.rb +1 -1
  19. data/lib/generators/templates/rpush_2_7_0_updates.rb +1 -1
  20. data/lib/generators/templates/rpush_3_0_0_updates.rb +1 -1
  21. data/lib/generators/templates/rpush_3_0_1_updates.rb +1 -1
  22. data/lib/generators/templates/rpush_3_1_0_add_pushy.rb +1 -1
  23. data/lib/generators/templates/rpush_3_1_1_updates.rb +1 -1
  24. data/lib/generators/templates/rpush_3_2_0_add_apns_p8.rb +1 -1
  25. data/lib/generators/templates/rpush_3_2_4_updates.rb +1 -1
  26. data/lib/generators/templates/rpush_3_3_0_updates.rb +1 -1
  27. data/lib/generators/templates/rpush_3_3_1_updates.rb +3 -3
  28. data/lib/generators/templates/rpush_4_1_0_updates.rb +1 -1
  29. data/lib/generators/templates/rpush_4_1_1_updates.rb +1 -1
  30. data/lib/generators/templates/rpush_4_2_0_updates.rb +1 -1
  31. data/lib/rpush/client/active_model/adm/data_validator.rb +1 -1
  32. data/lib/rpush/client/active_model/apns/app.rb +1 -17
  33. data/lib/rpush/client/active_model/apns/device_token_format_validator.rb +2 -2
  34. data/lib/rpush/client/active_model/apns/notification.rb +4 -0
  35. data/lib/rpush/client/active_model/apns/notification_payload_size_validator.rb +1 -1
  36. data/lib/rpush/client/active_model/apns2/app.rb +7 -1
  37. data/lib/rpush/client/active_model/certificate_private_key_validator.rb +19 -0
  38. data/lib/rpush/client/active_model/gcm/expiry_collapse_key_mutual_inclusion_validator.rb +1 -1
  39. data/lib/rpush/client/active_model/payload_data_size_validator.rb +1 -1
  40. data/lib/rpush/client/active_model/registration_ids_count_validator.rb +1 -1
  41. data/lib/rpush/client/active_model/webpush/app.rb +41 -0
  42. data/lib/rpush/client/active_model/webpush/notification.rb +66 -0
  43. data/lib/rpush/client/active_model.rb +4 -0
  44. data/lib/rpush/client/active_record/apnsp8/notification.rb +1 -0
  45. data/lib/rpush/client/active_record/webpush/app.rb +11 -0
  46. data/lib/rpush/client/active_record/webpush/notification.rb +12 -0
  47. data/lib/rpush/client/active_record.rb +3 -0
  48. data/lib/rpush/client/redis/apnsp8/notification.rb +2 -0
  49. data/lib/rpush/client/redis/webpush/app.rb +15 -0
  50. data/lib/rpush/client/redis/webpush/notification.rb +15 -0
  51. data/lib/rpush/client/redis.rb +3 -0
  52. data/lib/rpush/configuration.rb +1 -1
  53. data/lib/rpush/daemon/apns2/delivery.rb +8 -1
  54. data/lib/rpush/daemon/apnsp8/delivery.rb +7 -1
  55. data/lib/rpush/daemon/string_helpers.rb +1 -1
  56. data/lib/rpush/daemon/webpush/delivery.rb +114 -0
  57. data/lib/rpush/daemon/webpush.rb +10 -0
  58. data/lib/rpush/daemon.rb +3 -0
  59. data/lib/rpush/version.rb +3 -3
  60. data/spec/functional/apns2_spec.rb +14 -2
  61. data/spec/functional/retry_spec.rb +1 -1
  62. data/spec/functional/webpush_spec.rb +31 -0
  63. data/spec/spec_helper.rb +3 -1
  64. data/spec/support/active_record_setup.rb +4 -3
  65. data/spec/support/config/database.yml +4 -4
  66. data/spec/support/simplecov_helper.rb +1 -1
  67. data/spec/unit/client/active_record/apns/notification_spec.rb +1 -1
  68. data/spec/unit/client/active_record/apns2/app_spec.rb +1 -0
  69. data/spec/unit/client/active_record/apns2/notification_spec.rb +1 -1
  70. data/spec/unit/client/active_record/apnsp8/notification_spec.rb +28 -0
  71. data/spec/unit/client/active_record/webpush/app_spec.rb +6 -0
  72. data/spec/unit/client/active_record/webpush/notification_spec.rb +6 -0
  73. data/spec/unit/client/redis/apns/notification_spec.rb +1 -1
  74. data/spec/unit/client/redis/apns2/notification_spec.rb +1 -1
  75. data/spec/unit/client/redis/apnsp8/notification_spec.rb +29 -0
  76. data/spec/unit/client/redis/webpush/app_spec.rb +5 -0
  77. data/spec/unit/client/redis/webpush/notification_spec.rb +5 -0
  78. data/spec/unit/client/shared/apns/notification.rb +15 -0
  79. data/spec/unit/client/shared/webpush/app.rb +33 -0
  80. data/spec/unit/client/shared/webpush/notification.rb +83 -0
  81. data/spec/unit/daemon/apnsp8/delivery_spec.rb +53 -0
  82. data/spec/unit/daemon/pushy/delivery_spec.rb +5 -3
  83. data/spec/unit/daemon/webpush/delivery_spec.rb +144 -0
  84. metadata +50 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6576c1456435dd596c992846892b840f204b4cf8956b13f0c06b9b336b6e0fd8
4
- data.tar.gz: 57ba3957011570e259585b3528f0bd344411f22db72bf03cea01bfe049107ac2
3
+ metadata.gz: d4f2b9e229e7ebe35f201483f6e959cb317ae7ca97f56b0084ee1543a9bb13b3
4
+ data.tar.gz: 23b0ae77b424a34db34eb823b265eedc696f8924216555cc0485cd3d8f4a6a99
5
5
  SHA512:
6
- metadata.gz: 1fcce116cbddf64aacbf00d2b7294056f3c502b59f108783b53a1c90807cd0816a68be2c43e543625d556ad7de484786edb2baad1dbdc2652cfc1c4f582539f9
7
- data.tar.gz: 0e468a1f43d8c422db967946fdc8d867bfc8bce6eaea511bff04e34108f77b75e9b0f903a3c008594482fe159ee9b820cc65be81008d60e2261b26f61c6ca274
6
+ metadata.gz: 106f87bc174864adaf3443933ae690312c7f2f16df946accb19c02bfeaff03d9f706a4e9f6f5f164e11a5e027663e46f547713b9ae8dd280e38b4f42ec77eb2b
7
+ data.tar.gz: 065b010d2f8af82d86fad787f6fa59441e120d3de987971f131f70d40680cc8c571247b78d25682b16a8e69b2587fa07fa1b91903340b2690565f6863826edae
data/CHANGELOG.md CHANGED
@@ -1,5 +1,64 @@
1
1
  # Changelog
2
2
 
3
+ ## [Unreleased](https://github.com/rpush/rpush/tree/HEAD)
4
+
5
+ ## [v6.0.1](https://github.com/rpush/rpush/tree/v6.0.1) (2021-10-08)
6
+
7
+ [Full Changelog](https://github.com/rpush/rpush/compare/v6.0.0...v6.0.1)
8
+
9
+ **Merged pull requests:**
10
+
11
+ - Don't limit webpush registration keys [\#624](https://github.com/rpush/rpush/pull/624) ([treyrich](https://github.com/treyrich))
12
+ - Add Prometheus Exporter plugin link to README [\#617](https://github.com/rpush/rpush/pull/617) ([maxsz](https://github.com/maxsz))
13
+ - Reference current interface in config template [\#569](https://github.com/rpush/rpush/pull/569) ([benlangfeld](https://github.com/benlangfeld))
14
+ - Default the Rails environment to RAILS\_ENV if set [\#562](https://github.com/rpush/rpush/pull/562) ([benlangfeld](https://github.com/benlangfeld))
15
+
16
+ ## [v6.0.0](https://github.com/rpush/rpush/tree/v6.0.0) (2021-05-21)
17
+
18
+ [Full Changelog](https://github.com/rpush/rpush/compare/v5.4.0...v6.0.0)
19
+
20
+ This release contains **breaking changes**, such as removing support for Rails versions older than 5.2.
21
+ Please see the details in the PRs below.
22
+
23
+ **Merged pull requests:**
24
+
25
+ - Switch to GitHub Actions for CI [\#615](https://github.com/rpush/rpush/pull/615) ([aried3r](https://github.com/aried3r))
26
+ - Prepare 6.0.0 release [\#613](https://github.com/rpush/rpush/pull/613) ([aried3r](https://github.com/aried3r))
27
+ - Bump activesupport version to 5.2 or later [\#610](https://github.com/rpush/rpush/pull/610) ([biow0lf](https://github.com/biow0lf))
28
+ - Fixed infinite loop issue with Apnsp8 delivery [\#608](https://github.com/rpush/rpush/pull/608) ([diminish7](https://github.com/diminish7))
29
+ - Eliminate deprecation warning in Ruby 3.0 [\#602](https://github.com/rpush/rpush/pull/602) ([rofreg](https://github.com/rofreg))
30
+ - Make ActiveRecord validations work with Apns2 client [\#601](https://github.com/rpush/rpush/pull/601) ([favrik](https://github.com/favrik))
31
+ - Bump gemspec post\_install\_message [\#600](https://github.com/rpush/rpush/pull/600) ([fdoxyz](https://github.com/fdoxyz))
32
+ - Remove references and checks for unsupported versions of Rails [\#599](https://github.com/rpush/rpush/pull/599) ([ericsaupe](https://github.com/ericsaupe))
33
+ - Drop support for Rails 5.0 and 5.1 [\#597](https://github.com/rpush/rpush/pull/597) ([ericsaupe](https://github.com/ericsaupe))
34
+ - Fix silent APNS notifications for Apns2 and Apnsp8 [\#596](https://github.com/rpush/rpush/pull/596) ([shved270189](https://github.com/shved270189))
35
+ - Updates README to Apple's new EOL date for the APNs legacy binary protocol [\#595](https://github.com/rpush/rpush/pull/595) ([gregblake](https://github.com/gregblake))
36
+
37
+ ## [v5.4.0](https://github.com/rpush/rpush/tree/v5.4.0) (2021-02-15)
38
+
39
+ [Full Changelog](https://github.com/rpush/rpush/compare/v5.3.0...v5.4.0)
40
+
41
+ **Merged pull requests:**
42
+
43
+ - fix typo in README.md [\#587](https://github.com/rpush/rpush/pull/587) ([yltsrc](https://github.com/yltsrc))
44
+ - Support Ruby 3.0 & Rails 6.1 [\#586](https://github.com/rpush/rpush/pull/586) ([andreaslillebo](https://github.com/andreaslillebo))
45
+
46
+ ## [v5.3.0](https://github.com/rpush/rpush/tree/v5.3.0) (2021-01-07)
47
+
48
+ [Full Changelog](https://github.com/rpush/rpush/compare/v5.2.0...v5.3.0)
49
+
50
+ **Implemented enhancements:**
51
+
52
+ - support for Webpush with VAPID [\#574](https://github.com/rpush/rpush/pull/574) ([jkraemer](https://github.com/jkraemer))
53
+
54
+ **Merged pull requests:**
55
+
56
+ - Bug fix: APNS P8 Notifications Are Marked as Invalid When the Payload Exceeds 2kb \(2048 bytes\) [\#583](https://github.com/rpush/rpush/pull/583) ([gregblake](https://github.com/gregblake))
57
+ - Fix more Rails 6.1 deprecation warnings [\#582](https://github.com/rpush/rpush/pull/582) ([jas14](https://github.com/jas14))
58
+ - Feature/apns2 default headers [\#579](https://github.com/rpush/rpush/pull/579) ([jkraemer](https://github.com/jkraemer))
59
+ - Fix APNS2 documentation in README [\#578](https://github.com/rpush/rpush/pull/578) ([jamestjw](https://github.com/jamestjw))
60
+ - Fixed typo with misspell [\#575](https://github.com/rpush/rpush/pull/575) ([hsbt](https://github.com/hsbt))
61
+
3
62
  ## [v5.2.0](https://github.com/rpush/rpush/tree/v5.2.0) (2020-10-08)
4
63
 
5
64
  [Full Changelog](https://github.com/rpush/rpush/compare/v5.1.0...v5.2.0)
data/README.md CHANGED
@@ -1,5 +1,5 @@
1
1
  [![Gem Version](https://badge.fury.io/rb/rpush.svg)](http://badge.fury.io/rb/rpush)
2
- [![Build Status](https://travis-ci.org/rpush/rpush.svg?branch=master)](https://travis-ci.org/rpush/rpush)
2
+ [![RPush Test](https://github.com/rpush/rpush/actions/workflows/test.yml/badge.svg)](https://github.com/rpush/rpush/actions/workflows/test.yml)
3
3
  [![Test Coverage](https://codeclimate.com/github/rpush/rpush/badges/coverage.svg)](https://codeclimate.com/github/rpush/rpush)
4
4
  [![Code Climate](https://codeclimate.com/github/rpush/rpush/badges/gpa.svg)](https://codeclimate.com/github/rpush/rpush)
5
5
  [![Join the chat at https://gitter.im/rpush/rpush](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/rpush/rpush?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
@@ -18,12 +18,13 @@ Rpush aims to be the *de facto* gem for sending push notifications in Ruby. Its
18
18
  * [**Amazon Device Messaging**](#amazon-device-messaging)
19
19
  * [**Windows Phone Push Notification Service**](#windows-phone-notification-service)
20
20
  * [**Pushy**](#pushy)
21
+ * [**Webpush**](#webpush)
21
22
 
22
23
  #### Feature Highlights
23
24
 
24
25
  * Use [**ActiveRecord**](https://github.com/rpush/rpush/wiki/Using-ActiveRecord) or [**Redis**](https://github.com/rpush/rpush/wiki/Using-Redis) for storage.
25
26
  * Plugins for [**Bugsnag**](https://github.com/rpush/rpush-plugin-bugsnag),
26
- [**Sentry**](https://github.com/rpush/rpush-plugin-sentry), [**StatsD**](https://github.com/rpush/rpush-plugin-statsd) or [write your own](https://github.com/rpush/rpush/wiki/Writing-a-Plugin).
27
+ [**Sentry**](https://github.com/rpush/rpush-plugin-sentry), [**StatsD**](https://github.com/rpush/rpush-plugin-statsd). Third party plugins: [**Prometheus Exporter**](https://github.com/equinux/rpush-plugin-prometheus-exporter). Or [write your own](https://github.com/rpush/rpush/wiki/Writing-a-Plugin).
27
28
  * Seamless integration with your projects, including **Rails**.
28
29
  * Run as a [daemon](https://github.com/rpush/rpush#as-a-daemon), inside a [job queue](https://github.com/rpush/rpush/wiki/Push-API), on the [command-line](https://github.com/rpush/rpush#on-the-command-line) or [embedded](https://github.com/rpush/rpush/wiki/Embedding-API) in another process.
29
30
  * Scales vertically (threading) and horizontally (multiple processes).
@@ -57,7 +58,7 @@ There is a choice of two modes (and one legacy mode) using certificates or using
57
58
  * `Rpush::Apns2` This requires an annually renewable certificate. see https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/establishing_a_certificate-based_connection_to_apns
58
59
  * `Rpush::Apnsp8` This uses encrypted tokens and requires an encryption key id and encryption key (provide as a p8 file). (see https://developer.apple.com/documentation/usernotifications/setting_up_a_remote_notification_server/establishing_a_token-based_connection_to_apns)
59
60
  * `Rpush::Apns` There is also the original APNS (the original version using certificates with a binary underlying protocol over TCP directly rather than over Http/2).
60
- Apple have [announced](https://developer.apple.com/news/?id=11042019a) that this is not supported after November 2020.
61
+ Apple have [announced](https://developer.apple.com/news/?id=c88acm2b) that this is not supported after March 31, 2021.
61
62
 
62
63
  If this is your first time using the APNs, you will need to generate either SSL certificates (for Apns2 or Apns) or an Encryption Key (p8) and an Encryption Key ID (for Apnsp8). See [Generating Certificates](https://github.com/rpush/rpush/wiki/Generating-Certificates) for instructions.
63
64
 
@@ -78,7 +79,7 @@ app.save!
78
79
  ```
79
80
 
80
81
  ```ruby
81
- n = Rpush::Apns::Notification.new
82
+ n = Rpush::Apnsp8::Notification.new
82
83
  n.app = Rpush::Apnsp8::App.find_by_name("ios_app")
83
84
  n.device_token = "..." # hex string
84
85
  n.alert = "hi mom!"
@@ -96,6 +97,7 @@ app.name = "ios_app"
96
97
  app.certificate = File.read("/path/to/sandbox.pem")
97
98
  app.environment = "development"
98
99
  app.password = "certificate password"
100
+ app.bundle_id = "BUNDLE ID" # the unique bundle id of the app, like com.example.appname
99
101
  app.connections = 1
100
102
  app.save!
101
103
  ```
@@ -106,9 +108,9 @@ n.app = Rpush::Apns2::App.find_by_name("ios_app")
106
108
  n.device_token = "..." # hex string
107
109
  n.alert = "hi mom!"
108
110
  n.data = {
109
- headers: { 'apns-topic': "BUNDLE ID", # the bundle id of the app, like com.example.appname
110
- foo: :bar }
111
- }
111
+ headers: { 'apns-topic': "BUNDLE ID" }, # the bundle id of the app, like com.example.appname. Not necessary if set on the app (see above)
112
+ foo: :bar
113
+ }
112
114
  n.save!
113
115
  ```
114
116
 
@@ -249,7 +251,7 @@ n.save!
249
251
 
250
252
  #### Windows Raw Push Notifications
251
253
 
252
- Note: The data is passed as `.to_json` so only this format is supported, altough raw notifications are meant to support any kind of data.
254
+ Note: The data is passed as `.to_json` so only this format is supported, although raw notifications are meant to support any kind of data.
253
255
  Current data structure enforces hashes and `.to_json` representation is natural presentation of it.
254
256
 
255
257
  ```ruby
@@ -297,6 +299,49 @@ n.save!
297
299
 
298
300
  For more documentation on [Pushy](https://pushy.me/docs).
299
301
 
302
+ #### Webpush
303
+
304
+ [Webpush](https://tools.ietf.org/html/draft-ietf-webpush-protocol-10) is a
305
+ protocol for delivering push messages to desktop browsers. It's supported by
306
+ all major browsers (except Safari, you have to use one of the Apns transports
307
+ for that).
308
+
309
+ Using [VAPID](https://tools.ietf.org/html/draft-ietf-webpush-vapid-01), there
310
+ is no need for the sender of push notifications to register upfront with push
311
+ services (as was the case with the now legacy Mozilla or Google desktop push
312
+ providers).
313
+
314
+ Instead, you generate a pair of keys and use the public key when subscribing
315
+ users in your web app. The keys are stored along with an email address (which,
316
+ according to the spec, can be used by push service providers to contact you in
317
+ case of problems) in the `certificates` field of the Rpush Application record:
318
+
319
+ ```ruby
320
+ vapid_keypair = Webpush.generate_key.to_hash
321
+ app = Rpush::Webpush::App.new
322
+ app.name = 'webpush'
323
+ app.certificate = vapid_keypair.merge(subject: 'user@example.org').to_json
324
+ app.connections = 1
325
+ app.save!
326
+ ```
327
+
328
+ The `subscription` object you obtain from a subscribed browser holds an
329
+ endpoint URL and cryptographic keys. When sending a notification, simply pass
330
+ the whole subscription as sole member of the `registration_ids` collection:
331
+
332
+ ```ruby
333
+ n = Rpush::Webpush::Notification.new
334
+ n.app = Rpush::App.find_by_name("webpush")
335
+ n.registration_ids = [subscription]
336
+ n.data = { message: "hi mom!" }
337
+ n.save!
338
+ ```
339
+
340
+ In order to send the same message to multiple devices, create one
341
+ `Notification` per device, as passing multiple subscriptions at once as
342
+ `registration_ids` is not supported.
343
+
344
+
300
345
  ### Running Rpush
301
346
 
302
347
  It is recommended to run Rpush as a separate process in most cases, though embedding and manual modes are provided for low-workload environments.
@@ -1,4 +1,4 @@
1
- class AddAdm < ActiveRecord::VERSION::MAJOR >= 5 ? ActiveRecord::Migration[5.0] : ActiveRecord::Migration
1
+ class AddAdm < ActiveRecord::Migration[5.0]
2
2
  module Rapns
3
3
  class Notification < ActiveRecord::Base
4
4
  self.table_name = 'rapns_notifications'
@@ -1,4 +1,4 @@
1
- class AddAlertIsJsonToRapnsNotifications < ActiveRecord::VERSION::MAJOR >= 5 ? ActiveRecord::Migration[5.0] : ActiveRecord::Migration
1
+ class AddAlertIsJsonToRapnsNotifications < ActiveRecord::Migration[5.0]
2
2
  def self.up
3
3
  add_column :rapns_notifications, :alert_is_json, :boolean, null: true, default: false
4
4
  end
@@ -6,4 +6,4 @@ class AddAlertIsJsonToRapnsNotifications < ActiveRecord::VERSION::MAJOR >= 5 ? A
6
6
  def self.down
7
7
  remove_column :rapns_notifications, :alert_is_json
8
8
  end
9
- end
9
+ end
@@ -1,4 +1,4 @@
1
- class AddAppToRapns < ActiveRecord::VERSION::MAJOR >= 5 ? ActiveRecord::Migration[5.0] : ActiveRecord::Migration
1
+ class AddAppToRapns < ActiveRecord::Migration[5.0]
2
2
  def self.up
3
3
  add_column :rapns_notifications, :app, :string, null: true
4
4
  add_column :rapns_feedback, :app, :string, null: true
@@ -8,4 +8,4 @@ class AddAppToRapns < ActiveRecord::VERSION::MAJOR >= 5 ? ActiveRecord::Migratio
8
8
  remove_column :rapns_notifications, :app
9
9
  remove_column :rapns_feedback, :app
10
10
  end
11
- end
11
+ end
@@ -1,4 +1,4 @@
1
- class AddFailAfterToRpushNotifications < ActiveRecord::VERSION::MAJOR >= 5 ? ActiveRecord::Migration[5.0] : ActiveRecord::Migration
1
+ class AddFailAfterToRpushNotifications < ActiveRecord::Migration[5.0]
2
2
  def self.up
3
3
  add_column :rpush_notifications, :fail_after, :timestamp, null: true
4
4
  end
@@ -1,4 +1,4 @@
1
- class AddGcm < ActiveRecord::VERSION::MAJOR >= 5 ? ActiveRecord::Migration[5.0] : ActiveRecord::Migration
1
+ class AddGcm < ActiveRecord::Migration[5.0]
2
2
  module Rapns
3
3
  class App < ActiveRecord::Base
4
4
  self.table_name = 'rapns_apps'
@@ -19,8 +19,8 @@ class AddGcm < ActiveRecord::VERSION::MAJOR >= 5 ? ActiveRecord::Migration[5.0]
19
19
 
20
20
  change_column :rapns_notifications, :type, :string, null: false
21
21
  change_column :rapns_apps, :type, :string, null: false
22
- change_column :rapns_notifications, :device_token, :string, { null: true, limit: 64 }
23
- change_column :rapns_notifications, :expiry, :integer, { null: true, default: 1.day.to_i }
22
+ change_column :rapns_notifications, :device_token, :string, null: true, limit: 64
23
+ change_column :rapns_notifications, :expiry, :integer, null: true, default: 1.day.to_i
24
24
  change_column :rapns_apps, :environment, :string, null: true
25
25
  change_column :rapns_apps, :certificate, :text, null: true, default: nil
26
26
 
@@ -50,18 +50,10 @@ class AddGcm < ActiveRecord::VERSION::MAJOR >= 5 ? ActiveRecord::Migration[5.0]
50
50
  change_column :rapns_notifications, :app_id, :integer, null: false
51
51
  remove_column :rapns_notifications, :app
52
52
 
53
- if ActiveRecord.version >= Gem::Version.new('5.1')
54
- if index_name_exists?(:rapns_notifications, "index_rapns_notifications_multi")
55
- remove_index :rapns_notifications, name: "index_rapns_notifications_multi"
56
- elsif index_name_exists?(:rapns_notifications, "index_rapns_notifications_on_delivered_failed_deliver_after")
57
- remove_index :rapns_notifications, name: "index_rapns_notifications_on_delivered_failed_deliver_after"
58
- end
59
- else
60
- if index_name_exists?(:rapns_notifications, "index_rapns_notifications_multi", true)
61
- remove_index :rapns_notifications, name: "index_rapns_notifications_multi"
62
- elsif index_name_exists?(:rapns_notifications, "index_rapns_notifications_on_delivered_failed_deliver_after", false)
63
- remove_index :rapns_notifications, name: "index_rapns_notifications_on_delivered_failed_deliver_after"
64
- end
53
+ if index_name_exists?(:rapns_notifications, "index_rapns_notifications_multi")
54
+ remove_index :rapns_notifications, name: "index_rapns_notifications_multi"
55
+ elsif index_name_exists?(:rapns_notifications, "index_rapns_notifications_on_delivered_failed_deliver_after")
56
+ remove_index :rapns_notifications, name: "index_rapns_notifications_on_delivered_failed_deliver_after"
65
57
  end
66
58
 
67
59
  add_index :rapns_notifications, [:app_id, :delivered, :failed, :deliver_after], name: "index_rapns_notifications_multi"
@@ -73,8 +65,8 @@ class AddGcm < ActiveRecord::VERSION::MAJOR >= 5 ? ActiveRecord::Migration[5.0]
73
65
  remove_column :rapns_notifications, :type
74
66
  remove_column :rapns_apps, :type
75
67
 
76
- change_column :rapns_notifications, :device_token, :string, { null: false, limit: 64 }
77
- change_column :rapns_notifications, :expiry, :integer, { null: false, default: 1.day.to_i }
68
+ change_column :rapns_notifications, :device_token, :string, null: false, limit: 64
69
+ change_column :rapns_notifications, :expiry, :integer, null: false, default: 1.day.to_i
78
70
  change_column :rapns_apps, :environment, :string, null: false
79
71
  change_column :rapns_apps, :certificate, :text, null: false
80
72
 
@@ -100,14 +92,8 @@ class AddGcm < ActiveRecord::VERSION::MAJOR >= 5 ? ActiveRecord::Migration[5.0]
100
92
  AddGcm::Rapns::Notification.update_all(['app = ?', app.key], ['app_id = ?', app.id])
101
93
  end
102
94
 
103
- if ActiveRecord.version >= Gem::Version.new('5.1')
104
- if index_name_exists?(:rapns_notifications, :index_rapns_notifications_multi)
105
- remove_index :rapns_notifications, name: :index_rapns_notifications_multi
106
- end
107
- else
108
- if index_name_exists?(:rapns_notifications, :index_rapns_notifications_multi, true)
109
- remove_index :rapns_notifications, name: :index_rapns_notifications_multi
110
- end
95
+ if index_name_exists?(:rapns_notifications, :index_rapns_notifications_multi)
96
+ remove_index :rapns_notifications, name: :index_rapns_notifications_multi
111
97
  end
112
98
 
113
99
  remove_column :rapns_notifications, :app_id
@@ -19,7 +19,7 @@
19
19
  # approach. The constituent parts of this migration have been executed
20
20
  # many times, by many people!
21
21
 
22
- class AddRpush < ActiveRecord::VERSION::MAJOR >= 5 ? ActiveRecord::Migration[5.0] : ActiveRecord::Migration
22
+ class AddRpush < ActiveRecord::Migration[5.0]
23
23
  def self.migrations
24
24
  [CreateRapnsNotifications, CreateRapnsFeedback,
25
25
  AddAlertIsJsonToRapnsNotifications, AddAppToRapns,
@@ -41,7 +41,7 @@ class AddRpush < ActiveRecord::VERSION::MAJOR >= 5 ? ActiveRecord::Migration[5.0
41
41
  end
42
42
  end
43
43
 
44
- class CreateRapnsNotifications < ActiveRecord::VERSION::MAJOR >= 5 ? ActiveRecord::Migration[5.0] : ActiveRecord::Migration
44
+ class CreateRapnsNotifications < ActiveRecord::Migration[5.0]
45
45
  def self.up
46
46
  create_table :rapns_notifications do |t|
47
47
  t.integer :badge, null: true
@@ -64,21 +64,15 @@ class AddRpush < ActiveRecord::VERSION::MAJOR >= 5 ? ActiveRecord::Migration[5.0
64
64
  end
65
65
 
66
66
  def self.down
67
- if ActiveRecord.version >= Gem::Version.new('5.1')
68
- if index_name_exists?(:rapns_notifications, 'index_rapns_notifications_multi')
69
- remove_index :rapns_notifications, name: 'index_rapns_notifications_multi'
70
- end
71
- else
72
- if index_name_exists?(:rapns_notifications, 'index_rapns_notifications_multi', true)
73
- remove_index :rapns_notifications, name: 'index_rapns_notifications_multi'
74
- end
67
+ if index_name_exists?(:rapns_notifications, 'index_rapns_notifications_multi')
68
+ remove_index :rapns_notifications, name: 'index_rapns_notifications_multi'
75
69
  end
76
70
 
77
71
  drop_table :rapns_notifications
78
72
  end
79
73
  end
80
74
 
81
- class CreateRapnsFeedback < ActiveRecord::VERSION::MAJOR >= 5 ? ActiveRecord::Migration[5.0] : ActiveRecord::Migration
75
+ class CreateRapnsFeedback < ActiveRecord::Migration[5.0]
82
76
  def self.up
83
77
  create_table :rapns_feedback do |t|
84
78
  t.string :device_token, null: false, limit: 64
@@ -90,21 +84,15 @@ class AddRpush < ActiveRecord::VERSION::MAJOR >= 5 ? ActiveRecord::Migration[5.0
90
84
  end
91
85
 
92
86
  def self.down
93
- if ActiveRecord.version >= Gem::Version.new('5.1')
94
- if index_name_exists?(:rapns_feedback, :index_rapns_feedback_on_device_token)
95
- remove_index :rapns_feedback, name: :index_rapns_feedback_on_device_token
96
- end
97
- else
98
- if index_name_exists?(:rapns_feedback, :index_rapns_feedback_on_device_token, true)
99
- remove_index :rapns_feedback, name: :index_rapns_feedback_on_device_token
100
- end
87
+ if index_name_exists?(:rapns_feedback, :index_rapns_feedback_on_device_token)
88
+ remove_index :rapns_feedback, name: :index_rapns_feedback_on_device_token
101
89
  end
102
90
 
103
91
  drop_table :rapns_feedback
104
92
  end
105
93
  end
106
94
 
107
- class AddAlertIsJsonToRapnsNotifications < ActiveRecord::VERSION::MAJOR >= 5 ? ActiveRecord::Migration[5.0] : ActiveRecord::Migration
95
+ class AddAlertIsJsonToRapnsNotifications < ActiveRecord::Migration[5.0]
108
96
  def self.up
109
97
  add_column :rapns_notifications, :alert_is_json, :boolean, null: true, default: false
110
98
  end
@@ -114,7 +102,7 @@ class AddRpush < ActiveRecord::VERSION::MAJOR >= 5 ? ActiveRecord::Migration[5.0
114
102
  end
115
103
  end
116
104
 
117
- class AddAppToRapns < ActiveRecord::VERSION::MAJOR >= 5 ? ActiveRecord::Migration[5.0] : ActiveRecord::Migration
105
+ class AddAppToRapns < ActiveRecord::Migration[5.0]
118
106
  def self.up
119
107
  add_column :rapns_notifications, :app, :string, null: true
120
108
  add_column :rapns_feedback, :app, :string, null: true
@@ -126,7 +114,7 @@ class AddRpush < ActiveRecord::VERSION::MAJOR >= 5 ? ActiveRecord::Migration[5.0
126
114
  end
127
115
  end
128
116
 
129
- class CreateRapnsApps < ActiveRecord::VERSION::MAJOR >= 5 ? ActiveRecord::Migration[5.0] : ActiveRecord::Migration
117
+ class CreateRapnsApps < ActiveRecord::Migration[5.0]
130
118
  def self.up
131
119
  create_table :rapns_apps do |t|
132
120
  t.string :key, null: false
@@ -143,7 +131,7 @@ class AddRpush < ActiveRecord::VERSION::MAJOR >= 5 ? ActiveRecord::Migration[5.0
143
131
  end
144
132
  end
145
133
 
146
- class AddGcm < ActiveRecord::VERSION::MAJOR >= 5 ? ActiveRecord::Migration[5.0] : ActiveRecord::Migration
134
+ class AddGcm < ActiveRecord::Migration[5.0]
147
135
  module Rapns
148
136
  class App < ActiveRecord::Base
149
137
  self.table_name = 'rapns_apps'
@@ -164,8 +152,8 @@ class AddRpush < ActiveRecord::VERSION::MAJOR >= 5 ? ActiveRecord::Migration[5.0
164
152
 
165
153
  change_column :rapns_notifications, :type, :string, null: false
166
154
  change_column :rapns_apps, :type, :string, null: false
167
- change_column :rapns_notifications, :device_token, :string, { null: true, limit: 64 }
168
- change_column :rapns_notifications, :expiry, :integer, { null: true, default: 1.day.to_i }
155
+ change_column :rapns_notifications, :device_token, :string, null: true, limit: 64
156
+ change_column :rapns_notifications, :expiry, :integer, null: true, default: 1.day.to_i
169
157
  change_column :rapns_apps, :environment, :string, null: true
170
158
  change_column :rapns_apps, :certificate, :text, null: true, default: nil
171
159
 
@@ -195,18 +183,10 @@ class AddRpush < ActiveRecord::VERSION::MAJOR >= 5 ? ActiveRecord::Migration[5.0
195
183
  change_column :rapns_notifications, :app_id, :integer, null: false
196
184
  remove_column :rapns_notifications, :app
197
185
 
198
- if ActiveRecord.version >= Gem::Version.new('5.1')
199
- if index_name_exists?(:rapns_notifications, "index_rapns_notifications_multi")
200
- remove_index :rapns_notifications, name: "index_rapns_notifications_multi"
201
- elsif index_name_exists?(:rapns_notifications, "index_rapns_notifications_on_delivered_failed_deliver_after")
202
- remove_index :rapns_notifications, name: "index_rapns_notifications_on_delivered_failed_deliver_after"
203
- end
204
- else
205
- if index_name_exists?(:rapns_notifications, "index_rapns_notifications_multi", true)
206
- remove_index :rapns_notifications, name: "index_rapns_notifications_multi"
207
- elsif index_name_exists?(:rapns_notifications, "index_rapns_notifications_on_delivered_failed_deliver_after", false)
208
- remove_index :rapns_notifications, name: "index_rapns_notifications_on_delivered_failed_deliver_after"
209
- end
186
+ if index_name_exists?(:rapns_notifications, "index_rapns_notifications_multi")
187
+ remove_index :rapns_notifications, name: "index_rapns_notifications_multi"
188
+ elsif index_name_exists?(:rapns_notifications, "index_rapns_notifications_on_delivered_failed_deliver_after")
189
+ remove_index :rapns_notifications, name: "index_rapns_notifications_on_delivered_failed_deliver_after"
210
190
  end
211
191
 
212
192
  add_index :rapns_notifications, [:app_id, :delivered, :failed, :deliver_after], name: "index_rapns_notifications_multi"
@@ -218,8 +198,8 @@ class AddRpush < ActiveRecord::VERSION::MAJOR >= 5 ? ActiveRecord::Migration[5.0
218
198
  remove_column :rapns_notifications, :type
219
199
  remove_column :rapns_apps, :type
220
200
 
221
- change_column :rapns_notifications, :device_token, :string, { null: false, limit: 64 }
222
- change_column :rapns_notifications, :expiry, :integer, { null: false, default: 1.day.to_i }
201
+ change_column :rapns_notifications, :device_token, :string, null: false, limit: 64
202
+ change_column :rapns_notifications, :expiry, :integer, null: false, default: 1.day.to_i
223
203
  change_column :rapns_apps, :environment, :string, null: false
224
204
  change_column :rapns_apps, :certificate, :text, null: false
225
205
 
@@ -245,14 +225,8 @@ class AddRpush < ActiveRecord::VERSION::MAJOR >= 5 ? ActiveRecord::Migration[5.0
245
225
  AddGcm::Rapns::Notification.where(app_id: app.id).update_all(app: app.key)
246
226
  end
247
227
 
248
- if ActiveRecord.version >= Gem::Version.new('5.1')
249
- if index_name_exists?(:rapns_notifications, :index_rapns_notifications_multi)
250
- remove_index :rapns_notifications, name: :index_rapns_notifications_multi
251
- end
252
- else
253
- if index_name_exists?(:rapns_notifications, :index_rapns_notifications_multi, true)
254
- remove_index :rapns_notifications, name: :index_rapns_notifications_multi
255
- end
228
+ if index_name_exists?(:rapns_notifications, :index_rapns_notifications_multi)
229
+ remove_index :rapns_notifications, name: :index_rapns_notifications_multi
256
230
  end
257
231
 
258
232
  remove_column :rapns_notifications, :app_id
@@ -261,7 +235,7 @@ class AddRpush < ActiveRecord::VERSION::MAJOR >= 5 ? ActiveRecord::Migration[5.0
261
235
  end
262
236
  end
263
237
 
264
- class AddWpns < ActiveRecord::VERSION::MAJOR >= 5 ? ActiveRecord::Migration[5.0] : ActiveRecord::Migration
238
+ class AddWpns < ActiveRecord::Migration[5.0]
265
239
  module Rapns
266
240
  class Notification < ActiveRecord::Base
267
241
  self.table_name = 'rapns_notifications'
@@ -278,7 +252,7 @@ class AddRpush < ActiveRecord::VERSION::MAJOR >= 5 ? ActiveRecord::Migration[5.0
278
252
  end
279
253
  end
280
254
 
281
- class AddAdm < ActiveRecord::VERSION::MAJOR >= 5 ? ActiveRecord::Migration[5.0] : ActiveRecord::Migration
255
+ class AddAdm < ActiveRecord::Migration[5.0]
282
256
  module Rapns
283
257
  class Notification < ActiveRecord::Base
284
258
  self.table_name = 'rapns_notifications'
@@ -302,7 +276,7 @@ class AddRpush < ActiveRecord::VERSION::MAJOR >= 5 ? ActiveRecord::Migration[5.0
302
276
  end
303
277
  end
304
278
 
305
- class RenameRapnsToRpush < ActiveRecord::VERSION::MAJOR >= 5 ? ActiveRecord::Migration[5.0] : ActiveRecord::Migration
279
+ class RenameRapnsToRpush < ActiveRecord::Migration[5.0]
306
280
  module Rpush
307
281
  class App < ActiveRecord::Base
308
282
  self.table_name = 'rpush_apps'
@@ -322,24 +296,12 @@ class AddRpush < ActiveRecord::VERSION::MAJOR >= 5 ? ActiveRecord::Migration[5.0
322
296
  rename_table :rapns_apps, :rpush_apps
323
297
  rename_table :rapns_feedback, :rpush_feedback
324
298
 
325
- if ActiveRecord.version >= Gem::Version.new('5.1')
326
- if index_name_exists?(:rpush_notifications, :index_rapns_notifications_multi)
327
- rename_index :rpush_notifications, :index_rapns_notifications_multi, :index_rpush_notifications_multi
328
- end
329
- else
330
- if index_name_exists?(:rpush_notifications, :index_rapns_notifications_multi, true)
331
- rename_index :rpush_notifications, :index_rapns_notifications_multi, :index_rpush_notifications_multi
332
- end
299
+ if index_name_exists?(:rpush_notifications, :index_rapns_notifications_multi)
300
+ rename_index :rpush_notifications, :index_rapns_notifications_multi, :index_rpush_notifications_multi
333
301
  end
334
302
 
335
- if ActiveRecord.version >= Gem::Version.new('5.1')
336
- if index_name_exists?(:rpush_feedback, :index_rapns_feedback_on_device_token)
337
- rename_index :rpush_feedback, :index_rapns_feedback_on_device_token, :index_rpush_feedback_on_device_token
338
- end
339
- else
340
- if index_name_exists?(:rpush_feedback, :index_rapns_feedback_on_device_token, true)
341
- rename_index :rpush_feedback, :index_rapns_feedback_on_device_token, :index_rpush_feedback_on_device_token
342
- end
303
+ if index_name_exists?(:rpush_feedback, :index_rapns_feedback_on_device_token)
304
+ rename_index :rpush_feedback, :index_rapns_feedback_on_device_token, :index_rpush_feedback_on_device_token
343
305
  end
344
306
 
345
307
  update_type(RenameRapnsToRpush::Rpush::Notification, 'Rapns::Apns::Notification', 'Rpush::Apns::Notification')
@@ -364,24 +326,12 @@ class AddRpush < ActiveRecord::VERSION::MAJOR >= 5 ? ActiveRecord::Migration[5.0
364
326
  update_type(RenameRapnsToRpush::Rpush::App, 'Rpush::Adm::App', 'Rapns::Adm::App')
365
327
  update_type(RenameRapnsToRpush::Rpush::App, 'Rpush::Wpns::App', 'Rapns::Wpns::App')
366
328
 
367
- if ActiveRecord.version >= Gem::Version.new('5.1')
368
- if index_name_exists?(:rpush_notifications, :index_rpush_notifications_multi)
369
- rename_index :rpush_notifications, :index_rpush_notifications_multi, :index_rapns_notifications_multi
370
- end
371
- else
372
- if index_name_exists?(:rpush_notifications, :index_rpush_notifications_multi, true)
373
- rename_index :rpush_notifications, :index_rpush_notifications_multi, :index_rapns_notifications_multi
374
- end
329
+ if index_name_exists?(:rpush_notifications, :index_rpush_notifications_multi)
330
+ rename_index :rpush_notifications, :index_rpush_notifications_multi, :index_rapns_notifications_multi
375
331
  end
376
332
 
377
- if ActiveRecord.version >= Gem::Version.new('5.1')
378
- if index_name_exists?(:rpush_feedback, :index_rpush_feedback_on_device_token)
379
- rename_index :rpush_feedback, :index_rpush_feedback_on_device_token, :index_rapns_feedback_on_device_token
380
- end
381
- else
382
- if index_name_exists?(:rpush_feedback, :index_rpush_feedback_on_device_token, true)
383
- rename_index :rpush_feedback, :index_rpush_feedback_on_device_token, :index_rapns_feedback_on_device_token
384
- end
333
+ if index_name_exists?(:rpush_feedback, :index_rpush_feedback_on_device_token)
334
+ rename_index :rpush_feedback, :index_rpush_feedback_on_device_token, :index_rapns_feedback_on_device_token
385
335
  end
386
336
 
387
337
  rename_table :rpush_notifications, :rapns_notifications
@@ -390,7 +340,7 @@ class AddRpush < ActiveRecord::VERSION::MAJOR >= 5 ? ActiveRecord::Migration[5.0
390
340
  end
391
341
  end
392
342
 
393
- class AddFailAfterToRpushNotifications < ActiveRecord::VERSION::MAJOR >= 5 ? ActiveRecord::Migration[5.0] : ActiveRecord::Migration
343
+ class AddFailAfterToRpushNotifications < ActiveRecord::Migration[5.0]
394
344
  def self.up
395
345
  add_column :rpush_notifications, :fail_after, :timestamp, null: true
396
346
  end
@@ -1,4 +1,4 @@
1
- class AddWpns < ActiveRecord::VERSION::MAJOR >= 5 ? ActiveRecord::Migration[5.0] : ActiveRecord::Migration
1
+ class AddWpns < ActiveRecord::Migration[5.0]
2
2
  module Rapns
3
3
  class Notification < ActiveRecord::Base
4
4
  self.table_name = 'rapns_notifications'
@@ -1,4 +1,4 @@
1
- class CreateRapnsApps < ActiveRecord::VERSION::MAJOR >= 5 ? ActiveRecord::Migration[5.0] : ActiveRecord::Migration
1
+ class CreateRapnsApps < ActiveRecord::Migration[5.0]
2
2
  def self.up
3
3
  create_table :rapns_apps do |t|
4
4
  t.string :key, null: false
@@ -1,4 +1,4 @@
1
- class CreateRapnsFeedback < ActiveRecord::VERSION::MAJOR >= 5 ? ActiveRecord::Migration[5.0] : ActiveRecord::Migration
1
+ class CreateRapnsFeedback < ActiveRecord::Migration[5.0]
2
2
  def self.up
3
3
  create_table :rapns_feedback do |t|
4
4
  t.string :device_token, null: false, limit: 64
@@ -10,14 +10,8 @@ class CreateRapnsFeedback < ActiveRecord::VERSION::MAJOR >= 5 ? ActiveRecord::Mi
10
10
  end
11
11
 
12
12
  def self.down
13
- if ActiveRecord.version >= Gem::Version.new('5.1')
14
- if index_name_exists?(:rapns_feedback, :index_rapns_feedback_on_device_token)
15
- remove_index :rapns_feedback, name: :index_rapns_feedback_on_device_token
16
- end
17
- else
18
- if index_name_exists?(:rapns_feedback, :index_rapns_feedback_on_device_token, true)
19
- remove_index :rapns_feedback, name: :index_rapns_feedback_on_device_token
20
- end
13
+ if index_name_exists?(:rapns_feedback, :index_rapns_feedback_on_device_token)
14
+ remove_index :rapns_feedback, name: :index_rapns_feedback_on_device_token
21
15
  end
22
16
 
23
17
  drop_table :rapns_feedback
@@ -1,4 +1,4 @@
1
- class CreateRapnsNotifications < ActiveRecord::VERSION::MAJOR >= 5 ? ActiveRecord::Migration[5.0] : ActiveRecord::Migration
1
+ class CreateRapnsNotifications < ActiveRecord::Migration[5.0]
2
2
  def self.up
3
3
  create_table :rapns_notifications do |t|
4
4
  t.integer :badge, null: true
@@ -21,14 +21,8 @@ class CreateRapnsNotifications < ActiveRecord::VERSION::MAJOR >= 5 ? ActiveRecor
21
21
  end
22
22
 
23
23
  def self.down
24
- if ActiveRecord.version >= Gem::Version.new('5.1')
25
- if index_name_exists?(:rapns_notifications, 'index_rapns_notifications_multi')
26
- remove_index :rapns_notifications, name: 'index_rapns_notifications_multi'
27
- end
28
- else
29
- if index_name_exists?(:rapns_notifications, 'index_rapns_notifications_multi', true)
30
- remove_index :rapns_notifications, name: 'index_rapns_notifications_multi'
31
- end
24
+ if index_name_exists?(:rapns_notifications, 'index_rapns_notifications_multi')
25
+ remove_index :rapns_notifications, name: 'index_rapns_notifications_multi'
32
26
  end
33
27
 
34
28
  drop_table :rapns_notifications