rack-passbook 0.2.0 → 0.3.0
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.
- checksums.yaml +4 -4
- data/Gemfile +3 -1
- data/Gemfile.lock +27 -11
- data/{LICENSE → LICENSE.md} +1 -1
- data/README.md +34 -28
- data/Rakefile +7 -5
- data/lib/rack/passbook/migrations/001_base_schema.rb +4 -2
- data/lib/rack/passbook/migrations/002_add_full_text_search.rb +7 -5
- data/lib/rack/passbook/models/pass.rb +8 -6
- data/lib/rack/passbook/models/registration.rb +6 -4
- data/lib/rack/passbook/version.rb +7 -0
- data/rack-passbook-0.2.0.gem +0 -0
- data/rack-passbook.gemspec +20 -17
- metadata +45 -42
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0ec28349a731bc1be81ab48355eda8328321e4d6
|
4
|
+
data.tar.gz: 2aed56d1dde1a37f9e493d2aaaeb73efec6d4cd7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d9f4fb14ee5125f031663d303e88986fc48f7d23f283cff04187b85d274f632b7bea21cd5d3ed523fc34ccf1a10942cd1296808307b644f9dc7ffcd463f3b2b7
|
7
|
+
data.tar.gz: e319707381167b142b8af096d73727ae17817e6cfd0c3ac53a6129aa4c1f251d29c0d84a3af4cca0b4ef0eb3c976a4817d89bbfa3128d9cbfa3d6a91cc38bdaf
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
rack-passbook (0.
|
4
|
+
rack-passbook (0.3.0)
|
5
5
|
rack (~> 1.4)
|
6
6
|
sequel (~> 3.37)
|
7
7
|
sinatra (~> 1.3)
|
@@ -9,22 +9,38 @@ PATH
|
|
9
9
|
GEM
|
10
10
|
remote: https://rubygems.org/
|
11
11
|
specs:
|
12
|
-
|
13
|
-
rack
|
12
|
+
diff-lcs (1.3)
|
13
|
+
rack (1.6.11)
|
14
|
+
rack-protection (1.5.5)
|
14
15
|
rack
|
15
|
-
rake (
|
16
|
-
rspec (
|
16
|
+
rake (12.3.2)
|
17
|
+
rspec (3.8.0)
|
18
|
+
rspec-core (~> 3.8.0)
|
19
|
+
rspec-expectations (~> 3.8.0)
|
20
|
+
rspec-mocks (~> 3.8.0)
|
21
|
+
rspec-core (3.8.2)
|
22
|
+
rspec-support (~> 3.8.0)
|
23
|
+
rspec-expectations (3.8.4)
|
24
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
25
|
+
rspec-support (~> 3.8.0)
|
26
|
+
rspec-mocks (3.8.1)
|
27
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
28
|
+
rspec-support (~> 3.8.0)
|
29
|
+
rspec-support (3.8.2)
|
17
30
|
sequel (3.48.0)
|
18
|
-
sinatra (1.4.
|
19
|
-
rack (~> 1.
|
31
|
+
sinatra (1.4.8)
|
32
|
+
rack (~> 1.5)
|
20
33
|
rack-protection (~> 1.4)
|
21
|
-
tilt (
|
22
|
-
tilt (
|
34
|
+
tilt (>= 1.3, < 3)
|
35
|
+
tilt (2.0.9)
|
23
36
|
|
24
37
|
PLATFORMS
|
25
38
|
ruby
|
26
39
|
|
27
40
|
DEPENDENCIES
|
28
41
|
rack-passbook!
|
29
|
-
rake
|
30
|
-
rspec
|
42
|
+
rake
|
43
|
+
rspec
|
44
|
+
|
45
|
+
BUNDLED WITH
|
46
|
+
2.0.1
|
data/{LICENSE → LICENSE.md}
RENAMED
data/README.md
CHANGED
@@ -1,29 +1,38 @@
|
|
1
|
-

|
2
|
-
|
3
1
|
# Rack::Passbook
|
4
2
|
|
5
|
-
[Passbook](
|
3
|
+
[Passbook](https://www.apple.com/ios/whats-new/#passbook)
|
4
|
+
manages boarding passes, movie tickets, retail coupons, & loyalty cards. Using the [PassKit API](https://developer.apple.com/documentation/passkit),
|
5
|
+
developers can register web services to automatically update content on the pass,
|
6
|
+
such as gate changes on a boarding pass
|
7
|
+
or adding credit to a loyalty card.
|
6
8
|
|
7
|
-
Apple [provides a specification](https://developer.apple.com/library/prerelease/ios/#documentation/PassKit/Reference/PassKit_WebService/WebService.html)
|
9
|
+
Apple [provides a specification](https://developer.apple.com/library/prerelease/ios/#documentation/PassKit/Reference/PassKit_WebService/WebService.html)
|
10
|
+
for a REST-style web service protocol to communicate with Passbook,
|
11
|
+
with endpoints to get the latest version of a pass,
|
12
|
+
register / unregister devices to receive push notifications for a pass,
|
13
|
+
and query for passes registered for a device.
|
8
14
|
|
9
15
|
Rack::Passbook provides those specified endpoints.
|
10
16
|
|
11
|
-
|
17
|
+
## Requirements
|
12
18
|
|
13
|
-
|
19
|
+
- Ruby 1.9 or higher
|
20
|
+
- PostgreSQL 9.1 or higher
|
14
21
|
|
15
|
-
|
16
|
-
$ gem install rack-passbook
|
17
|
-
```
|
22
|
+
## Installation
|
18
23
|
|
19
|
-
|
24
|
+
### Gemfile
|
20
25
|
|
21
|
-
|
22
|
-
-
|
26
|
+
```ruby
|
27
|
+
gem 'rack-passbook', require: 'rack/passbook'
|
28
|
+
```
|
23
29
|
|
24
30
|
## Example Usage
|
25
31
|
|
26
|
-
Rack::Passbook can be run as Rack middleware or as a single web application.
|
32
|
+
Rack::Passbook can be run as Rack middleware or as a single web application.
|
33
|
+
All that's required is a connection to a Postgres database.
|
34
|
+
|
35
|
+
An example application can be found in the `/example` directory of this repository.
|
27
36
|
|
28
37
|
### config.ru
|
29
38
|
|
@@ -34,18 +43,18 @@ Bundler.require
|
|
34
43
|
run Rack::Passbook
|
35
44
|
```
|
36
45
|
|
37
|
-
An example application can be found in the `/example` directory of this repository.
|
38
|
-
|
39
46
|
---
|
40
47
|
|
41
48
|
## Specification
|
42
49
|
|
43
|
-
What follows is a summary of the specification.
|
50
|
+
What follows is a summary of the specification.
|
51
|
+
The complete specification can be found in the
|
52
|
+
[Passbook Web Service Reference](https://developer.apple.com/library/prerelease/ios/#documentation/PassKit/Reference/PassKit_WebService/WebService.html).
|
44
53
|
|
45
54
|
### Getting the Latest Version of a Pass
|
46
55
|
|
47
56
|
```
|
48
|
-
GET
|
57
|
+
GET https://example.com/v1/passes/:passTypeIdentifier/:serialNumber
|
49
58
|
```
|
50
59
|
|
51
60
|
- **passTypeIdentifier** The pass’s type, as specified in the pass.
|
@@ -60,7 +69,7 @@ GET http://example.com/v1/passes/:passTypeIdentifier/:serialNumber
|
|
60
69
|
### Getting the Serial Numbers for Passes Associated with a Device
|
61
70
|
|
62
71
|
```
|
63
|
-
GET
|
72
|
+
GET https://example.com/v1/devices/:deviceLibraryIdentifier/registrations/:passTypeIdentifier[?passesUpdatedSince=tag]
|
64
73
|
```
|
65
74
|
|
66
75
|
- **deviceLibraryIdentifier** A unique identifier that is used to identify and authenticate the device.
|
@@ -73,15 +82,15 @@ GET http://example.com/v1/devices/:deviceLibraryIdentifier/registrations/:passTy
|
|
73
82
|
If the `passesUpdatedSince` parameter is present, return only the passes that have been updated since the time indicated by tag. Otherwise, return all passes.
|
74
83
|
|
75
84
|
- If there are matching passes, return HTTP status 200 with a JSON dictionary with the following keys and values:
|
76
|
-
|
77
|
-
|
85
|
+
- **lastUpdated** _(string)_ The current modification tag.
|
86
|
+
- **serialNumbers** _(array of strings)_ The serial numbers of the matching passes.
|
78
87
|
- If there are no matching passes, return HTTP status 204.
|
79
88
|
- Otherwise, return the appropriate standard HTTP status.
|
80
89
|
|
81
90
|
### Registering a Device to Receive Push Notifications for a Pass
|
82
91
|
|
83
92
|
```
|
84
|
-
POST
|
93
|
+
POST https://example.com/v1/devices/:deviceLibraryIdentifier/registrations/:passTypeIdentifier/:serialNumber
|
85
94
|
```
|
86
95
|
|
87
96
|
- **deviceLibraryIdentifier** A unique identifier that is used to identify and authenticate the device.
|
@@ -102,7 +111,7 @@ The POST payload is a JSON dictionary, containing a single key and value:
|
|
102
111
|
### Unregistering a Device
|
103
112
|
|
104
113
|
```
|
105
|
-
DELETE
|
114
|
+
DELETE https://example.com/v1/devices/:deviceLibraryIdentifier/registrations/:passTypeIdentifier/:serialNumber
|
106
115
|
```
|
107
116
|
|
108
117
|
- **deviceLibraryIdentifier** A unique identifier that is used to identify and authenticate the device.
|
@@ -119,12 +128,9 @@ DELETE http://example.com/v1/devices/:deviceLibraryIdentifier/registrations/:pas
|
|
119
128
|
|
120
129
|
## Contact
|
121
130
|
|
122
|
-
Mattt
|
123
|
-
|
124
|
-
- http://github.com/mattt
|
125
|
-
- http://twitter.com/mattt
|
126
|
-
- m@mattt.me
|
131
|
+
[Mattt](https://twitter.com/mattt)
|
127
132
|
|
128
133
|
## License
|
129
134
|
|
130
|
-
Rack::Passbook is available under the MIT license.
|
135
|
+
Rack::Passbook is available under the MIT license.
|
136
|
+
See the LICENSE file for more info.
|
data/Rakefile
CHANGED
@@ -1,10 +1,12 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'bundler'
|
2
4
|
Bundler.setup
|
3
5
|
|
4
|
-
gemspec = eval(File.read(
|
6
|
+
gemspec = eval(File.read('rack-passbook.gemspec'))
|
5
7
|
|
6
|
-
task :
|
8
|
+
task build: "#{gemspec.full_name}.gem"
|
7
9
|
|
8
|
-
file "#{gemspec.full_name}.gem" => gemspec.files + [
|
9
|
-
system
|
10
|
+
file "#{gemspec.full_name}.gem" => gemspec.files + ['rack-passbook.gemspec'] do
|
11
|
+
system 'gem build rack-passbook.gemspec'
|
10
12
|
end
|
@@ -1,6 +1,8 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
Sequel.migration do
|
2
4
|
up do
|
3
|
-
run %
|
5
|
+
run %(CREATE EXTENSION IF NOT EXISTS hstore;)
|
4
6
|
|
5
7
|
create_table :passbook_passes do
|
6
8
|
primary_key :id
|
@@ -28,7 +30,7 @@ Sequel.migration do
|
|
28
30
|
index :device_library_identifier
|
29
31
|
end
|
30
32
|
end
|
31
|
-
|
33
|
+
|
32
34
|
down do
|
33
35
|
drop_table :passbook_passes
|
34
36
|
drop_table :passbook_registrations
|
@@ -1,11 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
Sequel.migration do
|
2
4
|
up do
|
3
5
|
add_column :passbook_passes, :tsv, 'TSVector'
|
4
|
-
add_index :passbook_passes, :tsv, type:
|
5
|
-
create_trigger :passbook_passes, :tsv, :tsvector_update_trigger,
|
6
|
-
|
7
|
-
|
8
|
-
|
6
|
+
add_index :passbook_passes, :tsv, type: 'GIN'
|
7
|
+
create_trigger :passbook_passes, :tsv, :tsvector_update_trigger,
|
8
|
+
args: %i[tsv pg_catalog.english pass_type_identifier serial_number],
|
9
|
+
events: %i[insert update],
|
10
|
+
each_row: true
|
9
11
|
end
|
10
12
|
|
11
13
|
down do
|
@@ -1,24 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Rack
|
2
4
|
class Passbook
|
3
5
|
class Pass < Sequel::Model
|
4
|
-
plugin :json_serializer, naked: true, except: :id
|
6
|
+
plugin :json_serializer, naked: true, except: :id
|
5
7
|
plugin :validation_helpers
|
6
8
|
plugin :timestamps, force: true, update_on_create: true
|
7
9
|
plugin :schema
|
8
10
|
plugin :typecast_on_load
|
9
|
-
|
11
|
+
|
10
12
|
self.dataset = :passbook_passes
|
11
13
|
self.strict_param_setting = false
|
12
14
|
self.raise_on_save_failure = false
|
13
15
|
|
14
|
-
one_to_many :registrations, class_name:
|
16
|
+
one_to_many :registrations, class_name: 'Rack::Passbook::Registration'
|
15
17
|
|
16
18
|
def validate
|
17
19
|
super
|
18
|
-
|
19
|
-
validates_presence [
|
20
|
+
|
21
|
+
validates_presence %i[pass_type_identifier serial_number]
|
20
22
|
validates_unique :pass_type_identifier
|
21
|
-
validates_unique [
|
23
|
+
validates_unique %i[serial_number pass_type_identifier]
|
22
24
|
end
|
23
25
|
end
|
24
26
|
end
|
@@ -1,7 +1,9 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Rack
|
2
4
|
class Passbook
|
3
5
|
class Registration < Sequel::Model
|
4
|
-
plugin :json_serializer, naked: true, except: :id
|
6
|
+
plugin :json_serializer, naked: true, except: :id
|
5
7
|
plugin :validation_helpers
|
6
8
|
plugin :timestamps, force: true, update_on_create: true
|
7
9
|
plugin :schema
|
@@ -11,14 +13,14 @@ module Rack
|
|
11
13
|
self.raise_on_save_failure = false
|
12
14
|
|
13
15
|
def before_validation
|
14
|
-
normalize_push_token! if
|
16
|
+
normalize_push_token! if push_token
|
15
17
|
end
|
16
18
|
|
17
19
|
def validate
|
18
20
|
super
|
19
21
|
|
20
22
|
validates_presence :device_library_identifier
|
21
|
-
validates_unique [
|
23
|
+
validates_unique %i[device_library_identifier pass_id]
|
22
24
|
validates_format /[[:xdigit:]]+/, :push_token
|
23
25
|
validates_exact_length 64, :push_token
|
24
26
|
end
|
@@ -26,7 +28,7 @@ module Rack
|
|
26
28
|
private
|
27
29
|
|
28
30
|
def normalize_push_token!
|
29
|
-
self.push_token =
|
31
|
+
self.push_token = push_token.strip.gsub(/[<\s>]/, '')
|
30
32
|
end
|
31
33
|
end
|
32
34
|
end
|
Binary file
|
data/rack-passbook.gemspec
CHANGED
@@ -1,25 +1,28 @@
|
|
1
|
-
#
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
$LOAD_PATH.push File.expand_path('lib', __dir__)
|
4
|
+
require 'rack/passbook/version'
|
3
5
|
|
4
6
|
Gem::Specification.new do |s|
|
5
|
-
s.name =
|
6
|
-
s.authors = [
|
7
|
-
s.email =
|
8
|
-
s.
|
9
|
-
s.
|
7
|
+
s.name = 'rack-passbook'
|
8
|
+
s.authors = ['Mattt']
|
9
|
+
s.email = 'mattt@me.com'
|
10
|
+
s.license = 'MIT'
|
11
|
+
s.homepage = 'https://mat.tt'
|
12
|
+
s.version = Rack::Passbook::VERSION
|
10
13
|
s.platform = Gem::Platform::RUBY
|
11
|
-
s.summary =
|
12
|
-
s.description =
|
14
|
+
s.summary = 'Rack::Passbook'
|
15
|
+
s.description = 'Automatically generate REST APIs for Passbook registration.'
|
13
16
|
|
14
|
-
s.add_development_dependency
|
15
|
-
s.add_development_dependency
|
17
|
+
s.add_development_dependency 'rake'
|
18
|
+
s.add_development_dependency 'rspec'
|
16
19
|
|
17
|
-
s.add_dependency
|
18
|
-
s.add_dependency
|
19
|
-
s.add_dependency
|
20
|
+
s.add_dependency 'rack', '~> 1.4'
|
21
|
+
s.add_dependency 'sequel', '~> 3.37'
|
22
|
+
s.add_dependency 'sinatra', '~> 1.3'
|
20
23
|
|
21
|
-
s.files = Dir[
|
24
|
+
s.files = Dir['./**/*'].reject { |file| file =~ %r{\./(bin|example|log|pkg|script|spec|test|vendor)} }
|
22
25
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
23
|
-
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
24
|
-
s.require_paths = [
|
26
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
|
27
|
+
s.require_paths = ['lib']
|
25
28
|
end
|
metadata
CHANGED
@@ -1,104 +1,107 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rack-passbook
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
- Mattt
|
7
|
+
- Mattt
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-07-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: rake
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '0
|
19
|
+
version: '0'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '0
|
26
|
+
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: rspec
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '0
|
33
|
+
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '0
|
40
|
+
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rack
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - ~>
|
45
|
+
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '1.4'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - ~>
|
52
|
+
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '1.4'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: sequel
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - ~>
|
59
|
+
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
61
|
+
version: '3.37'
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - ~>
|
66
|
+
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
68
|
+
version: '3.37'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
70
|
+
name: sinatra
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - ~>
|
73
|
+
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: '3
|
75
|
+
version: '1.3'
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - ~>
|
80
|
+
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: '3
|
82
|
+
version: '1.3'
|
83
83
|
description: Automatically generate REST APIs for Passbook registration.
|
84
|
-
email:
|
84
|
+
email: mattt@me.com
|
85
85
|
executables: []
|
86
86
|
extensions: []
|
87
87
|
extra_rdoc_files: []
|
88
88
|
files:
|
89
|
-
- ./Gemfile
|
90
|
-
- ./Gemfile.lock
|
91
|
-
- ./
|
92
|
-
- ./
|
93
|
-
- ./
|
94
|
-
- ./lib/rack/passbook
|
95
|
-
- ./lib/rack/passbook.rb
|
96
|
-
- ./
|
97
|
-
- ./rack
|
98
|
-
- ./
|
99
|
-
- ./
|
100
|
-
|
101
|
-
|
89
|
+
- "./Gemfile"
|
90
|
+
- "./Gemfile.lock"
|
91
|
+
- "./LICENSE.md"
|
92
|
+
- "./README.md"
|
93
|
+
- "./Rakefile"
|
94
|
+
- "./lib/rack/passbook.rb"
|
95
|
+
- "./lib/rack/passbook/migrations/001_base_schema.rb"
|
96
|
+
- "./lib/rack/passbook/migrations/002_add_full_text_search.rb"
|
97
|
+
- "./lib/rack/passbook/models/pass.rb"
|
98
|
+
- "./lib/rack/passbook/models/registration.rb"
|
99
|
+
- "./lib/rack/passbook/version.rb"
|
100
|
+
- "./rack-passbook-0.2.0.gem"
|
101
|
+
- "./rack-passbook.gemspec"
|
102
|
+
homepage: https://mat.tt
|
103
|
+
licenses:
|
104
|
+
- MIT
|
102
105
|
metadata: {}
|
103
106
|
post_install_message:
|
104
107
|
rdoc_options: []
|
@@ -106,17 +109,17 @@ require_paths:
|
|
106
109
|
- lib
|
107
110
|
required_ruby_version: !ruby/object:Gem::Requirement
|
108
111
|
requirements:
|
109
|
-
- -
|
112
|
+
- - ">="
|
110
113
|
- !ruby/object:Gem::Version
|
111
114
|
version: '0'
|
112
115
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
113
116
|
requirements:
|
114
|
-
- -
|
117
|
+
- - ">="
|
115
118
|
- !ruby/object:Gem::Version
|
116
119
|
version: '0'
|
117
120
|
requirements: []
|
118
121
|
rubyforge_project:
|
119
|
-
rubygems_version: 2.
|
122
|
+
rubygems_version: 2.6.14
|
120
123
|
signing_key:
|
121
124
|
specification_version: 4
|
122
125
|
summary: Rack::Passbook
|