rails_apps_composer 1.5.5 → 2.0.1
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.
- data/README.textile +185 -254
- data/lib/rails_wizard/command.rb +54 -13
- data/lib/rails_wizard/config.rb +1 -1
- data/lib/rails_wizard/diagnostics.rb +22 -0
- data/lib/rails_wizard/template.rb +36 -2
- data/lib/rails_wizard.rb +1 -0
- data/recipes/auth.rb +84 -0
- data/recipes/controllers.rb +58 -0
- data/recipes/{seed_database.rb → database.rb} +35 -22
- data/recipes/{action_mailer.rb → email.rb} +29 -50
- data/recipes/example.rb +70 -0
- data/recipes/extras.rb +91 -30
- data/recipes/frontend.rb +59 -0
- data/recipes/gems.rb +128 -0
- data/recipes/models.rb +61 -0
- data/recipes/prelaunch.rb +45 -0
- data/recipes/readme.rb +83 -0
- data/recipes/routes.rb +36 -0
- data/recipes/setup.rb +148 -0
- data/recipes/testing.rb +187 -0
- data/recipes/views.rb +39 -0
- data/spec/rails_wizard/template_spec.rb +4 -2
- data/templates/helpers.erb +53 -2
- data/templates/layout.erb +81 -20
- data/version.rb +1 -1
- metadata +19 -49
- data/recipes/active_admin.rb +0 -36
- data/recipes/activerecord.rb +0 -37
- data/recipes/add_user.rb +0 -140
- data/recipes/airbrake.rb +0 -34
- data/recipes/backbone.rb +0 -23
- data/recipes/capybara.rb +0 -34
- data/recipes/cleanup.rb +0 -40
- data/recipes/cloudfiles.rb +0 -36
- data/recipes/compass.rb +0 -46
- data/recipes/compass_960.rb +0 -48
- data/recipes/cucumber.rb +0 -75
- data/recipes/datamapper.rb +0 -111
- data/recipes/devise.rb +0 -114
- data/recipes/git.rb +0 -40
- data/recipes/guard.rb +0 -89
- data/recipes/haml.rb +0 -23
- data/recipes/heroku.rb +0 -61
- data/recipes/home_page.rb +0 -58
- data/recipes/home_page_users.rb +0 -47
- data/recipes/html5.rb +0 -152
- data/recipes/inherited_resources.rb +0 -23
- data/recipes/less.rb +0 -12
- data/recipes/mongohq.rb +0 -59
- data/recipes/mongoid.rb +0 -38
- data/recipes/mongolab.rb +0 -59
- data/recipes/omniauth.rb +0 -194
- data/recipes/omniauth_email.rb +0 -82
- data/recipes/paperclip.rb +0 -79
- data/recipes/prelaunch_signup.rb +0 -586
- data/recipes/rails_admin.rb +0 -29
- data/recipes/redis.rb +0 -23
- data/recipes/responders.rb +0 -10
- data/recipes/resque.rb +0 -25
- data/recipes/rspec.rb +0 -131
- data/recipes/sass.rb +0 -25
- data/recipes/settingslogic.rb +0 -43
- data/recipes/simple_form.rb +0 -54
- data/recipes/slim.rb +0 -46
- data/recipes/static_page.rb +0 -43
- data/recipes/subdomains.rb +0 -121
- data/recipes/turnip.rb +0 -18
- data/recipes/unicorn.rb +0 -29
- data/recipes/users_page.rb +0 -165
data/recipes/extras.rb
CHANGED
@@ -1,60 +1,121 @@
|
|
1
|
-
# Application template recipe for the rails_apps_composer.
|
1
|
+
# Application template recipe for the rails_apps_composer. Change the recipe here:
|
2
2
|
# https://github.com/RailsApps/rails_apps_composer/blob/master/recipes/extras.rb
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
4
|
+
## FORM BUILDER
|
5
|
+
case config['form_builder']
|
6
|
+
when 'simple_form'
|
7
|
+
prefs[:form_builder] = 'simple_form'
|
8
|
+
end
|
9
|
+
case prefs[:form_builder]
|
10
|
+
when 'simple_form'
|
11
|
+
gem 'simple_form'
|
12
|
+
after_bundler do
|
13
|
+
if prefer :frontend, 'bootstrap'
|
14
|
+
say_wizard "recipe installing simple_form for use with Twitter Bootstrap"
|
15
|
+
generate 'simple_form:install --bootstrap'
|
16
|
+
else
|
17
|
+
say_wizard "recipe installing simple_form"
|
18
|
+
generate 'simple_form:install'
|
19
|
+
end
|
20
|
+
end
|
10
21
|
end
|
11
22
|
|
23
|
+
## BAN SPIDERS
|
12
24
|
if config['ban_spiders']
|
25
|
+
prefs[:ban_spiders] = true
|
26
|
+
end
|
27
|
+
if prefs[:ban_spiders]
|
13
28
|
say_wizard "Banning spiders by modifying 'public/robots.txt'"
|
14
29
|
after_bundler do
|
15
|
-
# ban spiders from your site by changing robots.txt
|
16
30
|
gsub_file 'public/robots.txt', /# User-Agent/, 'User-Agent'
|
17
31
|
gsub_file 'public/robots.txt', /# Disallow/, 'Disallow'
|
18
32
|
end
|
19
33
|
end
|
20
34
|
|
21
|
-
|
22
|
-
say_wizard "Adding 'will_paginate'"
|
23
|
-
if recipes.include? 'mongoid'
|
24
|
-
gem 'will_paginate_mongoid'
|
25
|
-
else
|
26
|
-
gem 'will_paginate', '>= 3.0.3'
|
27
|
-
end
|
28
|
-
recipes << 'paginate'
|
29
|
-
end
|
30
|
-
|
35
|
+
## JSRUNTIME
|
31
36
|
if config['jsruntime']
|
37
|
+
prefs[:jsruntime] = true
|
38
|
+
end
|
39
|
+
if prefs[:jsruntime]
|
32
40
|
say_wizard "Adding 'therubyracer' JavaScript runtime gem"
|
33
|
-
# maybe it was already added
|
34
|
-
unless
|
41
|
+
# maybe it was already added for bootstrap-less?
|
42
|
+
unless prefer :bootstrap, 'less'
|
35
43
|
gem 'therubyracer', :group => :assets, :platform => :ruby
|
36
44
|
end
|
37
45
|
end
|
38
46
|
|
47
|
+
## RVMRC
|
48
|
+
if config['rvmrc']
|
49
|
+
prefs[:rvmrc] = true
|
50
|
+
end
|
51
|
+
if prefs[:rvmrc]
|
52
|
+
# using the rvm Ruby API, see:
|
53
|
+
# http://blog.thefrontiergroup.com.au/2010/12/a-brief-introduction-to-the-rvm-ruby-api/
|
54
|
+
if ENV['MY_RUBY_HOME'] && ENV['MY_RUBY_HOME'].include?('rvm')
|
55
|
+
begin
|
56
|
+
rvm_path = File.dirname(File.dirname(ENV['MY_RUBY_HOME']))
|
57
|
+
rvm_lib_path = File.join(rvm_path, 'lib')
|
58
|
+
require 'rvm'
|
59
|
+
rescue LoadError
|
60
|
+
raise "RVM ruby lib is currently unavailable."
|
61
|
+
end
|
62
|
+
else
|
63
|
+
raise "RVM ruby lib is currently unavailable."
|
64
|
+
end
|
65
|
+
say_wizard "creating RVM gemset '#{app_name}'"
|
66
|
+
RVM.gemset_create app_name
|
67
|
+
run "rvm rvmrc trust"
|
68
|
+
say_wizard "switching to gemset '#{app_name}'"
|
69
|
+
begin
|
70
|
+
RVM.gemset_use! app_name
|
71
|
+
rescue StandardError
|
72
|
+
raise "Use rvm gem 1.11.3.5 or newer."
|
73
|
+
end
|
74
|
+
run "rvm gemset list"
|
75
|
+
copy_from_repo '.rvmrc'
|
76
|
+
gsub_file '.rvmrc', /App_Name/, "#{app_name}"
|
77
|
+
end
|
78
|
+
|
79
|
+
## AFTER_EVERYTHING
|
80
|
+
after_everything do
|
81
|
+
say_wizard "recipe removing unnecessary files and whitespace"
|
82
|
+
%w{
|
83
|
+
public/index.html
|
84
|
+
app/assets/images/rails.png
|
85
|
+
}.each { |file| remove_file file }
|
86
|
+
# remove commented lines and multiple blank lines from Gemfile
|
87
|
+
# thanks to https://github.com/perfectline/template-bucket/blob/master/cleanup.rb
|
88
|
+
gsub_file 'Gemfile', /#.*\n/, "\n"
|
89
|
+
gsub_file 'Gemfile', /\n^\s*\n/, "\n"
|
90
|
+
# remove commented lines and multiple blank lines from config/routes.rb
|
91
|
+
gsub_file 'config/routes.rb', / #.*\n/, "\n"
|
92
|
+
gsub_file 'config/routes.rb', /\n^\s*\n/, "\n"
|
93
|
+
# GIT
|
94
|
+
git :add => '.' if prefer :git, true
|
95
|
+
git :commit => "-aqm 'rails_apps_composer: starter app complete'" if prefer :git, true
|
96
|
+
end
|
97
|
+
|
39
98
|
__END__
|
40
99
|
|
41
|
-
name:
|
42
|
-
description: "Various extras
|
100
|
+
name: extras
|
101
|
+
description: "Various extras."
|
43
102
|
author: RailsApps
|
44
103
|
|
104
|
+
requires: [gems]
|
105
|
+
run_after: [gems]
|
45
106
|
category: other
|
46
|
-
tags: [utilities, configuration]
|
47
107
|
|
48
108
|
config:
|
49
|
-
-
|
50
|
-
type:
|
51
|
-
prompt:
|
109
|
+
- form_builder:
|
110
|
+
type: multiple_choice
|
111
|
+
prompt: Use a form builder gem?
|
112
|
+
choices: [["None", "none"], ["SimpleForm", "simple_form"]]
|
52
113
|
- ban_spiders:
|
53
114
|
type: boolean
|
54
|
-
prompt:
|
55
|
-
- paginate:
|
56
|
-
type: boolean
|
57
|
-
prompt: Would you like to add 'will_paginate' for pagination?
|
115
|
+
prompt: Set a robots.txt file to ban spiders?
|
58
116
|
- jsruntime:
|
59
117
|
type: boolean
|
60
118
|
prompt: Add 'therubyracer' JavaScript runtime (for Linux users without node.js)?
|
119
|
+
- rvmrc:
|
120
|
+
type: boolean
|
121
|
+
prompt: Create a project-specific rvm gemset and .rvmrc?
|
data/recipes/frontend.rb
ADDED
@@ -0,0 +1,59 @@
|
|
1
|
+
# Application template recipe for the rails_apps_composer. Change the recipe here:
|
2
|
+
# https://github.com/RailsApps/rails_apps_composer/blob/master/recipes/frontend.rb
|
3
|
+
|
4
|
+
after_bundler do
|
5
|
+
say_wizard "recipe running after 'bundle install'"
|
6
|
+
### LAYOUTS ###
|
7
|
+
copy_from_repo 'app/views/layouts/application.html.erb'
|
8
|
+
copy_from_repo 'app/views/layouts/application-bootstrap.html.erb', :prefs => 'bootstrap'
|
9
|
+
copy_from_repo 'app/views/layouts/_messages.html.erb'
|
10
|
+
copy_from_repo 'app/views/layouts/_messages-bootstrap.html.erb', :prefs => 'bootstrap'
|
11
|
+
copy_from_repo 'app/views/layouts/_navigation.html.erb'
|
12
|
+
copy_from_repo 'app/views/layouts/_navigation-devise.html.erb', :prefs => 'devise'
|
13
|
+
copy_from_repo 'app/views/layouts/_navigation-cancan.html.erb', :prefs => 'cancan'
|
14
|
+
copy_from_repo 'app/views/layouts/_navigation-omniauth.html.erb', :prefs => 'omniauth'
|
15
|
+
copy_from_repo 'app/views/layouts/_navigation-subdomains_app.html.erb', :prefs => 'subdomains_app'
|
16
|
+
## APPLICATION NAME
|
17
|
+
application_layout_file = 'app/views/layouts/application.html.erb'
|
18
|
+
navigation_partial_file = 'app/views/layouts/_navigation.html.erb'
|
19
|
+
gsub_file application_layout_file, /App_Name/, "#{app_name.humanize.titleize}"
|
20
|
+
gsub_file navigation_partial_file, /App_Name/, "#{app_name.humanize.titleize}"
|
21
|
+
### CSS ###
|
22
|
+
remove_file 'app/assets/stylesheets/application.css'
|
23
|
+
copy_from_repo 'app/assets/stylesheets/application.css.scss'
|
24
|
+
copy_from_repo 'app/assets/stylesheets/application-bootstrap.css.scss', :prefs => 'bootstrap'
|
25
|
+
if prefer :bootstrap, 'less'
|
26
|
+
generate 'bootstrap:install'
|
27
|
+
insert_into_file 'app/assets/stylesheets/bootstrap_and_overrides.css.less', "body { padding-top: 60px; }\n", :after => "@import \"twitter/bootstrap/bootstrap\";\n"
|
28
|
+
elsif prefer :bootstrap, 'sass'
|
29
|
+
insert_into_file 'app/assets/javascripts/application.js', "//= require bootstrap\n", :after => "jquery_ujs\n"
|
30
|
+
create_file 'app/assets/stylesheets/bootstrap_and_overrides.css.scss', <<-RUBY
|
31
|
+
@import "bootstrap";
|
32
|
+
body { padding-top: 60px; }
|
33
|
+
@import "bootstrap-responsive";
|
34
|
+
RUBY
|
35
|
+
elsif prefer :frontend, 'foundation'
|
36
|
+
insert_into_file 'app/assets/javascripts/application.js', "//= require foundation\n", :after => "jquery_ujs\n"
|
37
|
+
insert_into_file 'app/assets/stylesheets/application.css.scss', " *= require foundation\n", :after => "require_self\n"
|
38
|
+
elsif prefer :frontend, 'skeleton'
|
39
|
+
copy_from_repo 'app/assets/stylesheets/normalize.css.scss', :repo => 'https://raw.github.com/necolas/normalize.css/master/normalize.css'
|
40
|
+
copy_from_repo 'app/assets/stylesheets/base.css.scss', :repo => 'https://raw.github.com/dhgamache/Skeleton/master/stylesheets/base.css'
|
41
|
+
copy_from_repo 'app/assets/stylesheets/layout.css.scss', :repo => 'https://raw.github.com/dhgamache/Skeleton/master/stylesheets/layout.css'
|
42
|
+
copy_from_repo 'app/assets/stylesheets/skeleton.css.scss', :repo => 'https://raw.github.com/dhgamache/Skeleton/master/stylesheets/skeleton.css'
|
43
|
+
elsif prefer :frontend, 'normalize'
|
44
|
+
copy_from_repo 'app/assets/stylesheets/normalize.css.scss', :repo => 'https://raw.github.com/necolas/normalize.css/master/normalize.css'
|
45
|
+
end
|
46
|
+
### GIT ###
|
47
|
+
git :add => '.' if prefer :git, true
|
48
|
+
git :commit => "-aqm 'rails_apps_composer: front-end framework'" if prefer :git, true
|
49
|
+
end # after_bundler
|
50
|
+
|
51
|
+
__END__
|
52
|
+
|
53
|
+
name: frontend
|
54
|
+
description: "Install a front-end framework for HTML5 and CSS."
|
55
|
+
author: RailsApps
|
56
|
+
|
57
|
+
requires: [setup, gems]
|
58
|
+
run_after: [setup, gems]
|
59
|
+
category: frontend
|
data/recipes/gems.rb
ADDED
@@ -0,0 +1,128 @@
|
|
1
|
+
# Application template recipe for the rails_apps_composer. Change the recipe here:
|
2
|
+
# https://github.com/RailsApps/rails_apps_composer/blob/master/recipes/gems.rb
|
3
|
+
|
4
|
+
### GEMFILE ###
|
5
|
+
|
6
|
+
## Ruby on Rails
|
7
|
+
insert_into_file 'Gemfile', "ruby '1.9.3'\n", :before => "gem 'rails', '3.2.6'" if prefer :deploy, 'heroku'
|
8
|
+
|
9
|
+
## Web Server
|
10
|
+
gem 'thin', '>= 1.4.1', :group => [:development, :test] if prefer :dev_webserver, 'thin'
|
11
|
+
gem 'unicorn', '>= 4.3.1', :group => [:development, :test] if prefer :dev_webserver, 'unicorn'
|
12
|
+
gem 'puma', '>= 1.5.0', :group => [:development, :test] if prefer :dev_webserver, 'puma'
|
13
|
+
gem 'thin', '>= 1.4.1', :group => :production if prefer :prod_webserver, 'thin'
|
14
|
+
gem 'unicorn', '>= 4.3.1', :group => :production if prefer :prod_webserver, 'unicorn'
|
15
|
+
gem 'puma', '>= 1.5.0', :group => :production if prefer :prod_webserver, 'puma'
|
16
|
+
|
17
|
+
## Database Adapter
|
18
|
+
gem 'mongoid', '>= 3.0.1' if prefer :orm, 'mongoid'
|
19
|
+
gem 'pg', '>= 0.14.0' if prefer :database, 'postgresql'
|
20
|
+
gem 'mysql2', '>= 0.3.11' if prefer :database, 'mysql'
|
21
|
+
copy_from_repo 'config/database-postgresql.yml', :prefs => 'postgresql'
|
22
|
+
copy_from_repo 'config/database-mysql.yml', :prefs => 'mysql'
|
23
|
+
|
24
|
+
## Template Engine
|
25
|
+
if prefer :templates, 'haml'
|
26
|
+
gem 'haml', '>= 3.1.6'
|
27
|
+
gem 'haml-rails', '>= 0.3.4', :group => :development
|
28
|
+
# hpricot and ruby_parser are needed for conversion of HTML to Haml
|
29
|
+
gem 'hpricot', '>= 0.8.6', :group => :development
|
30
|
+
gem 'ruby_parser', '>= 2.3.1', :group => :development
|
31
|
+
end
|
32
|
+
if prefer :templates, 'slim'
|
33
|
+
gem 'slim', '>= 1.2.2'
|
34
|
+
gem 'haml2slim', '>= 0.4.6', :group => :development
|
35
|
+
# Haml is needed for conversion of HTML to Slim
|
36
|
+
gem 'haml', '>= 3.1.6', :group => :development
|
37
|
+
gem 'haml-rails', '>= 0.3.4', :group => :development
|
38
|
+
gem 'hpricot', '>= 0.8.6', :group => :development
|
39
|
+
gem 'ruby_parser', '>= 2.3.1', :group => :development
|
40
|
+
end
|
41
|
+
|
42
|
+
## Testing Framework
|
43
|
+
if prefer :unit_test, 'rspec'
|
44
|
+
gem 'rspec-rails', '>= 2.11.0', :group => [:development, :test]
|
45
|
+
gem 'capybara', '>= 1.1.2', :group => :test
|
46
|
+
if prefer :orm, 'mongoid'
|
47
|
+
# use the database_cleaner gem to reset the test database
|
48
|
+
gem 'database_cleaner', '>= 0.8.0', :group => :test
|
49
|
+
# include RSpec matchers from the mongoid-rspec gem
|
50
|
+
gem 'mongoid-rspec', '>= 1.4.6', :group => :test
|
51
|
+
end
|
52
|
+
gem 'email_spec', '>= 1.2.1', :group => :test unless prefer :email, 'none'
|
53
|
+
end
|
54
|
+
if prefer :integration, 'cucumber'
|
55
|
+
gem 'cucumber-rails', '>= 1.3.0', :group => :test, :require => false
|
56
|
+
gem 'database_cleaner', '>= 0.8.0', :group => :test unless prefer :orm, 'mongoid'
|
57
|
+
gem 'launchy', '>= 2.1.0', :group => :test
|
58
|
+
end
|
59
|
+
gem 'turnip', '>= 1.0.0', :group => :test if prefer :integration, 'turnip'
|
60
|
+
gem 'factory_girl_rails', '>= 3.5.0', :group => [:development, :test] if prefer :fixtures, 'factory_girl'
|
61
|
+
gem 'machinist', :group => :test if prefer :fixtures, 'machinist'
|
62
|
+
|
63
|
+
## Front-end Framework
|
64
|
+
gem 'bootstrap-sass', '>= 2.0.4.0' if prefer :bootstrap, 'sass'
|
65
|
+
gem 'zurb-foundation', '>= 3.0.5' if prefer :frontend, 'foundation'
|
66
|
+
if prefer :bootstrap, 'less'
|
67
|
+
gem 'twitter-bootstrap-rails', '>= 2.0.3', :group => :assets
|
68
|
+
# install gem 'therubyracer' to use Less
|
69
|
+
gem 'therubyracer', :group => :assets, :platform => :ruby
|
70
|
+
end
|
71
|
+
|
72
|
+
## Email
|
73
|
+
gem 'sendgrid' if prefer :email, 'sendgrid'
|
74
|
+
gem 'hominid' if prefer :email, 'mandrill'
|
75
|
+
|
76
|
+
## Authentication (Devise)
|
77
|
+
gem 'devise', '>= 2.1.2' if prefer :authentication, 'devise'
|
78
|
+
gem 'devise_invitable', '>= 1.0.3' if prefer :devise_modules, 'invitable'
|
79
|
+
|
80
|
+
## Authentication (OmniAuth)
|
81
|
+
gem 'omniauth', '>= 1.1.0' if prefer :authentication, 'omniauth'
|
82
|
+
gem 'omniauth-twitter' if prefer :omniauth_provider, 'twitter'
|
83
|
+
gem 'omniauth-facebook' if prefer :omniauth_provider, 'facebook'
|
84
|
+
gem 'omniauth-github' if prefer :omniauth_provider, 'github'
|
85
|
+
gem 'omniauth-linkedin' if prefer :omniauth_provider, 'linkedin'
|
86
|
+
gem 'omniauth-google-oauth2' if prefer :omniauth_provider, 'google-oauth2'
|
87
|
+
gem 'omniauth-tumblr' if prefer :omniauth_provider, 'tumblr'
|
88
|
+
|
89
|
+
## Authorization
|
90
|
+
if prefer :authorization, 'cancan'
|
91
|
+
gem 'cancan', '>= 1.6.8'
|
92
|
+
gem 'rolify', '>= 3.1.0'
|
93
|
+
end
|
94
|
+
|
95
|
+
## Signup App
|
96
|
+
if prefer :prelaunch_app, 'signup_app'
|
97
|
+
gem 'google_visualr', '>= 2.1.2'
|
98
|
+
gem 'jquery-datatables-rails', '>= 1.10.0'
|
99
|
+
end
|
100
|
+
|
101
|
+
## Gems from a defaults file or added interactively
|
102
|
+
gems.each do |g|
|
103
|
+
gem g
|
104
|
+
end
|
105
|
+
|
106
|
+
## Git
|
107
|
+
git :add => '.' if prefer :git, true
|
108
|
+
git :commit => "-aqm 'rails_apps_composer: Gemfile'" if prefer :git, true
|
109
|
+
|
110
|
+
### GENERATORS ###
|
111
|
+
after_bundler do
|
112
|
+
## Database
|
113
|
+
generate 'mongoid:config' if prefer :orm, 'mongoid'
|
114
|
+
remove_file 'config/database.yml' if prefer :orm, 'mongoid'
|
115
|
+
## Git
|
116
|
+
git :add => '.' if prefer :git, true
|
117
|
+
git :commit => "-aqm 'rails_apps_composer: generators'" if prefer :git, true
|
118
|
+
end # after_bundler
|
119
|
+
|
120
|
+
__END__
|
121
|
+
|
122
|
+
name: gems
|
123
|
+
description: "Add the gems your application needs."
|
124
|
+
author: RailsApps
|
125
|
+
|
126
|
+
requires: [setup]
|
127
|
+
run_after: [setup]
|
128
|
+
category: configuration
|
data/recipes/models.rb
ADDED
@@ -0,0 +1,61 @@
|
|
1
|
+
# Application template recipe for the rails_apps_composer. Change the recipe here:
|
2
|
+
# https://github.com/RailsApps/rails_apps_composer/blob/master/recipes/models.rb
|
3
|
+
|
4
|
+
after_bundler do
|
5
|
+
say_wizard "recipe running after 'bundle install'"
|
6
|
+
### DEVISE ###
|
7
|
+
if prefer :authentication, 'devise'
|
8
|
+
if prefer :orm, 'mongoid'
|
9
|
+
copy_from_repo 'app/models/user.rb', :repo => 'https://raw.github.com/RailsApps/rails3-mongoid-devise/master/' if prefer :orm, 'mongoid'
|
10
|
+
else
|
11
|
+
generate 'migration AddNameToUsers name:string'
|
12
|
+
if (prefer :devise_modules, 'confirmable') || (prefer :devise_modules, 'invitable')
|
13
|
+
generate 'migration AddConfirmableToUsers confirmation_token:string confirmed_at:datetime confirmation_sent_at:datetime unconfirmed_email:string'
|
14
|
+
end
|
15
|
+
copy_from_repo 'app/models/user.rb', :repo => 'https://raw.github.com/RailsApps/rails3-devise-rspec-cucumber/master/'
|
16
|
+
end
|
17
|
+
end
|
18
|
+
### OMNIAUTH ###
|
19
|
+
if prefer :authentication, 'omniauth'
|
20
|
+
if prefer :orm, 'mongoid'
|
21
|
+
copy_from_repo 'app/models/user.rb', :repo => 'https://raw.github.com/RailsApps/rails3-mongoid-omniauth/master/'
|
22
|
+
else
|
23
|
+
generate 'model User name:string email:string provider:string uid:string'
|
24
|
+
run 'bundle exec rake db:migrate'
|
25
|
+
copy_from_repo 'app/models/user.rb', :repo => 'https://raw.github.com/RailsApps/rails3-mongoid-omniauth/master/'
|
26
|
+
gsub_file 'app/models/user.rb', /class User/, 'class User < ActiveRecord::Base'
|
27
|
+
gsub_file 'app/models/user.rb', /^\s*include Mongoid::Document\n/, ''
|
28
|
+
gsub_file 'app/models/user.rb', /^\s*field.*\n/, ''
|
29
|
+
gsub_file 'app/models/user.rb', /^\s*# run 'rake db:mongoid:create_indexes' to create indexes\n/, ''
|
30
|
+
gsub_file 'app/models/user.rb', /^\s*index\(\{ email: 1 \}, \{ unique: true, background: true \}\)\n/, ''
|
31
|
+
end
|
32
|
+
end
|
33
|
+
### SUBDOMAINS ###
|
34
|
+
copy_from_repo 'app/models/user.rb', :repo => 'https://raw.github.com/RailsApps/rails3-subdomains/master/' if prefer :starter_app, 'subdomains'
|
35
|
+
### AUTHORIZATION (insert 'rolify' after User model is created) ###
|
36
|
+
unless prefer :orm, 'mongoid'
|
37
|
+
generate 'rolify:role Role User'
|
38
|
+
else
|
39
|
+
generate 'rolify:role Role User mongoid'
|
40
|
+
# correct the generation of rolify 3.1 with mongoid
|
41
|
+
# the call to `rolify` should be *after* the inclusion of mongoid
|
42
|
+
# (see https://github.com/EppO/rolify/issues/61)
|
43
|
+
# This isn't needed for rolify>=3.2.0.beta4, but should cause no harm
|
44
|
+
gsub_file 'app/models/user.rb',
|
45
|
+
/^\s*(rolify.*?)$\s*(include Mongoid::Document.*?)$/,
|
46
|
+
" \\2\n extend Rolify\n \\1\n"
|
47
|
+
end
|
48
|
+
### GIT ###
|
49
|
+
git :add => '.' if prefer :git, true
|
50
|
+
git :commit => "-aqm 'rails_apps_composer: models'" if prefer :git, true
|
51
|
+
end # after_bundler
|
52
|
+
|
53
|
+
__END__
|
54
|
+
|
55
|
+
name: models
|
56
|
+
description: "Add models needed for starter apps."
|
57
|
+
author: RailsApps
|
58
|
+
|
59
|
+
requires: [setup, gems, auth]
|
60
|
+
run_after: [setup, gems, auth]
|
61
|
+
category: mvc
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# Application template recipe for the rails_apps_composer. Change the recipe here:
|
2
|
+
# https://github.com/RailsApps/rails_apps_composer/blob/master/recipes/prelaunch.rb
|
3
|
+
|
4
|
+
if prefer :prelaunch_app, 'signup_app'
|
5
|
+
raise StandardError.new "Sorry. The prelaunch recipe is not implemented."
|
6
|
+
|
7
|
+
after_bundler do
|
8
|
+
say_wizard "recipe running after 'bundle install'"
|
9
|
+
repo = 'https://raw.github.com/RailsApps/rails-prelaunch-signup/master/'
|
10
|
+
|
11
|
+
# >-------------------------------[ Create a git branch ]--------------------------------<
|
12
|
+
if prefer :git, true
|
13
|
+
if prefer :prelaunch_branch, 'master'
|
14
|
+
unless prefer :main_branch, 'none'
|
15
|
+
say_wizard "renaming git branch 'master' to '#{prefs[:main_branch]}' for starter app"
|
16
|
+
git :branch => "-m master #{prefs[:main_branch]}"
|
17
|
+
git :checkout => "-b master"
|
18
|
+
else
|
19
|
+
say_wizard "creating prelaunch app on git branch 'master'"
|
20
|
+
end
|
21
|
+
else
|
22
|
+
say_wizard "creating new git branch '#{prefs[:prelaunch_branch]}' for prelaunch app"
|
23
|
+
git :checkout => "-b #{prefs[:prelaunch_branch]}"
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
# >-------------------------------[ Create an initializer file ]--------------------------------<
|
28
|
+
copy_from_repo 'config/initializers/prelaunch-signup.rb', :repo => repo
|
29
|
+
say_wizard "PRELAUNCH_SIGNUP NOT IMPLEMENTED"
|
30
|
+
|
31
|
+
### GIT ###
|
32
|
+
git :add => '.' if prefer :git, true
|
33
|
+
git :commit => "-aqm 'rails_apps_composer: prelaunch app'" if prefer :git, true
|
34
|
+
end # after_bundler
|
35
|
+
end # signup_app
|
36
|
+
|
37
|
+
__END__
|
38
|
+
|
39
|
+
name: prelaunch
|
40
|
+
description: "Generates a Prelaunch Signup App"
|
41
|
+
author: RailsApps
|
42
|
+
|
43
|
+
requires: [setup, gems, auth, models, controllers, views, frontend, database]
|
44
|
+
run_after: [setup, gems, auth, models, controllers, views, frontend, database]
|
45
|
+
category: apps
|
data/recipes/readme.rb
ADDED
@@ -0,0 +1,83 @@
|
|
1
|
+
# Application template recipe for the rails_apps_composer. Change the recipe here:
|
2
|
+
# https://github.com/RailsApps/rails_apps_composer/blob/master/recipes/readme.rb
|
3
|
+
|
4
|
+
after_everything do
|
5
|
+
say_wizard "recipe running after everything"
|
6
|
+
|
7
|
+
# remove default READMEs
|
8
|
+
%w{
|
9
|
+
README
|
10
|
+
README.rdoc
|
11
|
+
doc/README_FOR_APP
|
12
|
+
}.each { |file| remove_file file }
|
13
|
+
|
14
|
+
# add placeholder READMEs and humans.txt file
|
15
|
+
copy_from_repo 'public/humans.txt'
|
16
|
+
copy_from_repo 'README'
|
17
|
+
copy_from_repo 'README.textile'
|
18
|
+
gsub_file "README", /App_Name/, "#{app_name.humanize.titleize}"
|
19
|
+
gsub_file "README.textile", /App_Name/, "#{app_name.humanize.titleize}"
|
20
|
+
|
21
|
+
# Diagnostics
|
22
|
+
gsub_file "README.textile", /recipes that are known/, "recipes that are NOT known" if diagnostics[:recipes] == 'fail'
|
23
|
+
gsub_file "README.textile", /preferences that are known/, "preferences that are NOT known" if diagnostics[:prefs] == 'fail'
|
24
|
+
gsub_file "README.textile", /RECIPES/, recipes.sort.inspect
|
25
|
+
gsub_file "README.textile", /PREFERENCES/, prefs.inspect
|
26
|
+
|
27
|
+
# Ruby on Rails
|
28
|
+
gsub_file "README.textile", /\* Ruby/, "* Ruby version #{RUBY_VERSION}"
|
29
|
+
gsub_file "README.textile", /\* Rails/, "* Rails version #{Rails::VERSION::STRING}"
|
30
|
+
|
31
|
+
# Database
|
32
|
+
gsub_file "README.textile", /SQLite/, "MongoDB" if prefer :database, 'mongodb'
|
33
|
+
gsub_file "README.textile", /ActiveRecord/, "the Mongoid ORM" if prefer :orm, 'mongoid'
|
34
|
+
|
35
|
+
# Template Engine
|
36
|
+
gsub_file "README.textile", /ERB/, "Haml" if prefer :templates, 'haml'
|
37
|
+
gsub_file "README.textile", /ERB/, "Slim" if prefer :templates, 'slim'
|
38
|
+
|
39
|
+
# Testing Framework
|
40
|
+
gsub_file "README.textile", /Test::Unit/, "RSpec" if prefer :unit_test, 'rspec'
|
41
|
+
gsub_file "README.textile", /RSpec/, "RSpec and Cucumber" if prefer :integration, 'cucumber'
|
42
|
+
gsub_file "README.textile", /RSpec/, "RSpec and Factory Girl" if prefer :fixtures, 'factory_girl'
|
43
|
+
gsub_file "README.textile", /RSpec/, "RSpec and Machinist" if prefer :fixtures, 'machinist'
|
44
|
+
|
45
|
+
# Front-end Framework
|
46
|
+
gsub_file "README.textile", /Front-end Framework: None/, "Front-end Framework: Twitter Bootstrap (Sass)" if prefer :bootstrap, 'sass'
|
47
|
+
gsub_file "README.textile", /Front-end Framework: None/, "Front-end Framework: Twitter Bootstrap (Less)" if prefer :bootstrap, 'less'
|
48
|
+
gsub_file "README.textile", /Front-end Framework: None/, "Front-end Framework: Zurb Foundation" if prefer :frontend, 'foundation'
|
49
|
+
gsub_file "README.textile", /Front-end Framework: None/, "Front-end Framework: Skeleton" if prefer :frontend, 'skeleton'
|
50
|
+
gsub_file "README.textile", /Front-end Framework: None/, "Front-end Framework: Normalized CSS" if prefer :frontend, 'normalize'
|
51
|
+
|
52
|
+
# Form Builder
|
53
|
+
gsub_file "README.textile", /Form Builder: None/, "Form Builder: SimpleForm" if prefer :form_builder, 'simple_form'
|
54
|
+
|
55
|
+
# Email
|
56
|
+
unless prefer :email, 'none'
|
57
|
+
gsub_file "README.textile", /Gmail/, "SMTP" if prefer :email, 'smtp'
|
58
|
+
gsub_file "README.textile", /Gmail/, "SendGrid" if prefer :email, 'sendgrid'
|
59
|
+
gsub_file "README.textile", /Gmail/, "Mandrill" if prefer :email, 'mandrill'
|
60
|
+
else
|
61
|
+
gsub_file "README.textile", /h2. Email/, ""
|
62
|
+
gsub_file "README.textile", /The application is configured to send email using a Gmail account./, ""
|
63
|
+
end
|
64
|
+
|
65
|
+
# Authentication and Authorization
|
66
|
+
gsub_file "README.textile", /Authentication: None/, "Authentication: Devise" if prefer :authentication, 'devise'
|
67
|
+
gsub_file "README.textile", /Authentication: None/, "Authentication: OmniAuth" if prefer :authentication, 'omniauth'
|
68
|
+
gsub_file "README.textile", /Authorization: None/, "Authorization: CanCan" if prefer :authorization, 'cancan'
|
69
|
+
|
70
|
+
git :add => '.' if prefer :git, true
|
71
|
+
git :commit => "-aqm 'rails_apps_composer: add README files'" if prefer :git, true
|
72
|
+
|
73
|
+
end # after_everything
|
74
|
+
|
75
|
+
__END__
|
76
|
+
|
77
|
+
name: readme
|
78
|
+
description: "Build a README file for your application."
|
79
|
+
author: RailsApps
|
80
|
+
|
81
|
+
requires: [setup]
|
82
|
+
run_after: [setup]
|
83
|
+
category: configuration
|
data/recipes/routes.rb
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
# Application template recipe for the rails_apps_composer. Change the recipe here:
|
2
|
+
# https://github.com/RailsApps/rails_apps_composer/blob/master/recipes/routes.rb
|
3
|
+
|
4
|
+
after_bundler do
|
5
|
+
say_wizard "recipe running after 'bundle install'"
|
6
|
+
### HOME ###
|
7
|
+
if prefer :starter_app, 'home_app'
|
8
|
+
remove_file 'public/index.html'
|
9
|
+
gsub_file 'config/routes.rb', /get \"home\/index\"/, 'root :to => "home#index"'
|
10
|
+
end
|
11
|
+
### USER_ACCOUNTS ###
|
12
|
+
if ['users_app','admin_app'].include? prefs[:starter_app]
|
13
|
+
## DEVISE
|
14
|
+
copy_from_repo 'config/routes.rb', :repo => 'https://raw.github.com/RailsApps/rails3-devise-rspec-cucumber/master/' if prefer :authentication, 'devise'
|
15
|
+
## OMNIAUTH
|
16
|
+
copy_from_repo 'config/routes.rb', :repo => 'https://raw.github.com/RailsApps/rails3-mongoid-omniauth/master/' if prefer :authentication, 'omniauth'
|
17
|
+
end
|
18
|
+
### SUBDOMAINS ###
|
19
|
+
copy_from_repo 'lib/subdomain.rb', :repo => 'https://raw.github.com/RailsApps/rails3-subdomains/master/' if prefer :starter_app, 'subdomains'
|
20
|
+
copy_from_repo 'config/routes.rb', :repo => 'https://raw.github.com/RailsApps/rails3-subdomains/master/' if prefer :starter_app, 'subdomains'
|
21
|
+
### CORRECT APPLICATION NAME ###
|
22
|
+
gsub_file 'config/routes.rb', /^.*.routes.draw do/, "#{app_const}.routes.draw do"
|
23
|
+
### GIT ###
|
24
|
+
git :add => '.' if prefer :git, true
|
25
|
+
git :commit => "-aqm 'rails_apps_composer: routes'" if prefer :git, true
|
26
|
+
end # after_bundler
|
27
|
+
|
28
|
+
__END__
|
29
|
+
|
30
|
+
name: routes
|
31
|
+
description: "Add routes needed for starter apps."
|
32
|
+
author: RailsApps
|
33
|
+
|
34
|
+
requires: [setup, gems, auth, models, controllers, views]
|
35
|
+
run_after: [setup, gems, auth, models, controllers, views]
|
36
|
+
category: mvc
|