laces 0.1.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.
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,14 @@
1
+ class ApplicationController < ActionController::Base
2
+ protect_from_forgery
3
+ helper :all
4
+
5
+ helper_method :_user, :logged_in?
6
+
7
+ def _user
8
+ current_user
9
+ end
10
+
11
+ def logged_in?
12
+ user_signed_in?
13
+ end
14
+ end
@@ -0,0 +1,2 @@
1
+ class PagesController < ApplicationController
2
+ end
@@ -0,0 +1,2 @@
1
+ class SessionsController < ApplicationController
2
+ end
@@ -0,0 +1,31 @@
1
+ class TemplatingController < AbstractController::Base
2
+ include AbstractController::Logger
3
+ include AbstractController::Rendering
4
+ include AbstractController::Layouts
5
+ include AbstractController::Helpers
6
+ include AbstractController::Translation
7
+ include AbstractController::AssetPaths
8
+ include Rails.application.routes.url_helpers
9
+
10
+ self.view_paths = 'app/views'
11
+ self.assets_dir = 'app/public'
12
+
13
+ helper ApplicationHelper,
14
+ JennyHelper,
15
+ Admin::ApplicationHelper,
16
+ Admin::CoursesHelper,
17
+ DocumentsHelper,
18
+ VideosHelper,
19
+ UsersHelper,
20
+ UploadsHelper,
21
+ DownloadsHelper,
22
+ GroupsHelper,
23
+ Admin::DepartmentsHelper,
24
+ NavigationHelper
25
+
26
+ public
27
+ def r partial
28
+ render :partial => partial
29
+ end
30
+
31
+ end
@@ -0,0 +1,2 @@
1
+ class UsersController < ApplicationController
2
+ end
@@ -0,0 +1,94 @@
1
+ module ApplicationHelper
2
+ def body_attrs
3
+ attrs = {}
4
+ class_name = [location_name,I18n.locale,ENV['RAILS_ENV']]
5
+ class_name << 'signup_process' if signup_location?
6
+ class_name << 'admin' if admin_location?
7
+ class_name << 'static' if static_pages?
8
+ class_name << (logged_in? ? 'logged_in' : 'logged_out')
9
+ attrs[:location] = location_name
10
+ attrs[:controller] = controller.controller_name
11
+ attrs[:action] = action_name
12
+ attrs[:class] = class_name.join ' '
13
+ attrs[:query] = controller.controller_name if admin_location?
14
+ attrs
15
+ end
16
+
17
+ def content_attrs
18
+ class_name = if content_for?(:extra) && content_for?(:column)
19
+ 'content_wrap_extra'
20
+ elsif content_for? :extra
21
+ 'content_single_extra'
22
+ elsif content_for? :column
23
+ 'content_wrap'
24
+ else
25
+ 'content_single'
26
+ end
27
+ attrs = {}
28
+ attrs[:class] = class_name
29
+ attrs
30
+ end
31
+
32
+ def asset_dir
33
+ admin_location? ? :admin : :application
34
+ end
35
+
36
+ def admin_location?
37
+ location_match? 'admin'
38
+ end
39
+
40
+ def signup_location?
41
+ location_name? 'new_users'
42
+ end
43
+
44
+ def location_name?(*names)
45
+ names.any?{ |name| name == location_name }
46
+ end
47
+
48
+ def location_name
49
+ "#{action_name}_#{controller.controller_name}"
50
+ end
51
+
52
+ def location_match?(*names)
53
+ names.any?{ |name| controller.controller_path.match(/#{name}/) }
54
+ end
55
+
56
+ def static_pages?
57
+ pages = %w{about_pages}
58
+ location_name? *pages
59
+ end
60
+
61
+ def ascii
62
+ partial 'layouts/ascii'
63
+ end
64
+
65
+ def head
66
+ partial '%head', 'layouts/head'
67
+ end
68
+
69
+ def content
70
+ partial 'layouts/content'
71
+ end
72
+
73
+ def extra
74
+ return unless content_for? :extra
75
+ partial ['.extra_wrap','.extra'], 'layouts/extra'
76
+ end
77
+
78
+ def column
79
+ return unless content_for? :column
80
+ partial '.column.expand', 'layouts/column'
81
+ end
82
+
83
+ def header
84
+ partial ['.header_wrap','.header'], 'layouts/header'
85
+ end
86
+
87
+ def footer
88
+ partial ['.footer_wrap','.footer'], 'layouts/footer'
89
+ end
90
+
91
+ def google_analytics
92
+ javascript_include_tag 'lib/analytics'
93
+ end
94
+ end
@@ -0,0 +1,53 @@
1
+ module UsersHelper
2
+ def registration_form_for user, &proc
3
+ devise_form_for :registration, user, &proc
4
+ end
5
+
6
+ def session_form_for user, &proc
7
+ devise_form_for :session, user, &proc
8
+ end
9
+
10
+ def confirmation_form_for user, &proc
11
+ devise_form_for :confirmation, user, &proc
12
+ end
13
+
14
+ def password_form_for user, &proc
15
+ devise_form_for :password, user, &proc
16
+ end
17
+
18
+ def devise_form_for name, user, &proc
19
+ url = nil
20
+ eval "url = #{name}_path :user"
21
+ html = { class: 'default' }
22
+ form_for user, url: url, html: html, &proc
23
+ end
24
+
25
+ def session_form user
26
+ partial 'users/sessions/form', user: user
27
+ end
28
+
29
+ def signup_link
30
+ name = 'Sign up'
31
+ path = new_registration_path :user
32
+ link_to name, path
33
+ end
34
+
35
+ def signin_link
36
+ name = 'Sign in'
37
+ path = new_session_path :user
38
+ link_to name, path
39
+ end
40
+
41
+ def forgot_link
42
+ name = 'Forgot your password?'
43
+ path = new_password_path :user
44
+ link_to name, path
45
+ end
46
+
47
+ def confirm_link
48
+ name = "Didn't receive confirmation instructions?"
49
+ path = new_confirmation_path :user
50
+ link_to name, path
51
+ end
52
+ end
53
+
@@ -0,0 +1,9 @@
1
+ class User < ActiveRecord::Base
2
+ devise :database_authenticatable,
3
+ :registerable,
4
+ :recoverable,
5
+ :rememberable,
6
+ :trackable,
7
+ :validatable,
8
+ :confirmable
9
+ end
@@ -0,0 +1,9 @@
1
+ %h2 Resend confirmation instructions
2
+ = confirmation_form_for resource do |f|
3
+ = devise_error_messages!
4
+ = app_text_field f, :email
5
+ .submit
6
+ = submit_tag 'Resend confirmation instructions'
7
+
8
+ = forgot_link
9
+ = confirm_link
@@ -0,0 +1,11 @@
1
+ %h2 Change your password
2
+ = password_form_for resource, &proc
3
+ = devise_error_messages!
4
+ = f.hidden_field :reset_password_token
5
+ = app_password_field f, :password
6
+ = app_password_field f, :password_confirmation
7
+ .submit
8
+ = submit_tag 'Change my password'
9
+
10
+ = forgot_link
11
+ = confirm_link
@@ -0,0 +1,9 @@
1
+ %h2 Forgot your password?
2
+ = password_form_for resource, &proc
3
+ = devise_error_messages!
4
+ = app_text_field :email
5
+ .submit
6
+ = submit_tag 'Send me reset password instructions'
7
+
8
+ = forgot_link
9
+ = confirm_link
@@ -0,0 +1,13 @@
1
+ %h2
2
+ Edit #{resource_name.to_s.humanize}
3
+ = registration_form_for resource do |f|
4
+ = devise_error_messages!
5
+ = app_text_field f, :email
6
+ = app_password_field f, :password
7
+ = app_password_field f, :password_confirmation
8
+ = app_password_field f, :current_password
9
+ .submit
10
+ = submit_tag 'Update'
11
+ %h3 Cancel my account
12
+ %p
13
+ Unhappy? #{link_to "Cancel my account", registration_path(resource_name), :data => { :confirm => "Are you sure?" }, :method => :delete}.
@@ -0,0 +1,8 @@
1
+ %h2 Sign up
2
+ = registration_form_for resource do |f|
3
+ = devise_error_messages!
4
+ = app_text_field f, :email
5
+ = app_password_field f, :password
6
+ = app_password_field f, :password_confirmation
7
+ .submit
8
+ = submit_tag 'Sign up'
@@ -0,0 +1,7 @@
1
+ = session_form_for user do |f|
2
+ = app_text_field f, :email
3
+ = app_password_field f, :password
4
+ - if devise_mapping.rememberable?
5
+ = app_checkbox f, :remember_me
6
+ .submit
7
+ = submit_tag 'Sign in'
@@ -0,0 +1,5 @@
1
+ %h2 Sign in
2
+ = session_form resource
3
+
4
+ = forgot_link
5
+ = confirm_link
@@ -0,0 +1,7 @@
1
+ %h2 Resend unlock instructions
2
+ = form_for(resource, :as => resource_name, :url => unlock_path(resource_name), :html => { :method => :post }) do |f|
3
+ = devise_error_messages!
4
+ = app_text_field f, :email
5
+ .submit
6
+ = submit_tag 'Resend unlock instructions'
7
+ = render "devise/shared/links"
@@ -0,0 +1,9 @@
1
+ .copyright
2
+ %p
3
+ %span
4
+ Copyright
5
+ &copy;
6
+ = Time.current.year
7
+ <%= app_name.classify %>
8
+ All rights reserved.
9
+ .clear
@@ -0,0 +1,13 @@
1
+ %meta{ 'http-equiv' => "content-type", :content => "text/html;charset=utf-8" }
2
+ = csrf_meta_tag
3
+ %title <%= app_name.classify %>
4
+ = stylesheet_link_tag asset_dir
5
+ = javascript_include_tag asset_dir
6
+
7
+ %link{ :rel => 'shortcut icon' ,:href => '/favicon.ico' }
8
+ %meta{ :property => 'og:title' ,:content => '<%= app_name.classify %>' }
9
+ %meta{ :property => 'og:type' ,:content => 'website' }
10
+ %meta{ :property => 'og:url' ,:content => 'https://domain.com' }
11
+ %meta{ :property => 'og:image' ,:content => 'https://domain.com/assets/logo.png' }
12
+ %meta{ :property => 'og:site_name' ,:content => '<%= app_name.classify %>' }
13
+ %meta{ :property => 'og:description',:content => '' }
@@ -0,0 +1,6 @@
1
+ .navbar
2
+ .navbar-inner
3
+ %ul.nav
4
+ - unless logged_in?
5
+ %li= signup_link
6
+ %li= signin_link
@@ -0,0 +1,16 @@
1
+ !!!
2
+ %html
3
+ = ascii
4
+ = head
5
+ %body{body_attrs}
6
+ .container
7
+ = header
8
+ .wrapper
9
+ = content
10
+ = column
11
+ = extra
12
+ .clear
13
+ = footer
14
+ = footer
15
+ = google_analytics
16
+
@@ -0,0 +1 @@
1
+ This is your home page
@@ -0,0 +1,29 @@
1
+ defaults: &DEFAULTS
2
+ domain: 'localhost:3000'
3
+ mail:
4
+ address : 'smtp.sendgrid.net'
5
+ port : 587
6
+ domain : 'domain.com'
7
+ user_name : 'user'
8
+ password : 'password'
9
+ authenication : 'plain'
10
+ enable_starttls_auto : true
11
+ development:
12
+ <<: *DEFAULTS
13
+ production:
14
+ <<: *DEFAULTS
15
+ domain: 'domain.com'
16
+ mail:
17
+ address : 'smtp.sendgrid.net'
18
+ port : 587
19
+ domain : 'domain.com'
20
+ user_name : 'user'
21
+ password : 'password'
22
+ authenication : 'plain'
23
+ enable_starttls_auto : true
24
+ staging:
25
+ <<: *DEFAULTS
26
+ domain: 'stage.domain.com'
27
+ test: &TEST
28
+ <<: *DEFAULTS
29
+
@@ -0,0 +1,28 @@
1
+ require File.expand_path('../boot', __FILE__)
2
+
3
+ require 'rails/all'
4
+
5
+ Bundler.require *Rails.groups(:assets) if defined?(Bundler)
6
+
7
+ module <%= app_name.classify %>
8
+
9
+ def self.config
10
+ Rails.configuration
11
+ end
12
+
13
+ class Application < Rails::Application
14
+ config.from_file 'app.yml'
15
+ config.encoding = 'utf-8'
16
+ config.assets.enabled = true
17
+ config.filter_parameters += [:password]
18
+ config.time_zone = "Eastern Time (US & Canada)"
19
+ config.autoload_paths += %W(#{Rails.root}/lib)
20
+ config.generators do |g|
21
+ g.template_engine :haml
22
+ g.test_framework :rspec, :fixture => false
23
+ end
24
+ end
25
+
26
+ Object.const_set :APP, config
27
+ end
28
+
@@ -0,0 +1,32 @@
1
+ production:
2
+ adapter: mysql2
3
+ encoding: utf8
4
+ reconnect: false
5
+ database: <%= app_name %>_pro
6
+ pool: 5
7
+ username: root
8
+ password:
9
+ socket: <%=RUBY_PLATFORM.downcase.include?("darwin") ? '/tmp/mysql.sock' : '/var/run/mysqld/mysqld.sock' %>
10
+
11
+ development:
12
+ adapter: mysql2
13
+ encoding: utf8
14
+ reconnect: false
15
+ database: <%= app_name %>_dev
16
+ pool: 5
17
+ username: root
18
+ password:
19
+ socket: <%=RUBY_PLATFORM.downcase.include?("darwin") ? '/tmp/mysql.sock' : '/var/run/mysqld/mysqld.sock' %>
20
+
21
+ test: &test
22
+ adapter: mysql2
23
+ encoding: utf8
24
+ reconnect: true
25
+ database: <%= app_name %>_test
26
+ pool: 5
27
+ username: root
28
+ password:
29
+ socket: <%=RUBY_PLATFORM.downcase.include?("darwin") ? '/tmp/mysql.sock' : '/var/run/mysqld/mysqld.sock' %>
30
+
31
+ cucumber:
32
+ <<: *test