rails_apps_composer 1.5.4 → 1.5.5
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/lib/rails_wizard/command.rb +15 -11
- data/lib/rails_wizard/recipe.rb +13 -5
- data/recipes/add_user.rb +7 -3
- data/recipes/html5.rb +1 -2
- data/recipes/mongoid.rb +1 -2
- data/recipes/omniauth.rb +5 -3
- data/recipes/prelaunch_signup.rb +1 -1
- data/recipes/rspec.rb +3 -3
- data/recipes/seed_database.rb +0 -7
- data/recipes/turnip.rb +18 -0
- data/spec/rails_wizard/recipe_spec.rb +28 -2
- data/version.rb +1 -1
- metadata +5 -4
data/lib/rails_wizard/command.rb
CHANGED
@@ -98,18 +98,22 @@ module RailsWizard
|
|
98
98
|
else
|
99
99
|
file = Tempfile.new('template')
|
100
100
|
end
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
101
|
+
begin
|
102
|
+
template = RailsWizard::Template.new(recipes, defaults)
|
103
|
+
file.write template.compile
|
104
|
+
file.close
|
105
|
+
if name
|
106
|
+
system "rails new #{name} -m #{file.path} #{template.args.join(' ')}"
|
107
|
+
else
|
108
|
+
puts "install with the command:"
|
109
|
+
puts
|
110
|
+
puts "rails new <APP_NAME> -m #{file.path} #{template.args.join(' ')}"
|
111
|
+
end
|
112
|
+
rescue RailsWizard::UnknownRecipeError
|
113
|
+
raise Thor::Error.new("> #{red}#{$!.message}.#{clear}")
|
114
|
+
ensure
|
115
|
+
file.unlink unless file_name
|
110
116
|
end
|
111
|
-
ensure
|
112
|
-
file.unlink unless file_name
|
113
117
|
end
|
114
118
|
end
|
115
119
|
end
|
data/lib/rails_wizard/recipe.rb
CHANGED
@@ -7,7 +7,7 @@ require 'erb'
|
|
7
7
|
module RailsWizard
|
8
8
|
class Recipe
|
9
9
|
extend Comparable
|
10
|
-
|
10
|
+
|
11
11
|
def self.<=>(another)
|
12
12
|
return -1 if another.run_after.include?(self.key) || self.run_before.include?(another.key)
|
13
13
|
return 1 if another.run_before.include?(self.key) || self.run_after.include?(another.key)
|
@@ -37,8 +37,8 @@ module RailsWizard
|
|
37
37
|
else
|
38
38
|
template = template_or_file
|
39
39
|
end
|
40
|
-
|
41
|
-
recipe_class = Class.new(RailsWizard::Recipe)
|
40
|
+
|
41
|
+
recipe_class = Class.new(RailsWizard::Recipe)
|
42
42
|
recipe_class.attributes = attributes
|
43
43
|
recipe_class.template = template
|
44
44
|
recipe_class.key = key
|
@@ -95,12 +95,20 @@ module RailsWizard
|
|
95
95
|
end
|
96
96
|
|
97
97
|
def self.from_mongo(key)
|
98
|
-
return key if key.respond_to?(:superclass) && key.superclass == RailsWizard::Recipe
|
99
|
-
RailsWizard::Recipes[key]
|
98
|
+
return key if (key.respond_to?(:superclass) && key.superclass == RailsWizard::Recipe)
|
99
|
+
return RailsWizard::Recipes[key] if RailsWizard::Recipes[key]
|
100
|
+
raise(RailsWizard::UnknownRecipeError.new(key))
|
100
101
|
end
|
101
102
|
|
102
103
|
def self.get_binding
|
103
104
|
binding
|
104
105
|
end
|
105
106
|
end
|
107
|
+
|
108
|
+
class UnknownRecipeError < StandardError
|
109
|
+
def initialize(key)
|
110
|
+
message = "No recipe found with name '#{key}'"
|
111
|
+
super(message)
|
112
|
+
end
|
113
|
+
end
|
106
114
|
end
|
data/recipes/add_user.rb
CHANGED
@@ -43,14 +43,18 @@ RUBY
|
|
43
43
|
|
44
44
|
# Add a 'name' attribute to the User model
|
45
45
|
if recipes.include? 'mongoid'
|
46
|
+
# include timestamps to avoid special casing views for Mongoid
|
47
|
+
gsub_file 'app/models/user.rb',
|
48
|
+
/include Mongoid::Document$/,
|
49
|
+
"\\0\n include Mongoid::Timestamps\n"
|
46
50
|
# for mongoid
|
47
51
|
gsub_file 'app/models/user.rb', /\bend\s*\Z/ do
|
48
52
|
<<-RUBY
|
49
53
|
# run 'rake db:mongoid:create_indexes' to create indexes
|
50
|
-
index :
|
51
|
-
field :name
|
54
|
+
index({ email: 1 }, { unique: true, background: true })
|
55
|
+
field :name, :type => String
|
52
56
|
validates_presence_of :name
|
53
|
-
attr_accessible :name, :email, :password, :password_confirmation, :remember_me
|
57
|
+
attr_accessible :name, :email, :password, :password_confirmation, :remember_me, :created_at, :updated_at
|
54
58
|
end
|
55
59
|
RUBY
|
56
60
|
end
|
data/recipes/html5.rb
CHANGED
@@ -5,7 +5,7 @@ case config['css_option']
|
|
5
5
|
|
6
6
|
when 'foundation'
|
7
7
|
# https://github.com/zurb/foundation-rails
|
8
|
-
gem 'zurb-foundation', '>= 3.0.
|
8
|
+
gem 'zurb-foundation', '>= 3.0.5'
|
9
9
|
|
10
10
|
when 'bootstrap_less'
|
11
11
|
# https://github.com/seyhunak/twitter-bootstrap-rails
|
@@ -124,7 +124,6 @@ RUBY
|
|
124
124
|
get 'https://raw.github.com/dhgamache/Skeleton/master/stylesheets/base.css', 'app/assets/stylesheets/base.css.scss'
|
125
125
|
get 'https://raw.github.com/dhgamache/Skeleton/master/stylesheets/layout.css', 'app/assets/stylesheets/layout.css.scss'
|
126
126
|
get 'https://raw.github.com/dhgamache/Skeleton/master/stylesheets/skeleton.css', 'app/assets/stylesheets/skeleton.css.scss'
|
127
|
-
get 'https://raw.github.com/dhgamache/Skeleton/master/javascripts/tabs.js', 'app/assets/javascripts/tabs.js'
|
128
127
|
|
129
128
|
when 'normalize'
|
130
129
|
say_wizard 'normalizing CSS for consistent styling'
|
data/recipes/mongoid.rb
CHANGED
@@ -4,8 +4,7 @@
|
|
4
4
|
if config['mongoid']
|
5
5
|
say_wizard "REMINDER: When creating a Rails app using Mongoid..."
|
6
6
|
say_wizard "you should add the '-O' flag to 'rails new'"
|
7
|
-
gem '
|
8
|
-
gem 'mongoid', '>= 2.4.11'
|
7
|
+
gem 'mongoid', '>= 3.0.1'
|
9
8
|
else
|
10
9
|
recipes.delete('mongoid')
|
11
10
|
end
|
data/recipes/omniauth.rb
CHANGED
@@ -13,8 +13,8 @@ if config['omniauth']
|
|
13
13
|
gem 'omniauth-github'
|
14
14
|
when 'linkedin'
|
15
15
|
gem 'omniauth-linkedin'
|
16
|
-
when 'google'
|
17
|
-
gem 'omniauth-google'
|
16
|
+
when 'google-oauth2'
|
17
|
+
gem 'omniauth-google-oauth2'
|
18
18
|
when 'tumblr'
|
19
19
|
gem 'omniauth-tumblr'
|
20
20
|
end
|
@@ -48,6 +48,8 @@ RUBY
|
|
48
48
|
gsub_file 'app/models/user.rb', /\bend\s*\Z/ do
|
49
49
|
<<-RUBY
|
50
50
|
attr_accessible :provider, :uid, :name, :email
|
51
|
+
# run 'rake db:mongoid:create_indexes' to create indexes
|
52
|
+
index({ email: 1 }, { unique: true, background: true })
|
51
53
|
end
|
52
54
|
RUBY
|
53
55
|
end
|
@@ -189,4 +191,4 @@ config:
|
|
189
191
|
- provider:
|
190
192
|
type: multiple_choice
|
191
193
|
prompt: "Which service provider will you use?"
|
192
|
-
choices: [["Twitter", twitter], ["Facebook", facebook], ["GitHub", github], ["LinkedIn", linkedin], ["Google",
|
194
|
+
choices: [["Twitter", twitter], ["Facebook", facebook], ["GitHub", github], ["LinkedIn", linkedin], ["Google-Oauth-2",google-oauth2], ["Tumblr", tumblr]]
|
data/recipes/prelaunch_signup.rb
CHANGED
@@ -18,7 +18,7 @@ gem 'haml-rails', '>= 0.3.4', :group => :development
|
|
18
18
|
|
19
19
|
# >---------------------------------[ RSpec ]---------------------------------<
|
20
20
|
|
21
|
-
gem 'rspec-rails', '>= 2.
|
21
|
+
gem 'rspec-rails', '>= 2.11.0', :group => [:development, :test]
|
22
22
|
gem 'factory_girl_rails', '>= 3.5.0', :group => [:development, :test]
|
23
23
|
# add a collection of RSpec matchers and Cucumber steps to make testing email easy
|
24
24
|
gem 'email_spec', '>= 1.2.1', :group => :test
|
data/recipes/rspec.rb
CHANGED
@@ -2,12 +2,12 @@
|
|
2
2
|
# https://github.com/RailsApps/rails_apps_composer/blob/master/recipes/rspec.rb
|
3
3
|
|
4
4
|
if config['rspec']
|
5
|
-
gem 'rspec-rails', '>= 2.
|
5
|
+
gem 'rspec-rails', '>= 2.11.0', :group => [:development, :test]
|
6
6
|
if recipes.include? 'mongoid'
|
7
7
|
# use the database_cleaner gem to reset the test database
|
8
8
|
gem 'database_cleaner', '>= 0.8.0', :group => :test
|
9
|
-
# include RSpec matchers from the mongoid-rspec gem
|
10
|
-
gem 'mongoid-rspec', '1.4.
|
9
|
+
# include RSpec matchers from the mongoid-rspec gem
|
10
|
+
gem 'mongoid-rspec', '1.4.6', :group => :test
|
11
11
|
end
|
12
12
|
case config['fixtures']
|
13
13
|
when 'machinist'
|
data/recipes/seed_database.rb
CHANGED
@@ -3,13 +3,6 @@
|
|
3
3
|
|
4
4
|
after_bundler do
|
5
5
|
say_wizard "SeedDatabase recipe running 'after bundler'"
|
6
|
-
if recipes.include? 'mongoid'
|
7
|
-
append_file 'db/seeds.rb' do <<-FILE
|
8
|
-
puts 'EMPTY THE MONGODB DATABASE'
|
9
|
-
Mongoid.master.collections.reject { |c| c.name =~ /^system/}.each(&:drop)
|
10
|
-
FILE
|
11
|
-
end
|
12
|
-
end
|
13
6
|
if recipes.include? 'devise'
|
14
7
|
if recipes.include? 'devise-confirmable'
|
15
8
|
append_file 'db/seeds.rb' do <<-FILE
|
data/recipes/turnip.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
gem 'turnip', :group => [:test]
|
2
|
+
|
3
|
+
after_bundler do
|
4
|
+
append_to_file '.rspec', '-r turnip/rspec'
|
5
|
+
create_file 'spec/acceptance/steps/.gitkeep'
|
6
|
+
end
|
7
|
+
|
8
|
+
__END__
|
9
|
+
|
10
|
+
name: Turnip
|
11
|
+
description: "Gherkin extension for RSpec"
|
12
|
+
author: listrophy,mathias
|
13
|
+
|
14
|
+
requires: [rspec]
|
15
|
+
run_after: [rspec]
|
16
|
+
exclusive: acceptance_testing
|
17
|
+
category: testing
|
18
|
+
tags: [acceptance]
|
@@ -41,7 +41,7 @@ name: This is an Example
|
|
41
41
|
description: You know it's an exmaple.
|
42
42
|
RUBY
|
43
43
|
recipe = RailsWizard::Recipe.generate('just_a_test', file)
|
44
|
-
recipe.template.should == '# this is an example'
|
44
|
+
recipe.template.should == '# this is an example'
|
45
45
|
recipe.category.should == 'example'
|
46
46
|
recipe.name.should == 'This is an Example'
|
47
47
|
end
|
@@ -69,11 +69,37 @@ RUBY
|
|
69
69
|
|
70
70
|
it 'should set default attributes' do
|
71
71
|
recipe = RailsWizard::Recipe.generate('abc','# test')
|
72
|
-
|
72
|
+
|
73
73
|
RailsWizard::Recipe::DEFAULT_ATTRIBUTES.each_pair do |k,v|
|
74
74
|
recipe.send(k).should == v
|
75
75
|
end
|
76
76
|
end
|
77
|
+
|
78
|
+
describe ".from_mongo" do
|
79
|
+
context "when asked for a known recipe" do
|
80
|
+
let(:recipe_key) {'recipe_example'}
|
81
|
+
let(:recipe) { RailsWizard::Recipe.generate(recipe_key, "# this is a test", :category => 'example', :name => "RailsWizard Example") }
|
82
|
+
let(:recipe_klass) { Kernel.const_get("RailsWizard").const_get("Recipes").const_get("RecipeExample") }
|
83
|
+
before :all do
|
84
|
+
RailsWizard::Recipes.add(recipe)
|
85
|
+
end
|
86
|
+
context "by key" do
|
87
|
+
it "returns the recipe" do
|
88
|
+
RailsWizard::Recipe.from_mongo(recipe_key).should == recipe_klass
|
89
|
+
end
|
90
|
+
end
|
91
|
+
context "by class" do
|
92
|
+
it "returns the recipe" do
|
93
|
+
RailsWizard::Recipe.from_mongo(recipe_klass).should == recipe_klass
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
context "when asked for an unknown recipe" do
|
98
|
+
it "raises an UnknownRecipeError" do
|
99
|
+
expect { RailsWizard::Recipe.from_mongo("foo") }.to raise_error RailsWizard::UnknownRecipeError, "No recipe found with name 'foo'"
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
77
103
|
end
|
78
104
|
|
79
105
|
__END__
|
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: 1.5.
|
4
|
+
version: 1.5.5
|
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-07-
|
12
|
+
date: 2012-07-13 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: i18n
|
@@ -197,6 +197,7 @@ files:
|
|
197
197
|
- recipes/slim.rb
|
198
198
|
- recipes/static_page.rb
|
199
199
|
- recipes/subdomains.rb
|
200
|
+
- recipes/turnip.rb
|
200
201
|
- recipes/unicorn.rb
|
201
202
|
- recipes/users_page.rb
|
202
203
|
- README.textile
|
@@ -227,7 +228,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
227
228
|
version: '0'
|
228
229
|
segments:
|
229
230
|
- 0
|
230
|
-
hash:
|
231
|
+
hash: 584023313180931500
|
231
232
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
232
233
|
none: false
|
233
234
|
requirements:
|
@@ -236,7 +237,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
236
237
|
version: '0'
|
237
238
|
segments:
|
238
239
|
- 0
|
239
|
-
hash:
|
240
|
+
hash: 584023313180931500
|
240
241
|
requirements: []
|
241
242
|
rubyforge_project: rails_apps_composer
|
242
243
|
rubygems_version: 1.8.24
|