perkins 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (100) hide show
  1. checksums.yaml +7 -0
  2. data/.DS_Store +0 -0
  3. data/.env.example +4 -0
  4. data/.gitignore +19 -0
  5. data/.pryrc +3 -0
  6. data/.rspec +2 -0
  7. data/Gemfile +18 -0
  8. data/LICENSE.txt +22 -0
  9. data/README.md +71 -0
  10. data/Rakefile +28 -0
  11. data/TODO.md +4 -0
  12. data/bin/perkins +6 -0
  13. data/db/migrate/20150130143030_create_repo.rb +18 -0
  14. data/db/migrate/20150130143050_create_builds.rb +20 -0
  15. data/db/schema.rb +38 -0
  16. data/examples/config.rb +12 -0
  17. data/examples/database.yml +17 -0
  18. data/examples/mongo.yml +13 -0
  19. data/lib/core_ext/hash/compact.rb +8 -0
  20. data/lib/core_ext/hash/deep_merge.rb +15 -0
  21. data/lib/core_ext/hash/deep_symbolize_keys.rb +20 -0
  22. data/lib/core_ext/object/false.rb +5 -0
  23. data/lib/core_ext/string/indent.rb +5 -0
  24. data/lib/core_ext/string/unindent.rb +5 -0
  25. data/lib/perkins/.DS_Store +0 -0
  26. data/lib/perkins/application.rb +40 -0
  27. data/lib/perkins/assets/images/github.svg +4 -0
  28. data/lib/perkins/assets/images/spinner.svg +23 -0
  29. data/lib/perkins/assets/javascripts/app.js +9 -0
  30. data/lib/perkins/assets/javascripts/log_view.js.coffee +95 -0
  31. data/lib/perkins/assets/javascripts/perkings.js.coffee +40 -0
  32. data/lib/perkins/assets/javascripts/vendor/ansiparse.js +187 -0
  33. data/lib/perkins/assets/javascripts/vendor/jquery.timeago.js +189 -0
  34. data/lib/perkins/assets/javascripts/vendor/log.js +2 -0
  35. data/lib/perkins/assets/javascripts/vendor/minispade.js +55 -0
  36. data/lib/perkins/assets/stylesheets/app.css +2 -0
  37. data/lib/perkins/assets/stylesheets/log.css.scss +115 -0
  38. data/lib/perkins/assets/stylesheets/styles.css.scss +199 -0
  39. data/lib/perkins/auth/github.rb +181 -0
  40. data/lib/perkins/build/data/env.rb +84 -0
  41. data/lib/perkins/build/data/var.rb +60 -0
  42. data/lib/perkins/build/data.rb +167 -0
  43. data/lib/perkins/build/script/bundler.rb +76 -0
  44. data/lib/perkins/build/script/go.rb +100 -0
  45. data/lib/perkins/build/script/helpers.rb +39 -0
  46. data/lib/perkins/build/script/jdk.rb +43 -0
  47. data/lib/perkins/build/script/ruby.rb +31 -0
  48. data/lib/perkins/build/script/rvm.rb +73 -0
  49. data/lib/perkins/build/script/stages.rb +28 -0
  50. data/lib/perkins/build/script/templates/footer.sh +3 -0
  51. data/lib/perkins/build/script/templates/header.sh +201 -0
  52. data/lib/perkins/build/script/templates/xcode.sh +21 -0
  53. data/lib/perkins/build/script.rb +167 -0
  54. data/lib/perkins/build/shell/dsl.rb +104 -0
  55. data/lib/perkins/build/shell/node.rb +121 -0
  56. data/lib/perkins/build/shell.rb +16 -0
  57. data/lib/perkins/build.rb +27 -0
  58. data/lib/perkins/build_report.rb +11 -0
  59. data/lib/perkins/cli.rb +42 -0
  60. data/lib/perkins/commit.rb +30 -0
  61. data/lib/perkins/dsl/app_proxy.rb +23 -0
  62. data/lib/perkins/dsl.rb +12 -0
  63. data/lib/perkins/listener.rb +38 -0
  64. data/lib/perkins/logger.rb +12 -0
  65. data/lib/perkins/notifier.rb +5 -0
  66. data/lib/perkins/repo.rb +145 -0
  67. data/lib/perkins/runner.rb +124 -0
  68. data/lib/perkins/server.rb +314 -0
  69. data/lib/perkins/thor_utils.rb +79 -0
  70. data/lib/perkins/version.rb +3 -0
  71. data/lib/perkins/views/401.haml +1 -0
  72. data/lib/perkins/views/builds.haml +46 -0
  73. data/lib/perkins/views/index.haml +6 -0
  74. data/lib/perkins/views/layout.haml +53 -0
  75. data/lib/perkins/views/menu.haml +18 -0
  76. data/lib/perkins/views/orgs.haml +101 -0
  77. data/lib/perkins/views/profile.haml +31 -0
  78. data/lib/perkins/views/readme.md +20 -0
  79. data/lib/perkins/views/repos/config.haml +72 -0
  80. data/lib/perkins/views/repos/github.haml +76 -0
  81. data/lib/perkins/views/repos/menu.haml +17 -0
  82. data/lib/perkins/views/repos/repo.haml +64 -0
  83. data/lib/perkins/views/repos/spinner.haml +3 -0
  84. data/lib/perkins/webhooks/github.rb +12 -0
  85. data/lib/perkins/worker.rb +33 -0
  86. data/lib/perkins.rb +36 -0
  87. data/perkins.gemspec +52 -0
  88. data/spec/fixtures/.travis.yml +8 -0
  89. data/spec/fixtures/config.yml +6 -0
  90. data/spec/lib/build/build_spec.rb +58 -0
  91. data/spec/lib/commit_spec.rb +6 -0
  92. data/spec/lib/dsl_spec.rb +17 -0
  93. data/spec/lib/listener_spec.rb +30 -0
  94. data/spec/lib/repo_spec.rb +110 -0
  95. data/spec/lib/runner_spec.rb +76 -0
  96. data/spec/lib/server_spec.rb +108 -0
  97. data/spec/spec_helper.rb +67 -0
  98. data/spec/support/auth.rb +30 -0
  99. data/spec/support/github_api.rb +177 -0
  100. metadata +503 -0
metadata ADDED
@@ -0,0 +1,503 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: perkins
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - miguel michelson
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-02-01 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activesupport
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '3'
20
+ - - <
21
+ - !ruby/object:Gem::Version
22
+ version: '4.1'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '3'
30
+ - - <
31
+ - !ruby/object:Gem::Version
32
+ version: '4.1'
33
+ - !ruby/object:Gem::Dependency
34
+ name: activerecord
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - '>='
38
+ - !ruby/object:Gem::Version
39
+ version: '3'
40
+ - - <
41
+ - !ruby/object:Gem::Version
42
+ version: '4.1'
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - '>='
48
+ - !ruby/object:Gem::Version
49
+ version: '3'
50
+ - - <
51
+ - !ruby/object:Gem::Version
52
+ version: '4.1'
53
+ - !ruby/object:Gem::Dependency
54
+ name: sinatra-activerecord
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - '>='
58
+ - !ruby/object:Gem::Version
59
+ version: '0'
60
+ type: :runtime
61
+ prerelease: false
62
+ version_requirements: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - '>='
65
+ - !ruby/object:Gem::Version
66
+ version: '0'
67
+ - !ruby/object:Gem::Dependency
68
+ name: sinatra-contrib
69
+ requirement: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - '>='
72
+ - !ruby/object:Gem::Version
73
+ version: '0'
74
+ type: :runtime
75
+ prerelease: false
76
+ version_requirements: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - '>='
79
+ - !ruby/object:Gem::Version
80
+ version: '0'
81
+ - !ruby/object:Gem::Dependency
82
+ name: sqlite3
83
+ requirement: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - '>='
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
88
+ type: :runtime
89
+ prerelease: false
90
+ version_requirements: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - '>='
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
95
+ - !ruby/object:Gem::Dependency
96
+ name: git
97
+ requirement: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ type: :runtime
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - '>='
107
+ - !ruby/object:Gem::Version
108
+ version: '0'
109
+ - !ruby/object:Gem::Dependency
110
+ name: celluloid
111
+ requirement: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - '>='
114
+ - !ruby/object:Gem::Version
115
+ version: '0'
116
+ type: :runtime
117
+ prerelease: false
118
+ version_requirements: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - '>='
121
+ - !ruby/object:Gem::Version
122
+ version: '0'
123
+ - !ruby/object:Gem::Dependency
124
+ name: celluloid-io
125
+ requirement: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - '>='
128
+ - !ruby/object:Gem::Version
129
+ version: '0'
130
+ type: :runtime
131
+ prerelease: false
132
+ version_requirements: !ruby/object:Gem::Requirement
133
+ requirements:
134
+ - - '>='
135
+ - !ruby/object:Gem::Version
136
+ version: '0'
137
+ - !ruby/object:Gem::Dependency
138
+ name: redis
139
+ requirement: !ruby/object:Gem::Requirement
140
+ requirements:
141
+ - - '>='
142
+ - !ruby/object:Gem::Version
143
+ version: '0'
144
+ type: :runtime
145
+ prerelease: false
146
+ version_requirements: !ruby/object:Gem::Requirement
147
+ requirements:
148
+ - - '>='
149
+ - !ruby/object:Gem::Version
150
+ version: '0'
151
+ - !ruby/object:Gem::Dependency
152
+ name: thor
153
+ requirement: !ruby/object:Gem::Requirement
154
+ requirements:
155
+ - - '>='
156
+ - !ruby/object:Gem::Version
157
+ version: '0'
158
+ type: :runtime
159
+ prerelease: false
160
+ version_requirements: !ruby/object:Gem::Requirement
161
+ requirements:
162
+ - - '>='
163
+ - !ruby/object:Gem::Version
164
+ version: '0'
165
+ - !ruby/object:Gem::Dependency
166
+ name: sinatra
167
+ requirement: !ruby/object:Gem::Requirement
168
+ requirements:
169
+ - - '>='
170
+ - !ruby/object:Gem::Version
171
+ version: '0'
172
+ type: :runtime
173
+ prerelease: false
174
+ version_requirements: !ruby/object:Gem::Requirement
175
+ requirements:
176
+ - - '>='
177
+ - !ruby/object:Gem::Version
178
+ version: '0'
179
+ - !ruby/object:Gem::Dependency
180
+ name: haml
181
+ requirement: !ruby/object:Gem::Requirement
182
+ requirements:
183
+ - - '>='
184
+ - !ruby/object:Gem::Version
185
+ version: '0'
186
+ type: :runtime
187
+ prerelease: false
188
+ version_requirements: !ruby/object:Gem::Requirement
189
+ requirements:
190
+ - - '>='
191
+ - !ruby/object:Gem::Version
192
+ version: '0'
193
+ - !ruby/object:Gem::Dependency
194
+ name: sprockets
195
+ requirement: !ruby/object:Gem::Requirement
196
+ requirements:
197
+ - - '>='
198
+ - !ruby/object:Gem::Version
199
+ version: '0'
200
+ type: :runtime
201
+ prerelease: false
202
+ version_requirements: !ruby/object:Gem::Requirement
203
+ requirements:
204
+ - - '>='
205
+ - !ruby/object:Gem::Version
206
+ version: '0'
207
+ - !ruby/object:Gem::Dependency
208
+ name: yui-compressor
209
+ requirement: !ruby/object:Gem::Requirement
210
+ requirements:
211
+ - - '>='
212
+ - !ruby/object:Gem::Version
213
+ version: '0'
214
+ type: :runtime
215
+ prerelease: false
216
+ version_requirements: !ruby/object:Gem::Requirement
217
+ requirements:
218
+ - - '>='
219
+ - !ruby/object:Gem::Version
220
+ version: '0'
221
+ - !ruby/object:Gem::Dependency
222
+ name: rdiscount
223
+ requirement: !ruby/object:Gem::Requirement
224
+ requirements:
225
+ - - '>='
226
+ - !ruby/object:Gem::Version
227
+ version: '0'
228
+ type: :runtime
229
+ prerelease: false
230
+ version_requirements: !ruby/object:Gem::Requirement
231
+ requirements:
232
+ - - '>='
233
+ - !ruby/object:Gem::Version
234
+ version: '0'
235
+ - !ruby/object:Gem::Dependency
236
+ name: travis-yaml
237
+ requirement: !ruby/object:Gem::Requirement
238
+ requirements:
239
+ - - '>='
240
+ - !ruby/object:Gem::Version
241
+ version: '0'
242
+ type: :runtime
243
+ prerelease: false
244
+ version_requirements: !ruby/object:Gem::Requirement
245
+ requirements:
246
+ - - '>='
247
+ - !ruby/object:Gem::Version
248
+ version: '0'
249
+ - !ruby/object:Gem::Dependency
250
+ name: redis-namespace
251
+ requirement: !ruby/object:Gem::Requirement
252
+ requirements:
253
+ - - '>='
254
+ - !ruby/object:Gem::Version
255
+ version: '0'
256
+ type: :runtime
257
+ prerelease: false
258
+ version_requirements: !ruby/object:Gem::Requirement
259
+ requirements:
260
+ - - '>='
261
+ - !ruby/object:Gem::Version
262
+ version: '0'
263
+ - !ruby/object:Gem::Dependency
264
+ name: thin
265
+ requirement: !ruby/object:Gem::Requirement
266
+ requirements:
267
+ - - '>='
268
+ - !ruby/object:Gem::Version
269
+ version: '0'
270
+ type: :runtime
271
+ prerelease: false
272
+ version_requirements: !ruby/object:Gem::Requirement
273
+ requirements:
274
+ - - '>='
275
+ - !ruby/object:Gem::Version
276
+ version: '0'
277
+ - !ruby/object:Gem::Dependency
278
+ name: warden-github
279
+ requirement: !ruby/object:Gem::Requirement
280
+ requirements:
281
+ - - ~>
282
+ - !ruby/object:Gem::Version
283
+ version: '1.0'
284
+ type: :runtime
285
+ prerelease: false
286
+ version_requirements: !ruby/object:Gem::Requirement
287
+ requirements:
288
+ - - ~>
289
+ - !ruby/object:Gem::Version
290
+ version: '1.0'
291
+ - !ruby/object:Gem::Dependency
292
+ name: coffee-script
293
+ requirement: !ruby/object:Gem::Requirement
294
+ requirements:
295
+ - - '>='
296
+ - !ruby/object:Gem::Version
297
+ version: '0'
298
+ type: :runtime
299
+ prerelease: false
300
+ version_requirements: !ruby/object:Gem::Requirement
301
+ requirements:
302
+ - - '>='
303
+ - !ruby/object:Gem::Version
304
+ version: '0'
305
+ - !ruby/object:Gem::Dependency
306
+ name: sass
307
+ requirement: !ruby/object:Gem::Requirement
308
+ requirements:
309
+ - - '>='
310
+ - !ruby/object:Gem::Version
311
+ version: '0'
312
+ type: :runtime
313
+ prerelease: false
314
+ version_requirements: !ruby/object:Gem::Requirement
315
+ requirements:
316
+ - - '>='
317
+ - !ruby/object:Gem::Version
318
+ version: '0'
319
+ - !ruby/object:Gem::Dependency
320
+ name: bundler
321
+ requirement: !ruby/object:Gem::Requirement
322
+ requirements:
323
+ - - ~>
324
+ - !ruby/object:Gem::Version
325
+ version: '1.7'
326
+ type: :development
327
+ prerelease: false
328
+ version_requirements: !ruby/object:Gem::Requirement
329
+ requirements:
330
+ - - ~>
331
+ - !ruby/object:Gem::Version
332
+ version: '1.7'
333
+ - !ruby/object:Gem::Dependency
334
+ name: rake
335
+ requirement: !ruby/object:Gem::Requirement
336
+ requirements:
337
+ - - ~>
338
+ - !ruby/object:Gem::Version
339
+ version: '10.0'
340
+ type: :development
341
+ prerelease: false
342
+ version_requirements: !ruby/object:Gem::Requirement
343
+ requirements:
344
+ - - ~>
345
+ - !ruby/object:Gem::Version
346
+ version: '10.0'
347
+ - !ruby/object:Gem::Dependency
348
+ name: fakeredis
349
+ requirement: !ruby/object:Gem::Requirement
350
+ requirements:
351
+ - - '>='
352
+ - !ruby/object:Gem::Version
353
+ version: '0'
354
+ type: :development
355
+ prerelease: false
356
+ version_requirements: !ruby/object:Gem::Requirement
357
+ requirements:
358
+ - - '>='
359
+ - !ruby/object:Gem::Version
360
+ version: '0'
361
+ description: Minimal CI
362
+ email:
363
+ - miguelmichelson@gmail.com
364
+ executables:
365
+ - perkins
366
+ extensions: []
367
+ extra_rdoc_files: []
368
+ files:
369
+ - .DS_Store
370
+ - .env.example
371
+ - .gitignore
372
+ - .pryrc
373
+ - .rspec
374
+ - Gemfile
375
+ - LICENSE.txt
376
+ - README.md
377
+ - Rakefile
378
+ - TODO.md
379
+ - bin/perkins
380
+ - db/migrate/20150130143030_create_repo.rb
381
+ - db/migrate/20150130143050_create_builds.rb
382
+ - db/schema.rb
383
+ - examples/config.rb
384
+ - examples/database.yml
385
+ - examples/mongo.yml
386
+ - lib/core_ext/hash/compact.rb
387
+ - lib/core_ext/hash/deep_merge.rb
388
+ - lib/core_ext/hash/deep_symbolize_keys.rb
389
+ - lib/core_ext/object/false.rb
390
+ - lib/core_ext/string/indent.rb
391
+ - lib/core_ext/string/unindent.rb
392
+ - lib/perkins.rb
393
+ - lib/perkins/.DS_Store
394
+ - lib/perkins/application.rb
395
+ - lib/perkins/assets/images/github.svg
396
+ - lib/perkins/assets/images/spinner.svg
397
+ - lib/perkins/assets/javascripts/app.js
398
+ - lib/perkins/assets/javascripts/log_view.js.coffee
399
+ - lib/perkins/assets/javascripts/perkings.js.coffee
400
+ - lib/perkins/assets/javascripts/vendor/ansiparse.js
401
+ - lib/perkins/assets/javascripts/vendor/jquery.timeago.js
402
+ - lib/perkins/assets/javascripts/vendor/log.js
403
+ - lib/perkins/assets/javascripts/vendor/minispade.js
404
+ - lib/perkins/assets/stylesheets/app.css
405
+ - lib/perkins/assets/stylesheets/log.css.scss
406
+ - lib/perkins/assets/stylesheets/styles.css.scss
407
+ - lib/perkins/auth/github.rb
408
+ - lib/perkins/build.rb
409
+ - lib/perkins/build/data.rb
410
+ - lib/perkins/build/data/env.rb
411
+ - lib/perkins/build/data/var.rb
412
+ - lib/perkins/build/script.rb
413
+ - lib/perkins/build/script/bundler.rb
414
+ - lib/perkins/build/script/go.rb
415
+ - lib/perkins/build/script/helpers.rb
416
+ - lib/perkins/build/script/jdk.rb
417
+ - lib/perkins/build/script/ruby.rb
418
+ - lib/perkins/build/script/rvm.rb
419
+ - lib/perkins/build/script/stages.rb
420
+ - lib/perkins/build/script/templates/footer.sh
421
+ - lib/perkins/build/script/templates/header.sh
422
+ - lib/perkins/build/script/templates/xcode.sh
423
+ - lib/perkins/build/shell.rb
424
+ - lib/perkins/build/shell/dsl.rb
425
+ - lib/perkins/build/shell/node.rb
426
+ - lib/perkins/build_report.rb
427
+ - lib/perkins/cli.rb
428
+ - lib/perkins/commit.rb
429
+ - lib/perkins/dsl.rb
430
+ - lib/perkins/dsl/app_proxy.rb
431
+ - lib/perkins/listener.rb
432
+ - lib/perkins/logger.rb
433
+ - lib/perkins/notifier.rb
434
+ - lib/perkins/repo.rb
435
+ - lib/perkins/runner.rb
436
+ - lib/perkins/server.rb
437
+ - lib/perkins/thor_utils.rb
438
+ - lib/perkins/version.rb
439
+ - lib/perkins/views/401.haml
440
+ - lib/perkins/views/builds.haml
441
+ - lib/perkins/views/index.haml
442
+ - lib/perkins/views/layout.haml
443
+ - lib/perkins/views/menu.haml
444
+ - lib/perkins/views/orgs.haml
445
+ - lib/perkins/views/profile.haml
446
+ - lib/perkins/views/readme.md
447
+ - lib/perkins/views/repos/config.haml
448
+ - lib/perkins/views/repos/github.haml
449
+ - lib/perkins/views/repos/menu.haml
450
+ - lib/perkins/views/repos/repo.haml
451
+ - lib/perkins/views/repos/spinner.haml
452
+ - lib/perkins/webhooks/github.rb
453
+ - lib/perkins/worker.rb
454
+ - perkins.gemspec
455
+ - spec/fixtures/.travis.yml
456
+ - spec/fixtures/config.yml
457
+ - spec/lib/build/build_spec.rb
458
+ - spec/lib/commit_spec.rb
459
+ - spec/lib/dsl_spec.rb
460
+ - spec/lib/listener_spec.rb
461
+ - spec/lib/repo_spec.rb
462
+ - spec/lib/runner_spec.rb
463
+ - spec/lib/server_spec.rb
464
+ - spec/spec_helper.rb
465
+ - spec/support/auth.rb
466
+ - spec/support/github_api.rb
467
+ homepage: ''
468
+ licenses:
469
+ - MIT
470
+ metadata: {}
471
+ post_install_message:
472
+ rdoc_options: []
473
+ require_paths:
474
+ - lib
475
+ required_ruby_version: !ruby/object:Gem::Requirement
476
+ requirements:
477
+ - - '>='
478
+ - !ruby/object:Gem::Version
479
+ version: '0'
480
+ required_rubygems_version: !ruby/object:Gem::Requirement
481
+ requirements:
482
+ - - '>='
483
+ - !ruby/object:Gem::Version
484
+ version: '0'
485
+ requirements: []
486
+ rubyforge_project:
487
+ rubygems_version: 2.4.5
488
+ signing_key:
489
+ specification_version: 4
490
+ summary: Thin CI
491
+ test_files:
492
+ - spec/fixtures/.travis.yml
493
+ - spec/fixtures/config.yml
494
+ - spec/lib/build/build_spec.rb
495
+ - spec/lib/commit_spec.rb
496
+ - spec/lib/dsl_spec.rb
497
+ - spec/lib/listener_spec.rb
498
+ - spec/lib/repo_spec.rb
499
+ - spec/lib/runner_spec.rb
500
+ - spec/lib/server_spec.rb
501
+ - spec/spec_helper.rb
502
+ - spec/support/auth.rb
503
+ - spec/support/github_api.rb