seatsio 23.6.0 → 24.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.lock +2 -2
- data/Rakefile +7 -0
- data/lib/seatsio/charts.rb +7 -4
- data/lib/seatsio/domain.rb +69 -22
- data/lib/seatsio/event_reports.rb +8 -0
- data/lib/seatsio/events.rb +26 -13
- data/lib/seatsio/events/change_object_status_request.rb +2 -2
- data/lib/seatsio/version.rb +1 -1
- data/lib/seatsio/workspaces.rb +8 -0
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 03012e1d1d5263ac5ce84cf57ecd37c648c2ed0c6d797d1c87dc0c64c6c8f627
|
|
4
|
+
data.tar.gz: 98cb7cecf330105f6fe58ef3924ac2a9838127f633e5359e952d4d56908e59d6
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e1dbefff73cde6998be7570d94c631b5252d21b06627bbffa291732244567181bc68c706c22e20a39bb57819f2cf91d014b73e7afcb82daf1ff2e11d9b05cccc
|
|
7
|
+
data.tar.gz: 63d3ff80ec60e504d95017f5e5c5c387a379842b6238cbeb07171c7236053ea8ceca56c4e52dae597c2dbd6e2db3f12af0c51f7dd0efbcce628064acdc519db6
|
data/Gemfile.lock
CHANGED
data/Rakefile
CHANGED
|
@@ -8,4 +8,11 @@ Rake::TestTask.new(:test) do |t|
|
|
|
8
8
|
t.warning = false
|
|
9
9
|
end
|
|
10
10
|
|
|
11
|
+
Rake::TestTask.new(:singletest) do |t|
|
|
12
|
+
t.libs << "test"
|
|
13
|
+
t.libs << "lib"
|
|
14
|
+
t.test_files = FileList["test/**/update_channels_test.rb", "test/**/assign_objects_to_channels_test.rb"]
|
|
15
|
+
t.warning = false
|
|
16
|
+
end
|
|
17
|
+
|
|
11
18
|
task :default => :test
|
data/lib/seatsio/charts.rb
CHANGED
|
@@ -69,13 +69,11 @@ module Seatsio
|
|
|
69
69
|
end
|
|
70
70
|
|
|
71
71
|
def retrieve_published_version(key)
|
|
72
|
-
|
|
73
|
-
Domain::Chart.new(response)
|
|
72
|
+
@http_client.get("charts/#{key}/version/published")
|
|
74
73
|
end
|
|
75
74
|
|
|
76
75
|
def retrieve_draft_version(key)
|
|
77
|
-
|
|
78
|
-
Domain::ChartDraft.new(response)
|
|
76
|
+
@http_client.get("charts/#{key}/version/draft")
|
|
79
77
|
end
|
|
80
78
|
|
|
81
79
|
def retrieve_draft_version_thumbnail(key)
|
|
@@ -94,6 +92,11 @@ module Seatsio
|
|
|
94
92
|
@http_client.post("charts/#{chart_key}/version/draft/actions/publish")
|
|
95
93
|
end
|
|
96
94
|
|
|
95
|
+
def save_social_distancing_rulesets(chart_key, rulesets)
|
|
96
|
+
payload = {"socialDistancingRulesets": rulesets}
|
|
97
|
+
@http_client.post("charts/#{chart_key}/social-distancing-rulesets", payload)
|
|
98
|
+
end
|
|
99
|
+
|
|
97
100
|
def list(chart_filter: nil, tag: nil, expand_events: nil, with_validation: false)
|
|
98
101
|
cursor = Pagination::Cursor.new(Domain::Chart, 'charts', @http_client)
|
|
99
102
|
cursor.set_query_param('filter', chart_filter)
|
data/lib/seatsio/domain.rb
CHANGED
|
@@ -4,25 +4,11 @@ module Seatsio::Domain
|
|
|
4
4
|
|
|
5
5
|
module_function
|
|
6
6
|
|
|
7
|
-
class ChartCategories
|
|
8
|
-
attr_accessor :list, :max_category_key
|
|
9
|
-
|
|
10
|
-
def initialize(data)
|
|
11
|
-
if data
|
|
12
|
-
@list = data['list']
|
|
13
|
-
@max_category_key = data['maxCategoryKey']
|
|
14
|
-
else
|
|
15
|
-
@list = []
|
|
16
|
-
@max_category_key = ''
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
|
|
21
7
|
class Chart
|
|
22
8
|
|
|
23
9
|
attr_reader :id, :key, :status, :name, :published_version_thumbnail_url,
|
|
24
|
-
:draft_version_thumbnail_url, :events, :tags, :archived,
|
|
25
|
-
:categories, :validation
|
|
10
|
+
:draft_version_thumbnail_url, :events, :tags, :archived,
|
|
11
|
+
:categories, :validation, :social_distancing_rulesets
|
|
26
12
|
|
|
27
13
|
def initialize(data)
|
|
28
14
|
@id = data['id']
|
|
@@ -34,9 +20,12 @@ module Seatsio::Domain
|
|
|
34
20
|
@events = Event.create_list(data['events']) if data['events']
|
|
35
21
|
@tags = data['tags']
|
|
36
22
|
@archived = data['archived']
|
|
37
|
-
@venue_type = data['venueType']
|
|
38
|
-
@categories = ChartCategories.new(data['categories'])
|
|
39
23
|
@validation = data['validation']
|
|
24
|
+
@social_distancing_rulesets = data['socialDistancingRulesets'].map {
|
|
25
|
+
|key, r| [key, SocialDistancingRuleset.new(r['name'], r['numberOfDisabledSeatsToTheSides'], r['disableSeatsInFrontAndBehind'],
|
|
26
|
+
r['numberOfDisabledAisleSeats'], r['maxGroupSize'],
|
|
27
|
+
r['disabledSeats'], r['enabledSeats'], r['index'])]
|
|
28
|
+
}.to_h
|
|
40
29
|
end
|
|
41
30
|
end
|
|
42
31
|
|
|
@@ -71,10 +60,32 @@ module Seatsio::Domain
|
|
|
71
60
|
end
|
|
72
61
|
end
|
|
73
62
|
|
|
63
|
+
class Channel
|
|
64
|
+
attr_reader :key, :name, :color, :index, :objects
|
|
65
|
+
|
|
66
|
+
def initialize(key, name, color, index, objects)
|
|
67
|
+
@key = key
|
|
68
|
+
@name = name
|
|
69
|
+
@color = color
|
|
70
|
+
@index = index
|
|
71
|
+
@objects = objects
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def == (other)
|
|
75
|
+
self.key == other.key &&
|
|
76
|
+
self.name == other.name &&
|
|
77
|
+
self.color == other.color &&
|
|
78
|
+
self.index == other.index &&
|
|
79
|
+
self.objects == other.objects
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
end
|
|
83
|
+
|
|
74
84
|
class Event
|
|
75
85
|
|
|
76
86
|
attr_accessor :id, :key, :chart_key, :book_whole_tables, :supports_best_available,
|
|
77
|
-
:table_booking_modes, :for_sale_config, :created_on, :updated_on
|
|
87
|
+
:table_booking_modes, :for_sale_config, :created_on, :updated_on, :channels,
|
|
88
|
+
:social_distancing_ruleset_key
|
|
78
89
|
|
|
79
90
|
def initialize(data)
|
|
80
91
|
@id = data['id']
|
|
@@ -86,6 +97,10 @@ module Seatsio::Domain
|
|
|
86
97
|
@for_sale_config = ForSaleConfig.new(data['forSaleConfig']) if data['forSaleConfig']
|
|
87
98
|
@created_on = parse_date(data['createdOn'])
|
|
88
99
|
@updated_on = parse_date(data['updatedOn'])
|
|
100
|
+
@channels = data['channels'].map {
|
|
101
|
+
|d| Channel.new(d['key'], d['name'], d['color'], d['index'], d['objects'])
|
|
102
|
+
} if data['channels']
|
|
103
|
+
@social_distancing_ruleset_key = data['socialDistancingRulesetKey']
|
|
89
104
|
end
|
|
90
105
|
|
|
91
106
|
def self.create_list(list = [])
|
|
@@ -132,7 +147,7 @@ module Seatsio::Domain
|
|
|
132
147
|
end
|
|
133
148
|
|
|
134
149
|
class Workspace
|
|
135
|
-
attr_reader :id, :name, :key, :secret_key, :is_test
|
|
150
|
+
attr_reader :id, :name, :key, :secret_key, :is_test, :is_active
|
|
136
151
|
|
|
137
152
|
def initialize(data)
|
|
138
153
|
@id = data['id']
|
|
@@ -140,6 +155,7 @@ module Seatsio::Domain
|
|
|
140
155
|
@key = data['key']
|
|
141
156
|
@secret_key = data['secretKey']
|
|
142
157
|
@is_test = data['isTest']
|
|
158
|
+
@is_active = data['isActive']
|
|
143
159
|
end
|
|
144
160
|
end
|
|
145
161
|
|
|
@@ -206,7 +222,7 @@ module Seatsio::Domain
|
|
|
206
222
|
class ChartReportItem
|
|
207
223
|
|
|
208
224
|
attr_reader :label, :labels, :category_key, :category_label, :section, :entrance, :capacity, :object_type,
|
|
209
|
-
|
|
225
|
+
:left_neighbour, :right_neighbour
|
|
210
226
|
|
|
211
227
|
def initialize(data)
|
|
212
228
|
@label = data['label']
|
|
@@ -269,7 +285,7 @@ module Seatsio::Domain
|
|
|
269
285
|
:category_key, :entrance, :object_type, :hold_token, :category_label,
|
|
270
286
|
:ticket_type, :num_booked, :num_free, :num_held, :for_sale, :section,
|
|
271
287
|
:is_accessible, :is_companion_seat, :has_restricted_view, :displayed_object_type,
|
|
272
|
-
:left_neighbour, :right_neighbour
|
|
288
|
+
:left_neighbour, :right_neighbour, :is_selectable, :is_disabled_by_social_distancing
|
|
273
289
|
|
|
274
290
|
def initialize(data)
|
|
275
291
|
@status = data['status']
|
|
@@ -295,6 +311,8 @@ module Seatsio::Domain
|
|
|
295
311
|
@displayed_object_type = data['displayedObjectType']
|
|
296
312
|
@left_neighbour = data['leftNeighbour']
|
|
297
313
|
@right_neighbour = data['rightNeighbour']
|
|
314
|
+
@is_selectable = data['isSelectable']
|
|
315
|
+
@is_disabled_by_social_distancing = data['isDisabledBySocialDistancing']
|
|
298
316
|
end
|
|
299
317
|
end
|
|
300
318
|
|
|
@@ -452,4 +470,33 @@ module Seatsio::Domain
|
|
|
452
470
|
object_details
|
|
453
471
|
end
|
|
454
472
|
|
|
473
|
+
class SocialDistancingRuleset
|
|
474
|
+
attr_reader :name, :number_of_disabled_seats_to_the_sides, :disable_seats_in_front_and_behind,
|
|
475
|
+
:number_of_disabled_aisle_seats, :max_group_size, :disabled_seats, :enabled_seats, :index
|
|
476
|
+
|
|
477
|
+
def initialize(name, number_of_disabled_seats_to_the_sides = 0, disable_seats_in_front_and_behind = false, number_of_disabled_aisle_seats = 0,
|
|
478
|
+
max_group_size = 0, disabled_seats = [], enabled_seats = [], index = 0)
|
|
479
|
+
@name = name
|
|
480
|
+
@number_of_disabled_seats_to_the_sides = number_of_disabled_seats_to_the_sides
|
|
481
|
+
@disable_seats_in_front_and_behind = disable_seats_in_front_and_behind
|
|
482
|
+
@number_of_disabled_aisle_seats = number_of_disabled_aisle_seats
|
|
483
|
+
@max_group_size = max_group_size
|
|
484
|
+
@disabled_seats = disabled_seats
|
|
485
|
+
@enabled_seats = enabled_seats
|
|
486
|
+
@index = index
|
|
487
|
+
end
|
|
488
|
+
|
|
489
|
+
def == (other)
|
|
490
|
+
self.name == other.name &&
|
|
491
|
+
self.number_of_disabled_seats_to_the_sides == other.number_of_disabled_seats_to_the_sides &&
|
|
492
|
+
self.disable_seats_in_front_and_behind == other.disable_seats_in_front_and_behind &&
|
|
493
|
+
self.number_of_disabled_aisle_seats == other.number_of_disabled_aisle_seats &&
|
|
494
|
+
self.max_group_size == other.max_group_size &&
|
|
495
|
+
self.disabled_seats == other.disabled_seats &&
|
|
496
|
+
self.enabled_seats == other.enabled_seats &&
|
|
497
|
+
self.index == other.index
|
|
498
|
+
end
|
|
499
|
+
|
|
500
|
+
end
|
|
501
|
+
|
|
455
502
|
end
|
|
@@ -27,6 +27,10 @@ module Seatsio
|
|
|
27
27
|
fetch_summary_report('bySection', event_key)
|
|
28
28
|
end
|
|
29
29
|
|
|
30
|
+
def summary_by_selectability(event_key)
|
|
31
|
+
fetch_summary_report('bySelectability', event_key)
|
|
32
|
+
end
|
|
33
|
+
|
|
30
34
|
def by_label(event_key, label = nil)
|
|
31
35
|
fetch_report('byLabel', event_key, label)
|
|
32
36
|
end
|
|
@@ -51,6 +55,10 @@ module Seatsio
|
|
|
51
55
|
fetch_report('bySection', event_key, section)
|
|
52
56
|
end
|
|
53
57
|
|
|
58
|
+
def by_selectability(event_key, selectability = nil)
|
|
59
|
+
fetch_report('bySelectability', event_key, selectability)
|
|
60
|
+
end
|
|
61
|
+
|
|
54
62
|
private
|
|
55
63
|
|
|
56
64
|
def fetch_summary_report(report_type, event_key)
|
data/lib/seatsio/events.rb
CHANGED
|
@@ -15,8 +15,9 @@ module Seatsio
|
|
|
15
15
|
@http_client = ::Seatsio::HttpClient.new(secret_key, workspace_key, base_url)
|
|
16
16
|
end
|
|
17
17
|
|
|
18
|
-
def create(chart_key: nil, event_key: nil, book_whole_tables: nil, table_booking_modes: nil)
|
|
19
|
-
payload = build_event_request(chart_key: chart_key, event_key: event_key, book_whole_tables: book_whole_tables,
|
|
18
|
+
def create(chart_key: nil, event_key: nil, book_whole_tables: nil, table_booking_modes: nil, social_distancing_ruleset_key: nil)
|
|
19
|
+
payload = build_event_request(chart_key: chart_key, event_key: event_key, book_whole_tables: book_whole_tables,
|
|
20
|
+
table_booking_modes: table_booking_modes, social_distancing_ruleset_key: social_distancing_ruleset_key)
|
|
20
21
|
response = @http_client.post("events", payload)
|
|
21
22
|
Domain::Event.new(response)
|
|
22
23
|
end
|
|
@@ -27,8 +28,9 @@ module Seatsio
|
|
|
27
28
|
Domain::Events.new(response).events
|
|
28
29
|
end
|
|
29
30
|
|
|
30
|
-
def update(key:, chart_key: nil, event_key: nil, book_whole_tables: nil, table_booking_modes: nil)
|
|
31
|
-
payload = build_event_request(chart_key: chart_key, event_key: event_key, book_whole_tables: book_whole_tables,
|
|
31
|
+
def update(key:, chart_key: nil, event_key: nil, book_whole_tables: nil, table_booking_modes: nil, social_distancing_ruleset_key: nil)
|
|
32
|
+
payload = build_event_request(chart_key: chart_key, event_key: event_key, book_whole_tables: book_whole_tables,
|
|
33
|
+
table_booking_modes: table_booking_modes, social_distancing_ruleset_key: social_distancing_ruleset_key)
|
|
32
34
|
@http_client.post("/events/#{key}", payload)
|
|
33
35
|
end
|
|
34
36
|
|
|
@@ -52,12 +54,14 @@ module Seatsio
|
|
|
52
54
|
# @param [Object] object_or_objects
|
|
53
55
|
# @param [Object] hold_token
|
|
54
56
|
# @param [Object] order_id
|
|
55
|
-
|
|
56
|
-
|
|
57
|
+
# @param [Object] keep_extra_data
|
|
58
|
+
# @param [Object] channel_keys
|
|
59
|
+
def book(event_key_or_keys, object_or_objects, hold_token = nil, order_id = nil, keep_extra_data = nil, channel_keys = nil)
|
|
60
|
+
self.change_object_status(event_key_or_keys, object_or_objects, Domain::ObjectStatus::BOOKED, hold_token, order_id, keep_extra_data, channel_keys)
|
|
57
61
|
end
|
|
58
62
|
|
|
59
|
-
def change_object_status(event_key_or_keys, object_or_objects, status, hold_token = nil, order_id = nil, keep_extra_data = nil)
|
|
60
|
-
request = create_change_object_status_request(object_or_objects, status, hold_token, order_id, event_key_or_keys, keep_extra_data)
|
|
63
|
+
def change_object_status(event_key_or_keys, object_or_objects, status, hold_token = nil, order_id = nil, keep_extra_data = nil, channel_keys = nil)
|
|
64
|
+
request = create_change_object_status_request(object_or_objects, status, hold_token, order_id, event_key_or_keys, keep_extra_data, channel_keys)
|
|
61
65
|
request[:params] = {
|
|
62
66
|
:expand => 'objects'
|
|
63
67
|
}
|
|
@@ -74,8 +78,8 @@ module Seatsio
|
|
|
74
78
|
Domain::ChangeObjectStatusInBatchResult.new(response).results
|
|
75
79
|
end
|
|
76
80
|
|
|
77
|
-
def hold(event_key_or_keys, object_or_objects, hold_token, order_id = nil, keep_extra_data = nil)
|
|
78
|
-
change_object_status(event_key_or_keys, object_or_objects, Domain::ObjectStatus::HELD, hold_token, order_id, keep_extra_data)
|
|
81
|
+
def hold(event_key_or_keys, object_or_objects, hold_token, order_id = nil, keep_extra_data = nil, channel_keys = nil)
|
|
82
|
+
change_object_status(event_key_or_keys, object_or_objects, Domain::ObjectStatus::HELD, hold_token, order_id, keep_extra_data, channel_keys)
|
|
79
83
|
end
|
|
80
84
|
|
|
81
85
|
def change_best_available_object_status(key, number, status, categories: nil, hold_token: nil, extra_data: nil, order_id: nil, keep_extra_data: nil)
|
|
@@ -92,8 +96,8 @@ module Seatsio
|
|
|
92
96
|
change_best_available_object_status(key, number, Domain::ObjectStatus::HELD, categories: categories, hold_token: hold_token, order_id: order_id, keep_extra_data: keep_extra_data, extra_data: extra_data)
|
|
93
97
|
end
|
|
94
98
|
|
|
95
|
-
def release(event_key_or_keys, object_or_objects, hold_token = nil, order_id = nil, keep_extra_data = nil)
|
|
96
|
-
change_object_status(event_key_or_keys, object_or_objects, Domain::ObjectStatus::FREE, hold_token, order_id, keep_extra_data)
|
|
99
|
+
def release(event_key_or_keys, object_or_objects, hold_token = nil, order_id = nil, keep_extra_data = nil, channel_keys = nil)
|
|
100
|
+
change_object_status(event_key_or_keys, object_or_objects, Domain::ObjectStatus::FREE, hold_token, order_id, keep_extra_data, channel_keys)
|
|
97
101
|
end
|
|
98
102
|
|
|
99
103
|
def delete(key:)
|
|
@@ -136,6 +140,14 @@ module Seatsio
|
|
|
136
140
|
@http_client.post("events/#{key}/actions/mark-as-for-sale", request)
|
|
137
141
|
end
|
|
138
142
|
|
|
143
|
+
def update_channels(key:, channels:)
|
|
144
|
+
@http_client.post("events/#{key}/channels/update", channels: channels)
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
def assign_objects_to_channels(key:, channelConfig:)
|
|
148
|
+
@http_client.post("events/#{key}/channels/assign-objects", channelConfig: channelConfig)
|
|
149
|
+
end
|
|
150
|
+
|
|
139
151
|
private
|
|
140
152
|
|
|
141
153
|
def build_parameters_for_mark_as_sale(objects: nil, categories: nil)
|
|
@@ -151,12 +163,13 @@ module Seatsio
|
|
|
151
163
|
payload
|
|
152
164
|
end
|
|
153
165
|
|
|
154
|
-
def build_event_request(chart_key: nil, event_key: nil, book_whole_tables: nil, table_booking_modes: nil)
|
|
166
|
+
def build_event_request(chart_key: nil, event_key: nil, book_whole_tables: nil, table_booking_modes: nil, social_distancing_ruleset_key: nil)
|
|
155
167
|
result = {}
|
|
156
168
|
result["chartKey"] = chart_key if chart_key
|
|
157
169
|
result["eventKey"] = event_key if event_key
|
|
158
170
|
result["bookWholeTables"] = book_whole_tables if book_whole_tables != nil
|
|
159
171
|
result["tableBookingModes"] = table_booking_modes if table_booking_modes != nil
|
|
172
|
+
result["socialDistancingRulesetKey"] = social_distancing_ruleset_key if social_distancing_ruleset_key != nil
|
|
160
173
|
result
|
|
161
174
|
end
|
|
162
175
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
def create_change_object_status_request(object_or_objects, status, hold_token, order_id, event_key_or_keys, keep_extra_data)
|
|
1
|
+
def create_change_object_status_request(object_or_objects, status, hold_token, order_id, event_key_or_keys, keep_extra_data, channel_keys)
|
|
2
2
|
result = {}
|
|
3
3
|
result[:objects] = normalize(object_or_objects)
|
|
4
4
|
result[:status] = status
|
|
@@ -10,7 +10,7 @@ def create_change_object_status_request(object_or_objects, status, hold_token, o
|
|
|
10
10
|
result[:events] = [event_key_or_keys]
|
|
11
11
|
end
|
|
12
12
|
result[:keepExtraData] = keep_extra_data if keep_extra_data != nil
|
|
13
|
-
|
|
13
|
+
result[:channelKeys] = channel_keys if channel_keys != nil
|
|
14
14
|
result
|
|
15
15
|
end
|
|
16
16
|
|
data/lib/seatsio/version.rb
CHANGED
data/lib/seatsio/workspaces.rb
CHANGED
|
@@ -32,6 +32,14 @@ module Seatsio
|
|
|
32
32
|
response['secretKey']
|
|
33
33
|
end
|
|
34
34
|
|
|
35
|
+
def activate(key:)
|
|
36
|
+
@http_client.post("workspaces/#{key}/actions/activate")
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def deactivate(key:)
|
|
40
|
+
@http_client.post("workspaces/#{key}/actions/deactivate")
|
|
41
|
+
end
|
|
42
|
+
|
|
35
43
|
def list(filter: nil)
|
|
36
44
|
extended_cursor = cursor
|
|
37
45
|
extended_cursor.set_query_param('filter', filter)
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: seatsio
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 24.3.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Seats.io
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2020-
|
|
11
|
+
date: 2020-07-07 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|