rails_apps_composer 2.2.16 → 2.2.17
Sign up to get free protection for your applications and to get access to all the features.
- data/README.textile +10 -0
- data/lib/rails_wizard/command.rb +13 -4
- data/lib/rails_wizard/recipes.rb +9 -1
- data/lib/rails_wizard/template.rb +5 -1
- data/recipes/gems.rb +1 -1
- data/recipes/saas.rb +9 -3
- data/recipes/testing.rb +3 -1
- data/spec/rails_wizard/recipes_spec.rb +8 -0
- data/spec/rails_wizard/template_spec.rb +12 -0
- data/version.rb +1 -1
- metadata +4 -4
data/README.textile
CHANGED
@@ -140,6 +140,8 @@ $ rails_apps_composer new myapp -l ~/recipes/
|
|
140
140
|
|
141
141
|
If you create local recipes, please consider contributing them to the project.
|
142
142
|
|
143
|
+
If you want to only use your local recipes, and not include the default recipes, use the @-L@ flag.
|
144
|
+
|
143
145
|
h3. Generate an Application Interactively
|
144
146
|
|
145
147
|
You'll be prompted for recipes and gems:
|
@@ -261,6 +263,14 @@ $ rails_apps_composer template ~/Desktop/template.rb -d my_defaults.yaml
|
|
261
263
|
|
262
264
|
Use the @my_defaults.yaml@ file to specify a list of recipes, preferences, and extra gems. You can use any name (and file extension) for the file. See the "Defaults File":http://railsapps.github.com/tutorial-rails-apps-composer.html#Defaults section in the Guide concerning the format of the defaults file. Use the "quiet flag" @-q@ if you want to skip all prompts.
|
263
265
|
|
266
|
+
h3. Generate an Application Template With Your Own Layout
|
267
|
+
|
268
|
+
If you want to generate an application template, but use your own layout to do so, you can use the @-t@ flag to set the directory where your templates are. Look at the @templates/@ directory in this gem to see how your templates should look.
|
269
|
+
|
270
|
+
<pre>
|
271
|
+
$ rails_apps_composer template ~/Desktop/template.rb -t ~/Desktop/my_templates
|
272
|
+
</pre>
|
273
|
+
|
264
274
|
h3. Generate an Application from a Template
|
265
275
|
|
266
276
|
After you've created a template file, you can generate an application from a template at any time using the @rails new@ command with the @-m@ option:
|
data/lib/rails_wizard/command.rb
CHANGED
@@ -8,6 +8,8 @@ module RailsWizard
|
|
8
8
|
method_option :recipes, :type => :array, :aliases => "-r"
|
9
9
|
method_option :defaults, :type => :string, :aliases => "-d"
|
10
10
|
method_option :recipe_dirs, :type => :array, :aliases => "-l"
|
11
|
+
method_option :no_default_recipes, :type => :boolean, :aliases => "-L"
|
12
|
+
method_option :template_root, :type => :string, :aliases => '-t'
|
11
13
|
method_option :quiet, :type => :boolean, :aliases => "-q", :default => false
|
12
14
|
def new(name)
|
13
15
|
add_recipes
|
@@ -22,6 +24,8 @@ module RailsWizard
|
|
22
24
|
method_option :recipes, :type => :array, :aliases => "-r"
|
23
25
|
method_option :defaults, :type => :string, :aliases => "-d"
|
24
26
|
method_option :recipe_dirs, :type => :array, :aliases => "-l"
|
27
|
+
method_option :no_default_recipes, :type => :boolean, :aliases => "-L"
|
28
|
+
method_option :template_root, :type => :string, :aliases => '-t'
|
25
29
|
method_option :quiet, :type => :boolean, :aliases => "-q", :default => false
|
26
30
|
def template(template_name)
|
27
31
|
add_recipes
|
@@ -54,6 +58,7 @@ module RailsWizard
|
|
54
58
|
def yellow; "\033[33m" end
|
55
59
|
|
56
60
|
def add_recipes
|
61
|
+
Recipes.clear if options[:no_default_recipes]
|
57
62
|
if dirs = options[:recipe_dirs]
|
58
63
|
dirs.each { |d| Recipes.add_from_directory(d) }
|
59
64
|
end
|
@@ -135,23 +140,27 @@ module RailsWizard
|
|
135
140
|
default
|
136
141
|
end
|
137
142
|
end
|
138
|
-
|
143
|
+
|
139
144
|
def ask_for_args(defaults)
|
140
145
|
args = []
|
141
146
|
default_args = defaults["args"] || {}
|
142
|
-
|
147
|
+
|
143
148
|
question = "#{bold}Would you like to skip Test::Unit? (yes for RSpec) \033[33m(y/n)\033[0m#{clear}"
|
144
149
|
args << "-T" if ask_for_arg(question, default_args[:skip_test_unit])
|
145
150
|
|
146
151
|
question = "#{bold}Would you like to skip Active Record? (yes for MongoDB) \033[33m(y/n)\033[0m#{clear}"
|
147
152
|
args << "-O" if ask_for_arg(question, default_args[:skip_active_record])
|
148
|
-
|
153
|
+
|
149
154
|
args
|
150
155
|
end
|
151
|
-
|
156
|
+
|
152
157
|
#pass in name if you want to create a rails app
|
153
158
|
#pass in file_name if you want to create a template
|
154
159
|
def run_template(name, recipes, gems, args, defaults, file_name=nil)
|
160
|
+
if options[:template_root]
|
161
|
+
RailsWizard::Template.template_root = options[:template_root]
|
162
|
+
end
|
163
|
+
|
155
164
|
if file_name
|
156
165
|
file = File.new(file_name,'w')
|
157
166
|
else
|
data/lib/rails_wizard/recipes.rb
CHANGED
@@ -2,7 +2,7 @@ module RailsWizard
|
|
2
2
|
module Recipes
|
3
3
|
@@categories = {}
|
4
4
|
@@list = {}
|
5
|
-
|
5
|
+
|
6
6
|
def self.add(recipe)
|
7
7
|
RailsWizard::Recipes.const_set ActiveSupport::Inflector.camelize(recipe.key), recipe
|
8
8
|
@@list[recipe.key] = recipe
|
@@ -11,6 +11,14 @@ module RailsWizard
|
|
11
11
|
recipe
|
12
12
|
end
|
13
13
|
|
14
|
+
def self.clear
|
15
|
+
self.list.each do |recipe_key|
|
16
|
+
send(:remove_const, ActiveSupport::Inflector.camelize(recipe_key))
|
17
|
+
end
|
18
|
+
@@categories = {}
|
19
|
+
@@list = {}
|
20
|
+
end
|
21
|
+
|
14
22
|
def self.[](key)
|
15
23
|
@@list[key.to_s]
|
16
24
|
end
|
@@ -19,7 +19,11 @@ module RailsWizard
|
|
19
19
|
end
|
20
20
|
|
21
21
|
def self.template_root
|
22
|
-
File.dirname(__FILE__) + '/../../templates'
|
22
|
+
@template_root ||= File.dirname(__FILE__) + '/../../templates'
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.template_root=(root)
|
26
|
+
@template_root = root
|
23
27
|
end
|
24
28
|
|
25
29
|
def self.render(template_name, binding = nil)
|
data/recipes/gems.rb
CHANGED
@@ -75,7 +75,7 @@ gem 'machinist', '>= 2.0', :group => :test if prefer :fixtures, 'machinist'
|
|
75
75
|
## Front-end Framework
|
76
76
|
gem 'bootstrap-sass', '>= 2.1.0.1' if prefer :bootstrap, 'sass'
|
77
77
|
gem 'compass-rails', '>= 1.0.3', :group => :assets if prefer :frontend, 'foundation'
|
78
|
-
gem 'zurb-foundation', '>= 3.
|
78
|
+
gem 'zurb-foundation', '>= 3.2.0', :group => :assets if prefer :frontend, 'foundation'
|
79
79
|
if prefer :bootstrap, 'less'
|
80
80
|
gem 'twitter-bootstrap-rails', '>= 2.1.4', :group => :assets
|
81
81
|
# install gem 'therubyracer' to use Less
|
data/recipes/saas.rb
CHANGED
@@ -31,7 +31,7 @@ if prefer :railsapps, 'rails-stripe-membership-saas'
|
|
31
31
|
copy_from_repo 'features/users/sign_up.feature', :repo => repo
|
32
32
|
copy_from_repo 'features/step_definitions/user_steps.rb', :repo => repo
|
33
33
|
copy_from_repo 'config/locales/devise.en.yml', :repo => repo
|
34
|
-
|
34
|
+
|
35
35
|
# >-------------------------------[ Models ]--------------------------------<
|
36
36
|
copy_from_repo 'app/models/ability.rb', :repo => repo
|
37
37
|
copy_from_repo 'app/models/user.rb', :repo => repo
|
@@ -53,10 +53,10 @@ if prefer :railsapps, 'rails-stripe-membership-saas'
|
|
53
53
|
copy_from_repo 'app/controllers/content_controller.rb', :repo => repo
|
54
54
|
copy_from_repo 'app/controllers/registrations_controller.rb', :repo => repo
|
55
55
|
copy_from_repo 'app/controllers/application_controller.rb', :repo => repo
|
56
|
+
copy_from_repo 'app/controllers/users_controller.rb', :repo => repo
|
56
57
|
|
57
58
|
# >-------------------------------[ Mailers ]--------------------------------<
|
58
59
|
generate 'mailer UserMailer'
|
59
|
-
copy_from_repo 'spec/mailers/user_mailer_spec.rb', :repo => repo
|
60
60
|
copy_from_repo 'app/mailers/user_mailer.rb', :repo => repo
|
61
61
|
|
62
62
|
# >-------------------------------[ Views ]--------------------------------<
|
@@ -79,7 +79,13 @@ if prefer :railsapps, 'rails-stripe-membership-saas'
|
|
79
79
|
copy_from_repo 'app/assets/javascripts/registrations.js.erb', :repo => repo
|
80
80
|
copy_from_repo 'app/assets/stylesheets/application.css.scss', :repo => repo
|
81
81
|
copy_from_repo 'app/assets/stylesheets/pricing.css.scss', :repo => repo
|
82
|
-
|
82
|
+
|
83
|
+
# >-------------------------------[ RSpec ]--------------------------------<
|
84
|
+
say_wizard "copying RSpec tests from the rails-stripe-membership-saas examples"
|
85
|
+
copy_from_repo 'spec/models/user_spec.rb', :repo => repo
|
86
|
+
copy_from_repo 'spec/controllers/content_controller_spec.rb', :repo => repo
|
87
|
+
copy_from_repo 'spec/mailers/user_mailer_spec.rb', :repo => repo
|
88
|
+
|
83
89
|
### GIT ###
|
84
90
|
git :add => '-A' if prefer :git, true
|
85
91
|
git :commit => '-qm "rails_apps_composer: membership app"' if prefer :git, true
|
data/recipes/testing.rb
CHANGED
@@ -251,7 +251,9 @@ Fabricator(:user) do
|
|
251
251
|
end
|
252
252
|
RUBY
|
253
253
|
end
|
254
|
-
|
254
|
+
if prefer :integration, 'cucumber'
|
255
|
+
gsub_file 'features/step_definitions/user_steps.rb', /@user = FactoryGirl.create\(:user, email: @visitor\[:email\]\)/, '@user = Fabricate(:user, email: @visitor[:email])'
|
256
|
+
end
|
255
257
|
gsub_file 'spec/controllers/users_controller_spec.rb', /@user = FactoryGirl.create\(:user\)/, '@user = Fabricate(:user)'
|
256
258
|
end
|
257
259
|
end # after_everything
|
@@ -26,4 +26,12 @@ describe RailsWizard::Recipes do
|
|
26
26
|
subject.add_from_directory(File.join(File.dirname(__FILE__), '..', 'test_recipes'))
|
27
27
|
subject.list.should include 'test_recipe_in_file'
|
28
28
|
end
|
29
|
+
|
30
|
+
describe '.clear' do
|
31
|
+
it 'should remove all current recipes' do
|
32
|
+
RailsWizard::Recipes.clear
|
33
|
+
subject.list.should == []
|
34
|
+
subject.categories.should == []
|
35
|
+
end
|
36
|
+
end
|
29
37
|
end
|
@@ -7,6 +7,18 @@ describe RailsWizard::Template do
|
|
7
7
|
let(:gems){ ['foogem'] }
|
8
8
|
let(:args){ [] }
|
9
9
|
|
10
|
+
describe '.template_root' do
|
11
|
+
it 'returns the gem ./templates directory by default' do
|
12
|
+
template_root = File.expand_path(subject.template_root)
|
13
|
+
template_root.should == File.expand_path('../../../templates', __FILE__)
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'can be set to another directory' do
|
17
|
+
subject.template_root = '/tmp/templates'
|
18
|
+
subject.template_root.should == '/tmp/templates'
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
10
22
|
describe '#initialize' do
|
11
23
|
it 'should work with classes' do
|
12
24
|
subject.new([recipe], gems).recipes.should == [recipe]
|
data/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails_apps_composer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.2.
|
4
|
+
version: 2.2.17
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-10-
|
12
|
+
date: 2012-10-27 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: i18n
|
@@ -202,7 +202,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
202
202
|
version: '0'
|
203
203
|
segments:
|
204
204
|
- 0
|
205
|
-
hash:
|
205
|
+
hash: -4210114770382273959
|
206
206
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
207
207
|
none: false
|
208
208
|
requirements:
|
@@ -211,7 +211,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
211
211
|
version: '0'
|
212
212
|
segments:
|
213
213
|
- 0
|
214
|
-
hash:
|
214
|
+
hash: -4210114770382273959
|
215
215
|
requirements: []
|
216
216
|
rubyforge_project: rails_apps_composer
|
217
217
|
rubygems_version: 1.8.24
|