rack-passbook 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f7535da0ed761a8727633eba10eb11a5c9f9cbec
4
- data.tar.gz: 76a31a02edc13f7d6a34911973b1b88c449d0e45
3
+ metadata.gz: 0ec28349a731bc1be81ab48355eda8328321e4d6
4
+ data.tar.gz: 2aed56d1dde1a37f9e493d2aaaeb73efec6d4cd7
5
5
  SHA512:
6
- metadata.gz: bb1c8abdfc1d4af2d649051804feff13eb9e7fe6efa43774ad43639f94bcbe7ce9074abec10034fb4afc9eb86e2163a01a3896f5d7140fbfaaf460060515b482
7
- data.tar.gz: c500d648dbff85e0e4d1576840c1e7c64e84dbf463f1fdeef0cf01aec158e7910bc7fce2eb3043052129e4e55e5a4719a7481337453464fdae92e65de74a5b1d
6
+ metadata.gz: d9f4fb14ee5125f031663d303e88986fc48f7d23f283cff04187b85d274f632b7bea21cd5d3ed523fc34ccf1a10942cd1296808307b644f9dc7ffcd463f3b2b7
7
+ data.tar.gz: e319707381167b142b8af096d73727ae17817e6cfd0c3ac53a6129aa4c1f251d29c0d84a3af4cca0b4ef0eb3c976a4817d89bbfa3128d9cbfa3d6a91cc38bdaf
data/Gemfile CHANGED
@@ -1,3 +1,5 @@
1
- source "https://rubygems.org"
1
+ # frozen_string_literal: true
2
+
3
+ source 'https://rubygems.org'
2
4
 
3
5
  gemspec
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rack-passbook (0.2.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
- rack (1.5.2)
13
- rack-protection (1.5.2)
12
+ diff-lcs (1.3)
13
+ rack (1.6.11)
14
+ rack-protection (1.5.5)
14
15
  rack
15
- rake (0.9.6)
16
- rspec (0.6.4)
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.4)
19
- rack (~> 1.4)
31
+ sinatra (1.4.8)
32
+ rack (~> 1.5)
20
33
  rack-protection (~> 1.4)
21
- tilt (~> 1.3, >= 1.3.4)
22
- tilt (1.4.1)
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 (~> 0.9)
30
- rspec (~> 0.6)
42
+ rake
43
+ rspec
44
+
45
+ BUNDLED WITH
46
+ 2.0.1
@@ -1,4 +1,4 @@
1
- Copyright (c) 2012 Mattt Thompson (http://mattt.me/)
1
+ Copyright (c) 2012 – 2019 Mattt (https://mat.tt/)
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining a copy
4
4
  of this software and associated documentation files (the "Software"), to deal
data/README.md CHANGED
@@ -1,29 +1,38 @@
1
- ![Passbook](http://cl.ly/JPjc/title_passbook.png)
2
-
3
1
  # Rack::Passbook
4
2
 
5
- [Passbook](http://www.apple.com/ios/whats-new/#passbook) is an iOS 6 feature that manages boarding passes, movie tickets, retail coupons, & loyalty cards. Using the [PassKit API](https://developer.apple.com/library/prerelease/ios/#documentation/UserExperience/Reference/PassKit_Framework/_index.html), developers can register web services to automatically update content on the pass, such as gate changes on a boarding pass, or adding credit to a loyalty card.
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) for a REST-style web service protocol to communicate with Passbook, with endpoints to get the latest version of a pass, register / unregister devices to receive push notifications for a pass, and query for passes registered for a device.
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
- > If you're just starting out Passbook development, you should definitely check out [this great two-part tutorial](http://www.raywenderlich.com/20734/beginning-passbook-part-1) by [Marin Todorov](http://www.raywenderlich.com/about#marintodorov) ([Part 1](http://www.raywenderlich.com/20734/beginning-passbook-part-1) [Part 2](http://www.raywenderlich.com/20785/beginning-passbook-in-ios-6-part-22)).
17
+ ## Requirements
12
18
 
13
- ## Installation
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
- ## Requirements
24
+ ### Gemfile
20
25
 
21
- - Ruby 1.9
22
- - PostgreSQL 9.1 running locally ([Postgres.app](http://postgresapp.com) is the easiest way to get a Postgres server running on your Mac)
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. All that is required is a connection to a Postgres database.
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. The complete specification can be found in the [Passbook Web Service Reference](https://developer.apple.com/library/prerelease/ios/#documentation/PassKit/Reference/PassKit_WebService/WebService.html).
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 http://example.com/v1/passes/:passTypeIdentifier/:serialNumber
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 http://example.com/v1/devices/:deviceLibraryIdentifier/registrations/:passTypeIdentifier[?passesUpdatedSince=tag]
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
- - **lastUpdated** _(string)_ The current modification tag.
77
- - **serialNumbers** _(array of strings)_ The serial numbers of the matching passes.
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 http://example.com/v1/devices/:deviceLibraryIdentifier/registrations/:passTypeIdentifier/:serialNumber
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 http://example.com/v1/devices/:deviceLibraryIdentifier/registrations/:passTypeIdentifier/:serialNumber
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 Thompson
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. See the LICENSE file for more info.
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
- require "bundler"
1
+ # frozen_string_literal: true
2
+
3
+ require 'bundler'
2
4
  Bundler.setup
3
5
 
4
- gemspec = eval(File.read("rack-passbook.gemspec"))
6
+ gemspec = eval(File.read('rack-passbook.gemspec'))
5
7
 
6
- task :build => "#{gemspec.full_name}.gem"
8
+ task build: "#{gemspec.full_name}.gem"
7
9
 
8
- file "#{gemspec.full_name}.gem" => gemspec.files + ["rack-passbook.gemspec"] do
9
- system "gem build rack-passbook.gemspec"
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 %{CREATE EXTENSION IF NOT EXISTS hstore;}
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: "GIN"
5
- create_trigger :passbook_passes, :tsv, :tsvector_update_trigger,
6
- args: [:tsv, :'pg_catalog.english', :pass_type_identifier, :serial_number],
7
- events: [:insert, :update],
8
- each_row: true
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: "Rack::Passbook::Registration"
16
+ one_to_many :registrations, class_name: 'Rack::Passbook::Registration'
15
17
 
16
18
  def validate
17
19
  super
18
-
19
- validates_presence [:pass_type_identifier, :serial_number]
20
+
21
+ validates_presence %i[pass_type_identifier serial_number]
20
22
  validates_unique :pass_type_identifier
21
- validates_unique [:serial_number, :pass_type_identifier]
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 self.push_token
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 [:device_library_identifier, :pass_id]
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 = self.push_token.strip.gsub(/[<\s>]/, '')
31
+ self.push_token = push_token.strip.gsub(/[<\s>]/, '')
30
32
  end
31
33
  end
32
34
  end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Rack
4
+ class Passbook
5
+ VERSION = '0.3.0'
6
+ end
7
+ end
Binary file
@@ -1,25 +1,28 @@
1
- # -*- encoding: utf-8 -*-
2
- $:.push File.expand_path("../lib", __FILE__)
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 = "rack-passbook"
6
- s.authors = ["Mattt Thompson"]
7
- s.email = "m@mattt.me"
8
- s.homepage = "http://mattt.me"
9
- s.version = '0.2.0'
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 = "Rack::Passbook"
12
- s.description = "Automatically generate REST APIs for Passbook registration."
14
+ s.summary = 'Rack::Passbook'
15
+ s.description = 'Automatically generate REST APIs for Passbook registration.'
13
16
 
14
- s.add_development_dependency "rspec", "~> 0.6"
15
- s.add_development_dependency "rake", "~> 0.9"
17
+ s.add_development_dependency 'rake'
18
+ s.add_development_dependency 'rspec'
16
19
 
17
- s.add_dependency "rack", "~> 1.4"
18
- s.add_dependency "sinatra", "~> 1.3"
19
- s.add_dependency "sequel", "~> 3.37"
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["./**/*"].reject { |file| file =~ /\.\/(bin|example|log|pkg|script|spec|test|vendor)/ }
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 = ["lib"]
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.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
- - Mattt Thompson
7
+ - Mattt
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-03-06 00:00:00.000000000 Z
11
+ date: 2019-07-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: rspec
14
+ name: rake
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '0.6'
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.6'
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: rake
28
+ name: rspec
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '0.9'
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.9'
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: sinatra
56
+ name: sequel
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ~>
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '1.3'
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: '1.3'
68
+ version: '3.37'
69
69
  - !ruby/object:Gem::Dependency
70
- name: sequel
70
+ name: sinatra
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ~>
73
+ - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '3.37'
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.37'
82
+ version: '1.3'
83
83
  description: Automatically generate REST APIs for Passbook registration.
84
- email: m@mattt.me
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
- - ./lib/rack/passbook/migrations/001_base_schema.rb
92
- - ./lib/rack/passbook/migrations/002_add_full_text_search.rb
93
- - ./lib/rack/passbook/models/pass.rb
94
- - ./lib/rack/passbook/models/registration.rb
95
- - ./lib/rack/passbook.rb
96
- - ./LICENSE
97
- - ./rack-passbook.gemspec
98
- - ./Rakefile
99
- - ./README.md
100
- homepage: http://mattt.me
101
- licenses: []
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.1.11
122
+ rubygems_version: 2.6.14
120
123
  signing_key:
121
124
  specification_version: 4
122
125
  summary: Rack::Passbook