laces 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (106) hide show
  1. data/CONTRIBUTING.md +38 -0
  2. data/Gemfile +3 -0
  3. data/Gemfile.lock +122 -0
  4. data/LICENSE +21 -0
  5. data/README.md +5 -0
  6. data/Rakefile +8 -0
  7. data/bin/laces +16 -0
  8. data/features/creating_a_heroku_app.feature +9 -0
  9. data/features/rake_clean.feature +21 -0
  10. data/features/skipping_clearance.feature +13 -0
  11. data/features/step_definitions/gem_steps.rb +5 -0
  12. data/features/step_definitions/heroku_steps.rb +3 -0
  13. data/features/step_definitions/shell_steps.rb +55 -0
  14. data/features/support/bin/heroku +5 -0
  15. data/features/support/env.rb +15 -0
  16. data/features/support/fake_heroku.rb +21 -0
  17. data/laces-0.0.1.gem +0 -0
  18. data/laces.gemspec +35 -0
  19. data/lib/laces/actions.rb +35 -0
  20. data/lib/laces/app_builder.rb +237 -0
  21. data/lib/laces/generators/app_generator.rb +111 -0
  22. data/lib/laces/version.rb +3 -0
  23. data/templates/.DS_Store +0 -0
  24. data/templates/Gemfile_template +76 -0
  25. data/templates/HEROKU_README.md +66 -0
  26. data/templates/Procfile +1 -0
  27. data/templates/README.md +81 -0
  28. data/templates/app/assets/imgs/glyphicons-halflings-white.png +0 -0
  29. data/templates/app/assets/imgs/glyphicons-halflings.png +0 -0
  30. data/templates/app/assets/javascripts/admin.coffee +20 -0
  31. data/templates/app/assets/javascripts/application.coffee +21 -0
  32. data/templates/app/assets/javascripts/lib/actinology.coffee +47 -0
  33. data/templates/app/assets/javascripts/lib/analytics.js +11 -0
  34. data/templates/app/assets/javascripts/lib/auth_token_sync.js +17 -0
  35. data/templates/app/assets/javascripts/lib/backbone-ui.js +2455 -0
  36. data/templates/app/assets/javascripts/lib/backbone.coffee +27 -0
  37. data/templates/app/assets/javascripts/lib/backbone/collection.js +249 -0
  38. data/templates/app/assets/javascripts/lib/backbone/events.js +64 -0
  39. data/templates/app/assets/javascripts/lib/backbone/helpers.js +68 -0
  40. data/templates/app/assets/javascripts/lib/backbone/history.js +144 -0
  41. data/templates/app/assets/javascripts/lib/backbone/model.js +291 -0
  42. data/templates/app/assets/javascripts/lib/backbone/router.coffee +45 -0
  43. data/templates/app/assets/javascripts/lib/backbone/sync.coffee +38 -0
  44. data/templates/app/assets/javascripts/lib/backbone/view.js +150 -0
  45. data/templates/app/assets/javascripts/lib/backbone_extended.coffee +276 -0
  46. data/templates/app/assets/javascripts/lib/bootstrap.js +1836 -0
  47. data/templates/app/assets/javascripts/lib/inflection.js +658 -0
  48. data/templates/app/assets/javascripts/lib/jquery-ui.js +343 -0
  49. data/templates/app/assets/javascripts/lib/jquery.hotkeys.js +102 -0
  50. data/templates/app/assets/javascripts/lib/jquery.js +4 -0
  51. data/templates/app/assets/javascripts/lib/milk.js.coffee +265 -0
  52. data/templates/app/assets/javascripts/lib/raw.js +143 -0
  53. data/templates/app/assets/javascripts/lib/strftime.js +732 -0
  54. data/templates/app/assets/javascripts/lib/throttle-debounce.js +251 -0
  55. data/templates/app/assets/javascripts/lib/timeago.js +148 -0
  56. data/templates/app/assets/javascripts/lib/underscore.js +28 -0
  57. data/templates/app/assets/styles/application.sass +21 -0
  58. data/templates/app/assets/styles/layouts/default.sass +15 -0
  59. data/templates/app/assets/styles/layouts/footer.sass +0 -0
  60. data/templates/app/assets/styles/layouts/forms.sass +34 -0
  61. data/templates/app/assets/styles/layouts/header.sass +0 -0
  62. data/templates/app/assets/styles/layouts/navigation.sass +0 -0
  63. data/templates/app/assets/styles/lib/backbone-ui.css +580 -0
  64. data/templates/app/assets/styles/lib/bootstrap.sass +4248 -0
  65. data/templates/app/assets/styles/pages/home.sass +0 -0
  66. data/templates/app/assets/styles/sessions/new.sass +0 -0
  67. data/templates/app/assets/styles/users/activate.sass +0 -0
  68. data/templates/app/assets/styles/users/new.sass +0 -0
  69. data/templates/app/assets/styles/users/suspended.sass +0 -0
  70. data/templates/app/controllers/app_controller.rb +14 -0
  71. data/templates/app/controllers/pages_controller.rb +2 -0
  72. data/templates/app/controllers/sessions_controller.rb +2 -0
  73. data/templates/app/controllers/templating_controller.rb +31 -0
  74. data/templates/app/controllers/users_controller.rb +2 -0
  75. data/templates/app/helpers/app_helper.rb +94 -0
  76. data/templates/app/helpers/users_helper.rb +53 -0
  77. data/templates/app/models/user.rb +9 -0
  78. data/templates/app/views/devise/confirmations/new.haml +9 -0
  79. data/templates/app/views/devise/passwords/edit.haml +11 -0
  80. data/templates/app/views/devise/passwords/new.haml +9 -0
  81. data/templates/app/views/devise/registrations/edit.haml +13 -0
  82. data/templates/app/views/devise/registrations/new.haml +8 -0
  83. data/templates/app/views/devise/sessions/_form.haml +7 -0
  84. data/templates/app/views/devise/sessions/new.haml +5 -0
  85. data/templates/app/views/devise/unlocks/new.haml +7 -0
  86. data/templates/app/views/layouts/_ascii.haml +0 -0
  87. data/templates/app/views/layouts/_column.haml +0 -0
  88. data/templates/app/views/layouts/_content.haml +1 -0
  89. data/templates/app/views/layouts/_extra.haml +0 -0
  90. data/templates/app/views/layouts/_footer.haml +9 -0
  91. data/templates/app/views/layouts/_head.haml +13 -0
  92. data/templates/app/views/layouts/_header.haml +6 -0
  93. data/templates/app/views/layouts/application.html.haml +16 -0
  94. data/templates/app/views/pages/home.haml +1 -0
  95. data/templates/config/app.yml +29 -0
  96. data/templates/config/application.erb +28 -0
  97. data/templates/config/database.yml +32 -0
  98. data/templates/config/initializers/devise.rb +232 -0
  99. data/templates/config/initializers/rabl_init.rb +4 -0
  100. data/templates/config/initializers/setup_mail.rb +13 -0
  101. data/templates/config/initializers/wrap_parameters.rb +12 -0
  102. data/templates/db/migrate/user_migration.rb +36 -0
  103. data/templates/laces_gitignore +9 -0
  104. data/templates/lib/development_mail_interceptor.rb +7 -0
  105. data/templates/lib/templating.rb +40 -0
  106. metadata +225 -0
@@ -0,0 +1,15 @@
1
+ //*
2
+ //+box-sizing(border-box)
3
+
4
+ .clear
5
+ :position relative
6
+ :clear both
7
+
8
+ .container
9
+ :background rgb(255,255,255)
10
+ :margin
11
+ :top 20px
12
+ :padding 10px
13
+ +border-radius(6px)
14
+ +box-shadow(2px 2px 4px rgb(160,160,160))
15
+ :border solid 1px rgb(160,160,160)
@@ -0,0 +1,34 @@
1
+ form.default
2
+ .text_field, .password_field
3
+ :margin-bottom 10px
4
+ :padding-right 10px
5
+ input
6
+ :font-size 16px
7
+ :padding 5px
8
+ :font-family "Lucida Grande","Helvetica Neue",Verdana,Arial,Helvetica,sans-serif
9
+ :outline none
10
+ :border
11
+ :top solid 1px rgb(176,176,176)
12
+ :left solid 1px rgb(233,233,233)
13
+ :bottom solid 1px rgb(233,233,233)
14
+ :right solid 1px rgb(176,176,176)
15
+ .text_area
16
+ :margin-bottom 10px
17
+ :padding-right 10px
18
+ textarea
19
+ :font-size 14px
20
+ :padding 5px
21
+ :font-family "Lucida Grande","Helvetica Neue",Verdana,Arial,Helvetica,sans-serif
22
+ :outline none
23
+ :border
24
+ :top solid 1px rgb(176,176,176)
25
+ :left solid 1px rgb(233,233,233)
26
+ :bottom solid 1px rgb(233,233,233)
27
+ :right solid 1px rgb(176,176,176)
28
+
29
+ .text_field, .text_area, .password_field
30
+ label
31
+ :font-size 12px
32
+ :display block
33
+ :padding 0px
34
+ :clear both
@@ -0,0 +1,580 @@
1
+ a.button {
2
+ position:relative;
3
+ height:28px;
4
+ font-size:14px;
5
+ font-family:Helvetica;
6
+ color:#333;
7
+ border:1px solid #666;
8
+ line-height:30px;
9
+ -webkit-user-select: none;
10
+ -khtml-user-select: none;
11
+ -moz-user-select: none;
12
+ -o-user-select: none;
13
+ user-select: none;
14
+ background-color:#eee;
15
+
16
+ /* inline-block with IE7 hack */
17
+ display: inline-block;
18
+ zoom: 1;
19
+ *display: inline;
20
+ vertical-align:top;
21
+ text-decoration:none;
22
+ }
23
+
24
+ .button .label {
25
+ line-height:28px;
26
+ padding:0;
27
+ }
28
+
29
+ .button.has_border .label {
30
+ padding:0 5px;
31
+ }
32
+
33
+ .button.disabled {
34
+ color:#aaa;
35
+ }
36
+
37
+ .button.has_border.disabled {
38
+ border-color:#999;
39
+ }
40
+
41
+ .button.has_border:hover {
42
+ background-color:#ddd;
43
+ border-color:#222;
44
+ }
45
+
46
+ .button.has_border.disabled:hover {
47
+ background-color:#fff;
48
+ border-color:#999;
49
+ cursor:default;
50
+ }
51
+
52
+ .button.has_border.active {
53
+ background-color:#ccc;
54
+ }
55
+
56
+ .button input[type=submit] {
57
+ border:1px solid transparent;
58
+ background-color:transparent;
59
+ position:absolute;
60
+ top:-5px;
61
+ right:-5px;
62
+ bottom:-5px;
63
+ left:-5px;
64
+ cursor:pointer;
65
+ }
66
+ .calendar {
67
+ user-select: none;
68
+ -webkit-user-select: none;
69
+ text-transform:capitalize;
70
+ }
71
+
72
+ .calendar table {
73
+ border-collapse:collapse;
74
+ border:1px solid #444;
75
+ }
76
+
77
+ .calendar thead {
78
+ border-bottom:1px solid #444;
79
+ line-height:33px;
80
+ background-color:#eaeaea;
81
+ }
82
+
83
+ .calendar .go_forward,
84
+ .calendar .title {
85
+ border-left:1px solid #444;
86
+ }
87
+
88
+ .calendar a {
89
+ display:block;
90
+ text-decoration:none;
91
+ color:#222;
92
+ }
93
+
94
+ .calendar td,
95
+ .calendar th {
96
+ text-align:center;
97
+ padding:0;
98
+ margin:0;
99
+ font-size:14px;
100
+ }
101
+
102
+ .calendar .row.days td {
103
+ line-height:33px;
104
+ border-right:1px solid #444;
105
+ background-color:#eaeaea;
106
+ }
107
+
108
+ .calendar .cell {
109
+ border:1px solid #444;
110
+ background-color:#fff;
111
+ }
112
+
113
+ .calendar .cell.inactive {
114
+ background-color:#eaeaea;
115
+ color:#999;
116
+ }
117
+
118
+ .calendar .cell.today {
119
+ font-weight:bold;
120
+ }
121
+
122
+ .calendar .cell a,
123
+ .calendar .cell .day {
124
+ width:33px;
125
+ line-height:33px;
126
+ }
127
+
128
+ .calendar .cell a:hover,
129
+ .calendar .cell a:active {
130
+ background-color:#e9d4c7;
131
+ }
132
+
133
+ .calendar .cell.selected a,
134
+ .calendar .cell.selected a:hover {
135
+ background-color:#ae5317;
136
+ color:#fff;
137
+ }
138
+
139
+ .checkbox {
140
+ text-decoration:none;
141
+ height:30px;
142
+ white-space:nowrap;
143
+ }
144
+
145
+ .checkbox:hover {
146
+ cursor:pointer;
147
+ }
148
+
149
+ .checkbox .checkmark {
150
+ position:relative;
151
+ width:20px;
152
+ height:20px;
153
+ margin-top:5px;
154
+ text-align:center;
155
+ border:1px solid #666;
156
+ color:#222;
157
+ font-size:18px;
158
+ background-color:#fff;
159
+ }
160
+
161
+ .checkbox:hover .checkmark {
162
+ background-color:#eee;
163
+ border-color:#222;
164
+ }
165
+
166
+ .checkbox .checkmark_fill {
167
+ height:14px;
168
+ width:14px;
169
+ line-height:16px;
170
+ position:absolute;
171
+ background-color:#222;
172
+ top:3px;
173
+ left:3px;
174
+ }
175
+
176
+ .checkbox .label {
177
+ line-height:32px;
178
+ padding:0 0 0 10px;
179
+ text-decoration:none;
180
+ color:#222;
181
+ overflow:hidden;
182
+ }
183
+
184
+ .checkbox,
185
+ .checkbox .checkmark,
186
+ .checkbox .label {
187
+ /* inline-block with IE7 hack */
188
+ display: inline-block;
189
+ zoom: 1;
190
+ *display: inline;
191
+ vertical-align:top;
192
+ }
193
+ .date_picker .text_field {
194
+ width:100px;
195
+ }
196
+
197
+ .date_picker_calendar {
198
+ position:absolute;
199
+ z-index:1000;
200
+ }
201
+ .link {
202
+ position:relative;
203
+ /* inline-block with IE7 hack */
204
+ display: inline-block;
205
+ zoom: 1;
206
+ *display: inline;
207
+ vertical-align:middle;
208
+ line-height:30px;
209
+ }.list ul {
210
+ list-style-type:none;
211
+ margin:0;
212
+ padding:0;
213
+ }
214
+ .menu {
215
+ max-height:150px;
216
+ margin-right:3px;
217
+ }
218
+
219
+ .menu ul {
220
+ padding:5px;
221
+ }
222
+
223
+ .menu .menu_scroller {
224
+ border:1px solid #666;
225
+ background-color:#fff;
226
+ -moz-box-shadow: 2px 2px 2px #666;
227
+ -webkit-box-shadow: 2px 2px 2px #666;
228
+ box-shadow: 2px 2px 2px #666;
229
+ }
230
+
231
+ .menu .menu_scroller .content {
232
+ margin:0;
233
+ max-height:150px;
234
+ }
235
+
236
+ .menu .menu_scroller.disabled .content {
237
+ margin-right:0;
238
+ }
239
+
240
+ .menu li {
241
+ font-size:14px;
242
+ white-space:nowrap;
243
+ margin:2px 0 0 0;
244
+ list-style:none;
245
+ vertical-align:bottom;
246
+ }
247
+
248
+ .menu li a {
249
+ text-decoration:none;
250
+ line-height:30px;
251
+ color:#222;
252
+ padding:2px 5px;
253
+ display:block;
254
+ background-color:#fff;
255
+ height:28px;
256
+ vertical-align:middle;
257
+ }
258
+
259
+ .menu li a span {
260
+ padding:0 2px;
261
+ }
262
+
263
+ .menu li a:hover span,
264
+ .menu li a:link span,
265
+ .menu li a:active span,
266
+ .menu li a:visited span{
267
+ text-decoration:none;
268
+ color:#222;
269
+ }
270
+
271
+ .menu li a:hover,
272
+ .menu li a.selected {
273
+ background-color:#e9d4c7;
274
+ text-decoration:none;
275
+ }
276
+ .pulldown {
277
+ position:relative;
278
+ height:30px;
279
+ /* inline-block with IE7 hack */
280
+ display: inline-block;
281
+ zoom: 1;
282
+ *display: inline;
283
+ }
284
+
285
+ .pulldown.placeholder {
286
+ font-style:italic;
287
+ }
288
+
289
+ .pulldown .button:link,
290
+ .pulldown .button:active,
291
+ .pulldown .button:hover,
292
+ .pulldown .button:visited {
293
+ color:#333;
294
+ text-decoration:none;
295
+ }
296
+
297
+ .radio_group .choice:hover {
298
+ cursor:pointer;
299
+ }
300
+
301
+ .radio_group .mark {
302
+ margin:0 5px 0 0;
303
+ width:20px;
304
+ height:20px;
305
+ line-height:17px;
306
+ border:1px solid #666;
307
+ -moz-border-radius: 11px;
308
+ -webkit-border-radius: 11px;
309
+ border-radius: 11px;
310
+ color:#222;
311
+ font-family:Verdana;
312
+ text-align:center;
313
+ font-size:16px;
314
+ }
315
+ .radio_group .choice:hover .mark {
316
+ background-color:#eee;
317
+ border-color:#222;
318
+ }
319
+
320
+ .radio_group ul {
321
+ margin:0;
322
+ padding:0;
323
+ }
324
+
325
+ .radio_group li {
326
+ margin-left:10px;
327
+ }
328
+
329
+ .radio_group li a {
330
+ text-decoration:none;
331
+ }
332
+
333
+ .radio_group li a.choice {
334
+ /* inline-block with IE7 hack */
335
+ display: inline-block;
336
+ zoom: 1;
337
+ *display: inline;
338
+ vertical-align:top;
339
+ }
340
+
341
+ .radio_group .label {
342
+ line-height:22px;
343
+ color:#222;
344
+ cursor:pointer;
345
+ }
346
+
347
+ .radio_group .mark,
348
+ .radio_group li,
349
+ .radio_group .label {
350
+ /* inline-block with IE7 hack */
351
+ display: inline-block;
352
+ zoom: 1;
353
+ *display: inline;
354
+ }
355
+ .scroller {
356
+ outline: none;
357
+ position:relative;
358
+ }
359
+
360
+ .scroller .content_wrapper{
361
+ margin-right:13px;
362
+ }
363
+
364
+ .scroller.disabled .content_wrapper{
365
+ margin-right:1px;
366
+ }
367
+
368
+ .scroller .content {
369
+ overflow:hidden;
370
+ margin-right:9px;
371
+ }
372
+
373
+ .scroller.disabled .content {
374
+ margin-right:5px;
375
+ }
376
+
377
+ .scroller .tray {
378
+ position:absolute;
379
+ right:3px;
380
+ top:3px;
381
+ bottom:3px;
382
+ width:10px;
383
+ background-color:#eee;
384
+ }
385
+
386
+ .scroller.disabled .tray {
387
+ visibility:hidden;
388
+ }
389
+
390
+ .scroller .knob {
391
+ position:absolute;
392
+ right:1px;
393
+ width:8px;
394
+ cursor:move;
395
+ }
396
+
397
+ .scroller .knob_top {
398
+ position:absolute;
399
+ right:0;
400
+ left:0;
401
+ height:11px;
402
+ background-color:#555;
403
+ }
404
+
405
+ .knob_middle {
406
+ position:absolute;
407
+ right:0;
408
+ left:0;
409
+ top:10px;
410
+ bottom:10px;
411
+ background-color:#555;
412
+ }
413
+
414
+ .knob_bottom {
415
+ position:absolute;
416
+ right:0;
417
+ left:0;
418
+ bottom:0px;
419
+ height:10px;
420
+ background-color:#555;
421
+ }
422
+ .tab_set .tab_bar {
423
+ height:29px;
424
+ padding-left:20px;
425
+ }
426
+
427
+ .tab_set .tab {
428
+ text-decoration:none;
429
+ color:#222;
430
+ border:1px solid #222;
431
+ padding:0 10px;
432
+ margin:0 5px 0 0;
433
+ height:28px;
434
+ line-height:30px;
435
+ /* inline-block with IE7 hack */
436
+ display: inline-block;
437
+ zoom: 1;
438
+ *display: inline;
439
+ }
440
+
441
+ .tab_set .tab.selected,
442
+ .tab_set .tab.selected:hover {
443
+ background-color:#ddd;
444
+ }
445
+
446
+ .tab_set .tab:hover {
447
+ background-color:#eee;
448
+ }
449
+
450
+ .tab_set .content_container {
451
+ border:1px solid #666;
452
+ padding:10px;
453
+ }
454
+ .table_view {
455
+ border:1px solid #222;
456
+ }
457
+
458
+ .table_view table {
459
+ text-align:left;
460
+ width:100%;
461
+ }
462
+
463
+ .table_view table th {
464
+ padding:0;
465
+ margin:0;
466
+ background-color:#eee;
467
+ line-height:20px;
468
+ position:relative
469
+ }
470
+
471
+ .table_view th.first {
472
+ padding-left:5px;
473
+ border-left:none;
474
+ }
475
+
476
+ .table_view th.last {
477
+ padding-right:5px;
478
+ }
479
+
480
+ .table_view .content{
481
+ background-color:#fff;
482
+ padding:5px;
483
+ }
484
+
485
+ .table_view .wrapper {
486
+ padding:5px;
487
+ }
488
+
489
+ .table_view tr.first .wrapper {
490
+ }
491
+
492
+ .table_view .content td {
493
+ white-space:nowrap;
494
+ overflow:hidden;
495
+ }
496
+
497
+ .table_view.clickable .content tr:hover .wrapper {
498
+ background-color:#ddd;
499
+ cursor:pointer;
500
+ }
501
+
502
+ .table_view .glyph {
503
+ float:left;
504
+ margin-top:6px;
505
+ font-size:10px;
506
+ }
507
+
508
+ .table_view th.first .glyph {
509
+ padding-left:5px;
510
+ }
511
+
512
+ .table_view .sorted {
513
+ padding-left:16px;
514
+ }
515
+ .text_area {
516
+ position:relative;
517
+ border:1px solid #666;
518
+ background-color:#fff;
519
+ /* inline-block with IE7 hack */
520
+ display: inline-block;
521
+ zoom: 1;
522
+ *display: inline;
523
+ vertical-align:top;
524
+ }
525
+
526
+ .text_area.disabled {
527
+ filter:alpha(opacity=60);
528
+ opacity:0.6;
529
+ }
530
+
531
+ .text_area textarea {
532
+ border:none;
533
+ outline:none;
534
+ margin:5px 4px 4px 4px;
535
+ font-size:14px;
536
+ background-color:#fff;
537
+ }
538
+ .text_field {
539
+ position:relative;
540
+ border:1px solid #666;
541
+ width:200px;
542
+ height:28px;
543
+ background-color:#fff;
544
+ /* inline-block with IE7 hack */
545
+ display: inline-block;
546
+ zoom: 1;
547
+ *display: inline;
548
+ vertical-align:top;
549
+ }
550
+
551
+ .text_field.disabled {
552
+ filter:alpha(opacity=60);
553
+ opacity:0.6;
554
+ }
555
+
556
+ .text_field .input_wrapper {
557
+ position:absolute;
558
+ left:5px;
559
+ right:12px;
560
+ top:3px;
561
+ }
562
+
563
+ .text_field input {
564
+ width:100%;
565
+ border:0;
566
+ outline:none;
567
+ font-size:13px;
568
+ }
569
+ .time_picker .text_field {
570
+ width:80px;
571
+ }
572
+
573
+ .time_picker .menu li {
574
+ background-color:#fff;
575
+ }
576
+
577
+ .menu {
578
+ z-index:1000;
579
+ }
580
+