rpush 5.2.0 → 6.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +59 -0
- data/README.md +53 -8
- data/lib/generators/templates/add_adm.rb +1 -1
- data/lib/generators/templates/add_alert_is_json_to_rapns_notifications.rb +2 -2
- data/lib/generators/templates/add_app_to_rapns.rb +2 -2
- data/lib/generators/templates/add_fail_after_to_rpush_notifications.rb +1 -1
- data/lib/generators/templates/add_gcm.rb +11 -25
- data/lib/generators/templates/add_rpush.rb +33 -83
- data/lib/generators/templates/add_wpns.rb +1 -1
- data/lib/generators/templates/create_rapns_apps.rb +1 -1
- data/lib/generators/templates/create_rapns_feedback.rb +3 -9
- data/lib/generators/templates/create_rapns_notifications.rb +3 -9
- data/lib/generators/templates/rename_rapns_to_rpush.rb +9 -33
- data/lib/generators/templates/rpush.rb +1 -4
- data/lib/generators/templates/rpush_2_0_0_updates.rb +5 -17
- data/lib/generators/templates/rpush_2_1_0_updates.rb +1 -1
- data/lib/generators/templates/rpush_2_6_0_updates.rb +1 -1
- data/lib/generators/templates/rpush_2_7_0_updates.rb +1 -1
- data/lib/generators/templates/rpush_3_0_0_updates.rb +1 -1
- data/lib/generators/templates/rpush_3_0_1_updates.rb +1 -1
- data/lib/generators/templates/rpush_3_1_0_add_pushy.rb +1 -1
- data/lib/generators/templates/rpush_3_1_1_updates.rb +1 -1
- data/lib/generators/templates/rpush_3_2_0_add_apns_p8.rb +1 -1
- data/lib/generators/templates/rpush_3_2_4_updates.rb +1 -1
- data/lib/generators/templates/rpush_3_3_0_updates.rb +1 -1
- data/lib/generators/templates/rpush_3_3_1_updates.rb +3 -3
- data/lib/generators/templates/rpush_4_1_0_updates.rb +1 -1
- data/lib/generators/templates/rpush_4_1_1_updates.rb +1 -1
- data/lib/generators/templates/rpush_4_2_0_updates.rb +1 -1
- data/lib/rpush/client/active_model/adm/data_validator.rb +1 -1
- data/lib/rpush/client/active_model/apns/app.rb +1 -17
- data/lib/rpush/client/active_model/apns/device_token_format_validator.rb +2 -2
- data/lib/rpush/client/active_model/apns/notification.rb +4 -0
- data/lib/rpush/client/active_model/apns/notification_payload_size_validator.rb +1 -1
- data/lib/rpush/client/active_model/apns2/app.rb +7 -1
- data/lib/rpush/client/active_model/certificate_private_key_validator.rb +19 -0
- data/lib/rpush/client/active_model/gcm/expiry_collapse_key_mutual_inclusion_validator.rb +1 -1
- data/lib/rpush/client/active_model/payload_data_size_validator.rb +1 -1
- data/lib/rpush/client/active_model/registration_ids_count_validator.rb +1 -1
- data/lib/rpush/client/active_model/webpush/app.rb +41 -0
- data/lib/rpush/client/active_model/webpush/notification.rb +66 -0
- data/lib/rpush/client/active_model.rb +4 -0
- data/lib/rpush/client/active_record/apnsp8/notification.rb +1 -0
- data/lib/rpush/client/active_record/webpush/app.rb +11 -0
- data/lib/rpush/client/active_record/webpush/notification.rb +12 -0
- data/lib/rpush/client/active_record.rb +3 -0
- data/lib/rpush/client/redis/apnsp8/notification.rb +2 -0
- data/lib/rpush/client/redis/webpush/app.rb +15 -0
- data/lib/rpush/client/redis/webpush/notification.rb +15 -0
- data/lib/rpush/client/redis.rb +3 -0
- data/lib/rpush/configuration.rb +1 -1
- data/lib/rpush/daemon/apns2/delivery.rb +8 -1
- data/lib/rpush/daemon/apnsp8/delivery.rb +7 -1
- data/lib/rpush/daemon/string_helpers.rb +1 -1
- data/lib/rpush/daemon/webpush/delivery.rb +114 -0
- data/lib/rpush/daemon/webpush.rb +10 -0
- data/lib/rpush/daemon.rb +3 -0
- data/lib/rpush/version.rb +3 -3
- data/spec/functional/apns2_spec.rb +14 -2
- data/spec/functional/retry_spec.rb +1 -1
- data/spec/functional/webpush_spec.rb +31 -0
- data/spec/spec_helper.rb +3 -1
- data/spec/support/active_record_setup.rb +4 -3
- data/spec/support/config/database.yml +4 -4
- data/spec/support/simplecov_helper.rb +1 -1
- data/spec/unit/client/active_record/apns/notification_spec.rb +1 -1
- data/spec/unit/client/active_record/apns2/app_spec.rb +1 -0
- data/spec/unit/client/active_record/apns2/notification_spec.rb +1 -1
- data/spec/unit/client/active_record/apnsp8/notification_spec.rb +28 -0
- data/spec/unit/client/active_record/webpush/app_spec.rb +6 -0
- data/spec/unit/client/active_record/webpush/notification_spec.rb +6 -0
- data/spec/unit/client/redis/apns/notification_spec.rb +1 -1
- data/spec/unit/client/redis/apns2/notification_spec.rb +1 -1
- data/spec/unit/client/redis/apnsp8/notification_spec.rb +29 -0
- data/spec/unit/client/redis/webpush/app_spec.rb +5 -0
- data/spec/unit/client/redis/webpush/notification_spec.rb +5 -0
- data/spec/unit/client/shared/apns/notification.rb +15 -0
- data/spec/unit/client/shared/webpush/app.rb +33 -0
- data/spec/unit/client/shared/webpush/notification.rb +83 -0
- data/spec/unit/daemon/apnsp8/delivery_spec.rb +53 -0
- data/spec/unit/daemon/pushy/delivery_spec.rb +5 -3
- data/spec/unit/daemon/webpush/delivery_spec.rb +144 -0
- metadata +50 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d4f2b9e229e7ebe35f201483f6e959cb317ae7ca97f56b0084ee1543a9bb13b3
|
4
|
+
data.tar.gz: 23b0ae77b424a34db34eb823b265eedc696f8924216555cc0485cd3d8f4a6a99
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
[![
|
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)
|
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=
|
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::
|
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,
|
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 AddAlertIsJsonToRapnsNotifications < ActiveRecord::
|
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::
|
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::
|
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::
|
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,
|
23
|
-
change_column :rapns_notifications, :expiry, :integer,
|
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
|
54
|
-
|
55
|
-
|
56
|
-
|
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,
|
77
|
-
change_column :rapns_notifications, :expiry, :integer,
|
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
|
104
|
-
|
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::
|
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::
|
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
|
68
|
-
|
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::
|
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
|
94
|
-
|
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::
|
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::
|
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::
|
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::
|
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,
|
168
|
-
change_column :rapns_notifications, :expiry, :integer,
|
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
|
199
|
-
|
200
|
-
|
201
|
-
|
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,
|
222
|
-
change_column :rapns_notifications, :expiry, :integer,
|
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
|
249
|
-
|
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::
|
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::
|
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::
|
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
|
326
|
-
|
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
|
336
|
-
|
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
|
368
|
-
|
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
|
378
|
-
|
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::
|
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 CreateRapnsFeedback < ActiveRecord::
|
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
|
14
|
-
|
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::
|
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
|
25
|
-
|
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
|