client_success 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +11 -0
  3. data/.rspec +3 -0
  4. data/.rubocop.yml +466 -0
  5. data/.travis.yml +7 -0
  6. data/Gemfile +4 -0
  7. data/Gemfile.lock +111 -0
  8. data/README.md +52 -0
  9. data/Rakefile +6 -0
  10. data/bin/console +14 -0
  11. data/bin/setup +8 -0
  12. data/client_success.gemspec +44 -0
  13. data/lib/client_success/access_token.rb +25 -0
  14. data/lib/client_success/client.rb +115 -0
  15. data/lib/client_success/client_type.rb +18 -0
  16. data/lib/client_success/connection.rb +99 -0
  17. data/lib/client_success/contact.rb +104 -0
  18. data/lib/client_success/domain_model/access_token.rb +11 -0
  19. data/lib/client_success/domain_model/client.rb +14 -0
  20. data/lib/client_success/domain_model/client_type.rb +14 -0
  21. data/lib/client_success/domain_model/contact.rb +14 -0
  22. data/lib/client_success/domain_model/custom_field_value.rb +9 -0
  23. data/lib/client_success/domain_model/employee.rb +14 -0
  24. data/lib/client_success/domain_model/product.rb +10 -0
  25. data/lib/client_success/domain_model/security_role.rb +9 -0
  26. data/lib/client_success/domain_model/status.rb +9 -0
  27. data/lib/client_success/domain_model/subscription.rb +12 -0
  28. data/lib/client_success/domain_model/success_cycle.rb +9 -0
  29. data/lib/client_success/domain_model/to_do.rb +9 -0
  30. data/lib/client_success/employee.rb +18 -0
  31. data/lib/client_success/product.rb +16 -0
  32. data/lib/client_success/schema/client/create.rb +34 -0
  33. data/lib/client_success/schema/client/update.rb +37 -0
  34. data/lib/client_success/schema/contact/create.rb +28 -0
  35. data/lib/client_success/schema/contact/update.rb +27 -0
  36. data/lib/client_success/schema/subscription/create.rb +20 -0
  37. data/lib/client_success/schema/subscription/update.rb +21 -0
  38. data/lib/client_success/status.rb +23 -0
  39. data/lib/client_success/subscription.rb +51 -0
  40. data/lib/client_success/to_do.rb +23 -0
  41. data/lib/client_success/types.rb +7 -0
  42. data/lib/client_success/version.rb +3 -0
  43. data/lib/client_success.rb +18 -0
  44. metadata +266 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 0f49bdffafdb03e24047bed3e4ba924484e8efe2976a5f3133e8045e9afdc955
4
+ data.tar.gz: 5fe7e44b7a68a1e3d2d36f91351b2523b04c69f21c0199d55f0127d76f55ddf8
5
+ SHA512:
6
+ metadata.gz: a316529d34fbea645ce64f0be27f6bba6af1fc7f4dc8867b51ce46d8384e45f9a13c1bbc80ad671e9ed616ce3949b277d9d1eaa9122cd077b49978b4c6806407
7
+ data.tar.gz: 30de65519fc46b7868a376a238e24a1e5fcbf84907741befcc0d08a4b7da7015a1ca62e08ba888c648edde0afbefb4a2b688a719b61cf79ade0161eda56c79c8
data/.gitignore ADDED
@@ -0,0 +1,11 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /_yardoc/
4
+ /coverage/
5
+ /doc/
6
+ /pkg/
7
+ /spec/reports/
8
+ /tmp/
9
+
10
+ # rspec failure tracking
11
+ .rspec_status
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --format documentation
2
+ --color
3
+ --require spec_helper
data/.rubocop.yml ADDED
@@ -0,0 +1,466 @@
1
+ ---
2
+ require:
3
+ - rubocop-rspec
4
+
5
+ AllCops:
6
+ TargetRubyVersion: 2.6
7
+
8
+ Gemspec/OrderedDependencies:
9
+ Enabled: false
10
+
11
+ Layout/ArgumentAlignment:
12
+ Enabled: false
13
+ EnforcedStyle: with_fixed_indentation
14
+
15
+ Layout/HashAlignment:
16
+ Enabled: false
17
+ EnforcedColonStyle: key
18
+ EnforcedHashRocketStyle: key
19
+
20
+ Layout/ParameterAlignment:
21
+ Enabled: false
22
+ EnforcedStyle: with_first_parameter
23
+
24
+ Layout/ClosingParenthesisIndentation:
25
+ Enabled: true
26
+
27
+ Layout/CommentIndentation:
28
+ Enabled: false
29
+
30
+ Layout/EmptyLineAfterMagicComment:
31
+ Enabled: false
32
+
33
+ Layout/EmptyLinesAroundExceptionHandlingKeywords:
34
+ Enabled: false
35
+
36
+ Layout/FirstArrayElementIndentation:
37
+ Enabled: true
38
+ EnforcedStyle: consistent
39
+
40
+ Layout/FirstHashElementIndentation:
41
+ Enabled: true
42
+ EnforcedStyle: consistent
43
+
44
+ Layout/HeredocIndentation:
45
+ Enabled: false
46
+
47
+ Layout/LeadingCommentSpace:
48
+ Enabled: true
49
+
50
+ Layout/MultilineArrayBraceLayout:
51
+ Enabled: false
52
+
53
+ Layout/MultilineHashBraceLayout:
54
+ Enabled: false
55
+
56
+ Layout/MultilineMethodCallBraceLayout:
57
+ Enabled: false
58
+
59
+ Layout/MultilineMethodCallIndentation:
60
+ Enabled: false
61
+ EnforcedStyle: aligned
62
+
63
+ Layout/MultilineOperationIndentation:
64
+ Enabled: false
65
+
66
+ Layout/RescueEnsureAlignment:
67
+ Enabled: false
68
+
69
+ Layout/SpaceBeforeFirstArg:
70
+ Enabled: false
71
+
72
+ Layout/SpaceInLambdaLiteral:
73
+ Enabled: false
74
+
75
+ Lint/AmbiguousBlockAssociation:
76
+ Enabled: false
77
+
78
+ Lint/AmbiguousOperator:
79
+ Exclude:
80
+ - app/graphql/**/*
81
+
82
+ Lint/SuppressedException:
83
+ Enabled: false
84
+
85
+ Lint/NonLocalExitFromIterator:
86
+ Enabled: false
87
+
88
+ Lint/RedundantSplatExpansion:
89
+ Enabled: false
90
+
91
+ Lint/UnusedBlockArgument:
92
+ Exclude:
93
+ - app/graphql/**/*
94
+
95
+ Lint/UnusedMethodArgument:
96
+ Enabled: false
97
+
98
+ Metrics/AbcSize:
99
+ Max: 40
100
+
101
+ Metrics/BlockLength:
102
+ Enabled: false
103
+
104
+ Metrics/ClassLength:
105
+ Enabled: false
106
+
107
+ Metrics/CyclomaticComplexity:
108
+ Enabled: false
109
+
110
+ Metrics/PerceivedComplexity:
111
+ Enabled: true
112
+ Max: 10
113
+
114
+ Metrics/LineLength:
115
+ Enabled: false
116
+
117
+ Metrics/MethodLength:
118
+ Enabled: true
119
+ Max: 50
120
+
121
+ Metrics/ModuleLength:
122
+ Enabled: false
123
+
124
+ Metrics/ParameterLists:
125
+ Enabled: false
126
+
127
+ Naming/AccessorMethodName:
128
+ Enabled: false
129
+
130
+ Naming/ConstantName:
131
+ Enabled: false
132
+
133
+ Naming/FileName:
134
+ AllowedAcronyms:
135
+ - HMAC
136
+ - OAuth2
137
+ Exclude:
138
+ - lib/xero_hq/**/*
139
+ - lib/**/*
140
+ - gems/**/*
141
+ - lib/http_errors.rb
142
+ ExpectMatchingDefinition: true
143
+ Include:
144
+ - lib/**/*
145
+
146
+ Naming/MemoizedInstanceVariableName:
147
+ Enabled: false
148
+
149
+ Naming/PredicateName:
150
+ Enabled: false
151
+
152
+ Naming/RescuedExceptionsVariableName:
153
+ Enabled: true
154
+ PreferredName: error
155
+
156
+ Naming/MethodParameterName:
157
+ Enabled: false
158
+
159
+ Naming/VariableNumber:
160
+ Enabled: false
161
+
162
+ Performance/Count:
163
+ Enabled: false
164
+
165
+ Performance/Casecmp:
166
+ Enabled: false
167
+
168
+ Performance/TimesMap:
169
+ Enabled: false
170
+
171
+ Performance/RegexpMatch:
172
+ Enabled: false
173
+
174
+ RSpec/AnyInstance:
175
+ Enabled: false
176
+
177
+ RSpec/BeEql:
178
+ Enabled: true
179
+
180
+ RSpec/BeforeAfterAll:
181
+ Enabled: false
182
+
183
+ RSpec/ContextWording:
184
+ Enabled: false
185
+
186
+ RSpec/DescribeClass:
187
+ Enabled: false
188
+
189
+ RSpec/DescribeMethod:
190
+ Enabled: false
191
+
192
+ RSpec/DescribedClass:
193
+ Enabled: false
194
+
195
+ RSpec/EmptyExampleGroup:
196
+ Enabled: false
197
+
198
+ RSpec/EmptyLineAfterExampleGroup:
199
+ Enabled: true
200
+
201
+ RSpec/EmptyLineAfterFinalLet:
202
+ Enabled: true
203
+
204
+ RSpec/EmptyLineAfterHook:
205
+ Enabled: true
206
+
207
+ RSpec/EmptyLineAfterSubject:
208
+ Enabled: true
209
+
210
+ RSpec/ExampleLength:
211
+ Enabled: false
212
+
213
+ RSpec/ExampleWording:
214
+ Enabled: false
215
+
216
+ RSpec/ExpectChange:
217
+ Enabled: true
218
+ EnforcedStyle: block
219
+
220
+ RSpec/ExpectInHook:
221
+ Enabled: false
222
+
223
+ RSpec/FilePath:
224
+ Enabled: true
225
+ Exclude:
226
+ - spec/graphql/**/*.rb # TODO: Fix GQL tests
227
+
228
+ RSpec/Focus:
229
+ Enabled: true
230
+
231
+ RSpec/HookArgument:
232
+ Enabled: true
233
+ EnforcedStyle: each
234
+
235
+ RSpec/HooksBeforeExamples:
236
+ Enabled: false
237
+
238
+ RSpec/ImplicitExpect:
239
+ Enabled: false
240
+
241
+ RSpec/InstanceVariable:
242
+ Enabled: false
243
+
244
+ RSpec/IteratedExpectation:
245
+ Enabled: false
246
+
247
+ RSpec/LeadingSubject:
248
+ Enabled: false
249
+
250
+ RSpec/LeakyConstantDeclaration:
251
+ Enabled: false
252
+
253
+ RSpec/LetBeforeExamples:
254
+ Enabled: false
255
+
256
+ RSpec/LetSetup:
257
+ Enabled: false
258
+
259
+ RSpec/MessageChain:
260
+ Enabled: false
261
+
262
+ RSpec/MessageSpies:
263
+ Enabled: false
264
+
265
+ RSpec/MultipleDescribes:
266
+ Enabled: false
267
+
268
+ RSpec/MultipleExpectations:
269
+ Enabled: false
270
+
271
+ RSpec/MultipleSubjects:
272
+ Enabled: false
273
+
274
+ RSpec/NamedSubject:
275
+ Enabled: false
276
+
277
+ RSpec/NestedGroups:
278
+ Enabled: false
279
+
280
+ RSpec/NotToNot:
281
+ Enabled: true
282
+
283
+ RSpec/OverwritingSetup:
284
+ Enabled: false
285
+
286
+ RSpec/PredicateMatcher:
287
+ Enabled: false
288
+
289
+ RSpec/RepeatedDescription:
290
+ Enabled: false
291
+
292
+ RSpec/RepeatedExample:
293
+ Enabled: false
294
+
295
+ RSpec/ReturnFromStub:
296
+ Enabled: false
297
+
298
+ RSpec/ScatteredLet:
299
+ Enabled: false
300
+
301
+ RSpec/ScatteredSetup:
302
+ Enabled: false
303
+
304
+ RSpec/SubjectStub:
305
+ Enabled: false
306
+
307
+ RSpec/UnspecifiedException:
308
+ Enabled: false
309
+
310
+ RSpec/VerifiedDoubles:
311
+ Enabled: false
312
+
313
+ RSpec/VoidExpect:
314
+ Enabled: false
315
+
316
+ Security/MarshalLoad:
317
+ Enabled: false
318
+
319
+ Security/YAMLLoad:
320
+ Enabled: false
321
+
322
+ Style/Alias:
323
+ Enabled: false
324
+
325
+ Style/AndOr:
326
+ Enabled: false
327
+ Include:
328
+ - lib/karbon_integration/**/*
329
+
330
+ Style/ClassAndModuleChildren:
331
+ Enabled: false
332
+
333
+ Style/DateTime:
334
+ Enabled: false
335
+
336
+ Style/Documentation:
337
+ Enabled: false
338
+
339
+ Style/EmptyMethod:
340
+ Enabled: true
341
+ EnforcedStyle: expanded
342
+
343
+ Style/FormatStringToken:
344
+ Enabled: false
345
+
346
+ Style/FrozenStringLiteralComment:
347
+ Enabled: false
348
+
349
+ Style/GuardClause:
350
+ Enabled: false
351
+ Include:
352
+ - lib/payments/**/*
353
+
354
+ Style/HashSyntax:
355
+ Enabled: true
356
+ EnforcedStyle: ruby19_no_mixed_keys
357
+
358
+ Style/IfUnlessModifier:
359
+ Enabled: false
360
+
361
+ Style/InverseMethods:
362
+ Enabled: false
363
+
364
+ Style/Lambda:
365
+ Enabled: false
366
+
367
+ Style/LambdaCall:
368
+ Enabled: false
369
+ Include:
370
+ - lib/karbon_integration/**/*
371
+
372
+ Style/MethodCalledOnDoEndBlock:
373
+ Enabled: false
374
+
375
+ Style/MethodCallWithArgsParentheses:
376
+ Enabled: true
377
+ EnforcedStyle: require_parentheses
378
+ IgnoredPatterns:
379
+ - include
380
+ - require
381
+ - require_relative
382
+ - require_dependency
383
+ - raise
384
+ # Specs
385
+ - to
386
+ - not_to
387
+
388
+ Style/MethodMissingSuper:
389
+ Enabled: false
390
+
391
+ Style/MissingRespondToMissing:
392
+ Enabled: false
393
+
394
+ Style/MixinUsage:
395
+ Enabled: true
396
+ Exclude:
397
+ - spec/**/*_spec.rb
398
+
399
+ Style/ModuleFunction:
400
+ Enabled: false
401
+
402
+ Style/MultilineBlockChain:
403
+ Enabled: false
404
+
405
+ Style/MultilineIfModifier:
406
+ Enabled: false
407
+
408
+ Style/MultilineTernaryOperator:
409
+ Enabled: false
410
+
411
+ Style/NegatedIf:
412
+ Enabled: false
413
+
414
+ Style/Not:
415
+ Enabled: false
416
+
417
+ Style/NumericLiterals:
418
+ Enabled: false
419
+
420
+ Style/NumericPredicate:
421
+ Enabled: false
422
+
423
+ Style/PercentLiteralDelimiters:
424
+ Enabled: false
425
+
426
+ Style/RaiseArgs:
427
+ Enabled: false
428
+
429
+ Style/RedundantParentheses:
430
+ Enabled: false
431
+ Include:
432
+ - lib/karbon_integration/**/*
433
+
434
+ Style/RedundantSelf:
435
+ Enabled: false
436
+
437
+ Style/RegexpLiteral:
438
+ Enabled: false
439
+
440
+ Style/SafeNavigation:
441
+ Enabled: false
442
+
443
+ Style/Semicolon:
444
+ Enabled: true
445
+
446
+ Style/SignalException:
447
+ Enabled: true
448
+ EnforcedStyle: only_raise
449
+
450
+ Style/StringLiterals:
451
+ EnforcedStyle: double_quotes
452
+
453
+ Style/StringLiteralsInInterpolation:
454
+ Enabled: false
455
+
456
+ Style/StructInheritance:
457
+ Enabled: false
458
+
459
+ Style/SymbolArray:
460
+ Enabled: false
461
+
462
+ Style/SymbolProc:
463
+ Enabled: true
464
+
465
+ Style/ZeroLengthPredicate:
466
+ Enabled: false
data/.travis.yml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ sudo: false
3
+ language: ruby
4
+ cache: bundler
5
+ rvm:
6
+ - 2.6.3
7
+ before_install: gem install bundler -v 2.0.1
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source("https://rubygems.org")
2
+
3
+ # Specify your gem's dependencies in client_success.gemspec
4
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,111 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ client_success (0.1.2)
5
+ activesupport (~> 5.2)
6
+ dry-types (= 0.11.0)
7
+ faraday
8
+ faraday_middleware
9
+ hashie
10
+ typhoeus
11
+
12
+ GEM
13
+ remote: https://rubygems.org/
14
+ specs:
15
+ activesupport (5.2.4.2)
16
+ concurrent-ruby (~> 1.0, >= 1.0.2)
17
+ i18n (>= 0.7, < 2)
18
+ minitest (~> 5.1)
19
+ tzinfo (~> 1.1)
20
+ ast (2.4.0)
21
+ concurrent-ruby (1.1.6)
22
+ diff-lcs (1.3)
23
+ dry-configurable (0.11.3)
24
+ concurrent-ruby (~> 1.0)
25
+ dry-core (~> 0.4, >= 0.4.7)
26
+ dry-equalizer (~> 0.2)
27
+ dry-container (0.7.2)
28
+ concurrent-ruby (~> 1.0)
29
+ dry-configurable (~> 0.1, >= 0.1.3)
30
+ dry-core (0.4.9)
31
+ concurrent-ruby (~> 1.0)
32
+ dry-equalizer (0.3.0)
33
+ dry-logic (0.6.1)
34
+ concurrent-ruby (~> 1.0)
35
+ dry-core (~> 0.2)
36
+ dry-equalizer (~> 0.2)
37
+ dry-types (0.11.0)
38
+ concurrent-ruby (~> 1.0)
39
+ dry-configurable (~> 0.1)
40
+ dry-container (~> 0.3)
41
+ dry-core (~> 0.2, >= 0.2.1)
42
+ dry-equalizer (~> 0.2)
43
+ dry-logic (~> 0.4, >= 0.4.0)
44
+ inflecto (~> 0.0.0, >= 0.0.2)
45
+ ethon (0.12.0)
46
+ ffi (>= 1.3.0)
47
+ faker (2.10.2)
48
+ i18n (>= 1.6, < 2)
49
+ faraday (0.17.3)
50
+ multipart-post (>= 1.2, < 3)
51
+ faraday_middleware (0.14.0)
52
+ faraday (>= 0.7.4, < 1.0)
53
+ ffi (1.12.2)
54
+ hashie (4.1.0)
55
+ i18n (1.8.2)
56
+ concurrent-ruby (~> 1.0)
57
+ inflecto (0.0.2)
58
+ jaro_winkler (1.5.4)
59
+ minitest (5.14.0)
60
+ multipart-post (2.1.1)
61
+ parallel (1.19.1)
62
+ parser (2.7.0.4)
63
+ ast (~> 2.4.0)
64
+ rainbow (3.0.0)
65
+ rake (13.0.1)
66
+ rspec (3.9.0)
67
+ rspec-core (~> 3.9.0)
68
+ rspec-expectations (~> 3.9.0)
69
+ rspec-mocks (~> 3.9.0)
70
+ rspec-core (3.9.1)
71
+ rspec-support (~> 3.9.1)
72
+ rspec-expectations (3.9.0)
73
+ diff-lcs (>= 1.2.0, < 2.0)
74
+ rspec-support (~> 3.9.0)
75
+ rspec-mocks (3.9.1)
76
+ diff-lcs (>= 1.2.0, < 2.0)
77
+ rspec-support (~> 3.9.0)
78
+ rspec-support (3.9.2)
79
+ rubocop (0.77.0)
80
+ jaro_winkler (~> 1.5.1)
81
+ parallel (~> 1.10)
82
+ parser (>= 2.6)
83
+ rainbow (>= 2.2.2, < 4.0)
84
+ ruby-progressbar (~> 1.7)
85
+ unicode-display_width (>= 1.4.0, < 1.7)
86
+ rubocop-rspec (1.38.1)
87
+ rubocop (>= 0.68.1)
88
+ ruby-progressbar (1.10.1)
89
+ thread_safe (0.3.6)
90
+ typhoeus (1.3.1)
91
+ ethon (>= 0.9.0)
92
+ tzinfo (1.2.6)
93
+ thread_safe (~> 0.1)
94
+ unicode-display_width (1.6.1)
95
+ vcr (5.1.0)
96
+
97
+ PLATFORMS
98
+ ruby
99
+
100
+ DEPENDENCIES
101
+ bundler (~> 2.0)
102
+ client_success!
103
+ faker
104
+ rake (>= 12.3.3)
105
+ rspec (~> 3.0)
106
+ rubocop (= 0.77.0)
107
+ rubocop-rspec
108
+ vcr
109
+
110
+ BUNDLED WITH
111
+ 2.1.4
data/README.md ADDED
@@ -0,0 +1,52 @@
1
+ # Ruby Wrapper for the [ClientSuccess Open API](https://clientsuccessapi.docs.apiary.io/)
2
+
3
+ ## Installation
4
+
5
+ Add this line to your application's Gemfile:
6
+
7
+ ```ruby
8
+ gem "client_success"
9
+ ```
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+
16
+ ## Usage
17
+
18
+ In order to make requests against the ClientSuccess Open API you'll first need to use your existing credentials (username and password) to create an Access Token:
19
+
20
+ ```ruby
21
+ response = ClientSuccess::AccessToken::Create(
22
+ username: "test@example.com",
23
+ password: "Password123"
24
+ )
25
+
26
+ puts response["access_token"]
27
+ => "979e3ce5-5f57-486a-af03-d328f50bd356"
28
+ ```
29
+
30
+ If the supplied credentials could not be authenticated a `ClientSuccess::AccessToken::InvalidCredentials` exception will be raised. Note that Access Tokens are valid for 12 hours, after which a new one must be created.
31
+
32
+ Once you have successfully created an Access Token you can initialise a connection object and make authenticated requests:
33
+
34
+ ```ruby
35
+ cs = ClientSuccess::Connection.authorised(
36
+ response["access_token"]
37
+ )
38
+
39
+ # get a list of all clients
40
+ clients = ClientSuccess::Client.list_all(connection: cs)
41
+ ```
42
+
43
+ ## Development
44
+
45
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
46
+
47
+ To install this gem onto your local machine, run `bundle exec rake install`.
48
+
49
+
50
+ ## Contributing
51
+
52
+ Bug reports and pull requests are welcome on GitHub at https://github.com/ignitionapp/client_success.
data/Rakefile ADDED
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task(default: :spec)
data/bin/console ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "client_success"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start(__FILE__)
data/bin/setup ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here