rails_templater 0.0.2 → 0.1.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/.gitignore +1 -0
- data/.rspec +3 -0
- data/CHANGELOG +17 -0
- data/README.textile +58 -0
- data/Rakefile +5 -0
- data/TODO.textile +5 -5
- data/bin/templater +0 -0
- data/lib/rails_templater.rb +14 -5
- data/lib/rails_templater/cli.rb +1 -1
- data/lib/rails_templater/fixture_replacement.rb +23 -0
- data/lib/rails_templater/javascript_framework.rb +23 -0
- data/lib/rails_templater/orm.rb +23 -0
- data/lib/rails_templater/templater.rb +49 -0
- data/lib/rails_templater/testing_framework.rb +23 -0
- data/lib/rails_templater/version.rb +1 -1
- data/lib/template_framework/core_ext.rb +15 -0
- data/lib/{template → template_framework}/generators/factory_girl.rb +0 -0
- data/lib/{template → template_framework}/generators/factory_girl/model/model_generator.rb +0 -0
- data/lib/{template → template_framework}/generators/factory_girl/model/templates/fixtures.rb +0 -0
- data/lib/template_framework/recipes/active_record.rb +5 -0
- data/lib/template_framework/recipes/cucumber.rb +37 -0
- data/lib/{template → template_framework}/recipes/default.rb +2 -5
- data/lib/template_framework/recipes/factory_girl.rb +11 -0
- data/lib/template_framework/recipes/git.rb +3 -0
- data/lib/template_framework/recipes/haml.rb +7 -0
- data/lib/template_framework/recipes/javascript_framework.rb +18 -0
- data/lib/template_framework/recipes/jquery.rb +10 -0
- data/lib/template_framework/recipes/mongoid.rb +11 -0
- data/lib/template_framework/recipes/orm.rb +19 -0
- data/lib/template_framework/recipes/remarkable.rb +12 -0
- data/lib/template_framework/recipes/rspec.rb +22 -0
- data/lib/template_framework/recipes/sass.rb +48 -0
- data/lib/template_framework/recipes/test_unit.rb +1 -0
- data/lib/template_framework/recipes/testing_framework.rb +19 -0
- data/lib/{template → template_framework}/snippets/cucumber/factory_girl +0 -0
- data/lib/{template/snippets/rails/generators → template_framework/snippets/factory_girl/generator} +0 -0
- data/lib/{template → template_framework}/snippets/rspec/mongoid +0 -0
- data/lib/template_framework/template_runner.rb +19 -0
- data/lib/template_framework/templates/active_record/config/database.yml +22 -0
- data/lib/{template → template_framework}/templates/git/gitignore +0 -0
- data/lib/{template → template_framework}/templates/haml/app/views/layouts/application.html.haml +0 -0
- data/lib/{template → template_framework}/templates/mongoid/features/step_definitions/mongoid_steps.rb +0 -0
- data/lib/{template → template_framework}/templates/mongoid/features/support/hooks.rb +0 -0
- data/rails_templater.gemspec +2 -0
- data/spec/fixtures/sample_snippet +1 -0
- data/spec/fixtures/sample_template.rb +0 -0
- data/spec/rails_templater/fixture_replacement_spec.rb +29 -0
- data/spec/rails_templater/javascript_framework_spec.rb +36 -0
- data/spec/rails_templater/orm_spec.rb +36 -0
- data/spec/rails_templater/templater_spec.rb +65 -0
- data/spec/rails_templater/testing_framework_spec.rb +35 -0
- data/spec/rails_templater_spec.rb +9 -0
- data/spec/spec_helper.rb +20 -0
- data/spec/support/fixtures.rb +5 -0
- data/spec/support/paths.rb +1 -0
- metadata +65 -26
- data/README.md +0 -42
- data/lib/template/core_extensions.rb +0 -53
- data/lib/template/recipes/cucumber.rb +0 -22
- data/lib/template/recipes/design.rb +0 -16
- data/lib/template/recipes/factory_girl.rb +0 -5
- data/lib/template/recipes/haml.rb +0 -5
- data/lib/template/recipes/jquery.rb +0 -7
- data/lib/template/recipes/mongoid.rb +0 -7
- data/lib/template/recipes/remarkable.rb +0 -6
- data/lib/template/recipes/rspec.rb +0 -12
- data/lib/template/templater.rb +0 -23
@@ -0,0 +1,11 @@
|
|
1
|
+
say("\nReplacing ActiveRecord with Mongoid\n", Thor::Shell::Color::YELLOW )
|
2
|
+
|
3
|
+
gem 'mongoid', '2.0.0.rc.6'
|
4
|
+
gem 'bson_ext', '~> 1.2'
|
5
|
+
|
6
|
+
gsub_file 'config/application.rb', 'require "active_record/railtie"', '# require "active_record/railtie"'
|
7
|
+
|
8
|
+
templater.post_bundler do
|
9
|
+
generate 'mongoid:config'
|
10
|
+
run 'cp config/mongoid.yml config/mongoid.yml.example'
|
11
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
say "\nWhich ORM/ODM would you like to use?\n", Thor::Shell::Color::BLUE
|
2
|
+
|
3
|
+
orm_options = {
|
4
|
+
'Option' => 'ORM/ODM',
|
5
|
+
'1' => 'Mongoid',
|
6
|
+
'2' => 'ActiveRecord'
|
7
|
+
}
|
8
|
+
|
9
|
+
print_table orm_options.to_a, :ident => 4
|
10
|
+
|
11
|
+
orm_selection = ask("\nOption: ", Thor::Shell::Color::BLUE)
|
12
|
+
if orm_selection.present?
|
13
|
+
templater.orm.type = orm_options[orm_selection].underscore.to_sym
|
14
|
+
end
|
15
|
+
|
16
|
+
$stdout << "\n\n"
|
17
|
+
|
18
|
+
apply templater.recipe('mongoid') if templater.orm.mongoid?
|
19
|
+
apply templater.recipe('active_record') if templater.orm.active_record?
|
@@ -0,0 +1,12 @@
|
|
1
|
+
if templater.orm.mongoid?
|
2
|
+
gem 'remarkable_activemodel', '>=4.0.0.alpha4', :group => :test
|
3
|
+
gem 'remarkable_mongoid', :group => :test
|
4
|
+
require_remarkable = "\nrequire 'remarkable/active_model'\nrequire 'remarkable/mongoid'"
|
5
|
+
elsif templater.orm.active_record?
|
6
|
+
gem 'remarkable_activerecord', '>=4.0.0.alpha4', :group => :test
|
7
|
+
require_remarkable = "\nrequire 'remarkable/active_record'"
|
8
|
+
end
|
9
|
+
|
10
|
+
templater.post_bundler do
|
11
|
+
inject_into_file 'spec/spec_helper.rb', require_remarkable, :after => "require 'rspec/rails'"
|
12
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
say("\nReplacing TestUnit with RSpec as your Testing Framework\n", Thor::Shell::Color::YELLOW )
|
2
|
+
|
3
|
+
gem 'rspec-rails', '>= 2.4.1', :group => [:development]
|
4
|
+
|
5
|
+
remove_dir 'test'
|
6
|
+
gsub_file 'config/application.rb', 'require "rails/test_unit/railtie"', '# require "rails/test_unit/railtie"'
|
7
|
+
|
8
|
+
templater.post_bundler do
|
9
|
+
generate 'rspec:install'
|
10
|
+
|
11
|
+
spec_helper_path = 'spec/spec_helper.rb'
|
12
|
+
|
13
|
+
gsub_file spec_helper_path, 'config.fixture_path = "#{::Rails.root}/spec/fixtures"', ''
|
14
|
+
|
15
|
+
if templater.orm.mongoid?
|
16
|
+
gsub_file spec_helper_path, /(config.use_transactional_fixtures = true)/, '# \1'
|
17
|
+
inject_into_file spec_helper_path, templater.load_snippet('mongoid', 'rspec'), :after => "# config.use_transactional_fixtures = true\n"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
apply(templater.recipe('remarkable')) if yes?("\n\nWould you like to add Remarkable RSpec matchers? [y|n]: ", Thor::Shell::Color::BLUE)
|
22
|
+
apply templater.recipe('factory_girl')
|
@@ -0,0 +1,48 @@
|
|
1
|
+
if yes?("\n[Stylesheets] Would you like to use Sass for Syntactically Awesome Stylesheets? [y|n]: ", Thor::Shell::Color::BLUE)
|
2
|
+
|
3
|
+
# gem 'sass' # TODO: Wait until Sass 3.1 is released
|
4
|
+
gem 'haml'
|
5
|
+
|
6
|
+
if yes?("\nWould you like to use Compass? [y|n]: ", Thor::Shell::Color::BLUE)
|
7
|
+
design_options = {
|
8
|
+
'Option' => 'Design Framework',
|
9
|
+
'1' => 'Compass',
|
10
|
+
'2' => 'Compass with blueprint semantic',
|
11
|
+
'3' => 'Compass with blueprint basic'
|
12
|
+
}
|
13
|
+
|
14
|
+
print_table design_options.to_a, :ident => 4
|
15
|
+
design_selection = ask("\nOption: ", Thor::Shell::Color::BLUE)
|
16
|
+
|
17
|
+
design_framework = case design_selection
|
18
|
+
when "1"
|
19
|
+
:compass
|
20
|
+
when "2"
|
21
|
+
:compass_blueprint_semantic
|
22
|
+
when "3"
|
23
|
+
:compass_blueprint
|
24
|
+
else
|
25
|
+
:none
|
26
|
+
end
|
27
|
+
|
28
|
+
unless design_framework == :none
|
29
|
+
gem 'compass'
|
30
|
+
|
31
|
+
compass_sass_dir = "app/stylesheets"
|
32
|
+
compass_css_dir = "public/stylesheets/compiled"
|
33
|
+
blueprint_option = case design_framework
|
34
|
+
when :compass_blueprint
|
35
|
+
"--using blueprint/basic"
|
36
|
+
when :compass_blueprint_semantic
|
37
|
+
"--using blueprint/semantic"
|
38
|
+
end
|
39
|
+
|
40
|
+
compass_command = "compass init rails . #{blueprint_option} --css-dir=#{compass_css_dir} --sass-dir=#{compass_sass_dir} "
|
41
|
+
|
42
|
+
templater.post_bundler do
|
43
|
+
run compass_command
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
gsub_file 'config/application.rb', '# require "rails/test_unit/railtie"', 'require "rails/test_unit/railtie"'
|
@@ -0,0 +1,19 @@
|
|
1
|
+
say "\nWhich Testing Framework would you like to use?\n", Thor::Shell::Color::BLUE
|
2
|
+
|
3
|
+
testing_framework_options = {
|
4
|
+
'Option' => 'Testing Framework',
|
5
|
+
'1' => 'rspec',
|
6
|
+
'2' => 'TestUnit'
|
7
|
+
}
|
8
|
+
|
9
|
+
print_table testing_framework_options.to_a, :ident => 4
|
10
|
+
|
11
|
+
testing_framework_selection = ask("\nOption: ", Thor::Shell::Color::BLUE)
|
12
|
+
if testing_framework_selection.present?
|
13
|
+
templater.testing_framework.type = testing_framework_options[testing_framework_selection].underscore.to_sym
|
14
|
+
end
|
15
|
+
|
16
|
+
$stdout << "\n\n"
|
17
|
+
|
18
|
+
apply templater.recipe('rspec') if templater.testing_framework.rspec?
|
19
|
+
apply templater.recipe('test_unit') if templater.testing_framework.test_unit?
|
File without changes
|
data/lib/{template/snippets/rails/generators → template_framework/snippets/factory_girl/generator}
RENAMED
File without changes
|
File without changes
|
@@ -0,0 +1,19 @@
|
|
1
|
+
$LOAD_PATH.unshift(File.expand_path('./../../', __FILE__))
|
2
|
+
|
3
|
+
require 'rails_templater'
|
4
|
+
require File.join(File.dirname(__FILE__), 'core_ext.rb')
|
5
|
+
|
6
|
+
%w(default orm testing_framework javascript_framework haml sass cucumber).each do |recipe|
|
7
|
+
apply templater.recipe(recipe)
|
8
|
+
end
|
9
|
+
|
10
|
+
say("\nInitial generation complete\n", Thor::Shell::Color::YELLOW)
|
11
|
+
|
12
|
+
say("\nBeginning bundle install\n", Thor::Shell::Color::YELLOW)
|
13
|
+
run 'bundle install'
|
14
|
+
say("\nbundle install complete\n", Thor::Shell::Color::YELLOW)
|
15
|
+
|
16
|
+
execute_post_bundler_strategies
|
17
|
+
|
18
|
+
git :add => "."
|
19
|
+
git :commit => "-m 'Initial commit'"
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# SQLite version 3.x
|
2
|
+
# gem install sqlite3-ruby (not necessary on OS X Leopard)
|
3
|
+
development:
|
4
|
+
adapter: sqlite3
|
5
|
+
database: db/development.sqlite3
|
6
|
+
pool: 5
|
7
|
+
timeout: 5000
|
8
|
+
|
9
|
+
# Warning: The database defined as "test" will be erased and
|
10
|
+
# re-generated from your development database when you run "rake".
|
11
|
+
# Do not set this db to the same as development or production.
|
12
|
+
test:
|
13
|
+
adapter: sqlite3
|
14
|
+
database: db/test.sqlite3
|
15
|
+
pool: 5
|
16
|
+
timeout: 5000
|
17
|
+
|
18
|
+
production:
|
19
|
+
adapter: sqlite3
|
20
|
+
database: db/production.sqlite3
|
21
|
+
pool: 5
|
22
|
+
timeout: 5000
|
File without changes
|
data/lib/{template → template_framework}/templates/haml/app/views/layouts/application.html.haml
RENAMED
File without changes
|
File without changes
|
File without changes
|
data/rails_templater.gemspec
CHANGED
@@ -0,0 +1 @@
|
|
1
|
+
Foo Bar
|
File without changes
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe RailsTemplater::FixtureReplacement do
|
4
|
+
|
5
|
+
context "Fixture Replacement type has not been set" do
|
6
|
+
its(:type) { should == :factory_girl }
|
7
|
+
end
|
8
|
+
|
9
|
+
context "Fxiture Replacement type has been set to FactoryGirl" do
|
10
|
+
|
11
|
+
before(:each) do
|
12
|
+
subject.type = :factory_girl
|
13
|
+
end
|
14
|
+
|
15
|
+
it { should be_factory_girl }
|
16
|
+
|
17
|
+
end
|
18
|
+
|
19
|
+
describe "#type" do
|
20
|
+
|
21
|
+
it "allows setting of only supported Fixture Replacements" do
|
22
|
+
expect {
|
23
|
+
subject.type = :fixture
|
24
|
+
}.to raise_error(RailsTemplater::NotSupportedError)
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe RailsTemplater::JavaScriptFramework do
|
4
|
+
|
5
|
+
context "JavaScript Framework type has not been set" do
|
6
|
+
its(:type) { should == :jquery }
|
7
|
+
end
|
8
|
+
|
9
|
+
context "JavaScript Framework type has been set to jQuery" do
|
10
|
+
|
11
|
+
before(:each) do
|
12
|
+
subject.type = :jquery
|
13
|
+
end
|
14
|
+
|
15
|
+
it { should be_jquery }
|
16
|
+
|
17
|
+
end
|
18
|
+
|
19
|
+
context "JavaScript Framework type has been set to Prototype" do
|
20
|
+
|
21
|
+
before(:each) do
|
22
|
+
subject.type = :prototype
|
23
|
+
end
|
24
|
+
|
25
|
+
it { should be_prototype }
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
it "only sets type to supported JavaScript Frameworks" do
|
30
|
+
expect{
|
31
|
+
subject.type = :random
|
32
|
+
}.to raise_error(RailsTemplater::NotSupportedError)
|
33
|
+
end
|
34
|
+
|
35
|
+
|
36
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe RailsTemplater::Orm do
|
4
|
+
|
5
|
+
it "defaults to Mongoid" do
|
6
|
+
subject.type.should == :mongoid
|
7
|
+
end
|
8
|
+
|
9
|
+
context "ORM type is ActiveRecord" do
|
10
|
+
|
11
|
+
before(:each) do
|
12
|
+
subject.type = :active_record
|
13
|
+
end
|
14
|
+
|
15
|
+
it { should be_active_record }
|
16
|
+
|
17
|
+
end
|
18
|
+
|
19
|
+
context "ORM type is Mongoid" do
|
20
|
+
|
21
|
+
before(:each) do
|
22
|
+
subject.type = :mongoid
|
23
|
+
end
|
24
|
+
|
25
|
+
it { should be_mongoid }
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
it "only sets type to supported ORMs" do
|
30
|
+
expect{
|
31
|
+
subject.type = :mongo_mapper
|
32
|
+
}.to raise_error(RailsTemplater::NotSupportedError)
|
33
|
+
end
|
34
|
+
|
35
|
+
|
36
|
+
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe RailsTemplater::Templater do
|
4
|
+
|
5
|
+
let(:group) { 'sample' }
|
6
|
+
|
7
|
+
its(:fixture_replacement) { should be_kind_of(RailsTemplater::FixtureReplacement) }
|
8
|
+
its(:javascript_framework) { should be_kind_of(RailsTemplater::JavaScriptFramework) }
|
9
|
+
its(:orm) { should be_kind_of(RailsTemplater::Orm) }
|
10
|
+
its(:testing_framework) { should be_kind_of(RailsTemplater::TestingFramework) }
|
11
|
+
|
12
|
+
it "generates a recipe path based on a name" do
|
13
|
+
subject.recipe("mongoid").should == File.expand_path('recipes/mongoid.rb', TEMPLATE_FRAMEWORK_PATH)
|
14
|
+
end
|
15
|
+
|
16
|
+
it "generates a snippet path" do
|
17
|
+
subject.snippet_path("cucumber").should == File.expand_path('snippets/cucumber', TEMPLATE_FRAMEWORK_PATH)
|
18
|
+
end
|
19
|
+
|
20
|
+
it "generates a template path" do
|
21
|
+
subject.template_path("haml").should == File.expand_path('templates/haml', TEMPLATE_FRAMEWORK_PATH)
|
22
|
+
end
|
23
|
+
|
24
|
+
describe "#load_snippet" do
|
25
|
+
|
26
|
+
let(:snippet_name) { 'sample_snippet' }
|
27
|
+
|
28
|
+
before(:each) do
|
29
|
+
subject.stub(:snippet_path) { FIXTURE_PATH }
|
30
|
+
end
|
31
|
+
|
32
|
+
it "loads a snippet" do
|
33
|
+
subject.load_snippet(snippet_name, group).should == load_fixture(snippet_name)
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
|
38
|
+
describe "#load_template" do
|
39
|
+
|
40
|
+
let(:template_name) { 'sample_template.rb' }
|
41
|
+
|
42
|
+
before(:each) do
|
43
|
+
subject.stub(:template_path) { FIXTURE_PATH }
|
44
|
+
end
|
45
|
+
|
46
|
+
it "loads a template" do
|
47
|
+
subject.load_template(template_name, group).should == load_fixture(template_name)
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
51
|
+
|
52
|
+
describe "#post_bundler" do
|
53
|
+
|
54
|
+
it "adds blocks to post_bundler_strategies" do
|
55
|
+
subject.post_bundler do
|
56
|
+
"Hi"
|
57
|
+
end
|
58
|
+
subject.post_bundler_strategies.should have(1).item
|
59
|
+
result = subject.post_bundler_strategies.first.call
|
60
|
+
result.should == 'Hi'
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
64
|
+
|
65
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe RailsTemplater::TestingFramework do
|
4
|
+
|
5
|
+
it "defaults to RSpec" do
|
6
|
+
subject.type.should == :rspec
|
7
|
+
end
|
8
|
+
|
9
|
+
context "Testing Framework type is set to RSpec" do
|
10
|
+
|
11
|
+
before(:each) do
|
12
|
+
subject.type = :rspec
|
13
|
+
end
|
14
|
+
|
15
|
+
it { should be_rspec }
|
16
|
+
|
17
|
+
end
|
18
|
+
|
19
|
+
context "Testing Framework type is set to TestUnit" do
|
20
|
+
|
21
|
+
before(:each) do
|
22
|
+
subject.type = :test_unit
|
23
|
+
end
|
24
|
+
|
25
|
+
it { should be_test_unit }
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
it "only sets type to supported Test Frameworks" do
|
30
|
+
expect{
|
31
|
+
subject.type = :random
|
32
|
+
}.to raise_error(RailsTemplater::NotSupportedError)
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
begin
|
2
|
+
require 'bundler'
|
3
|
+
Bundler.setup(:default, :development)
|
4
|
+
rescue LoadError => e
|
5
|
+
# Fall back on doing an unlocked resolve at runtime.
|
6
|
+
STDERR.puts e.message
|
7
|
+
STDERR.puts "Try running `bundle install`."
|
8
|
+
exit!
|
9
|
+
end
|
10
|
+
|
11
|
+
require 'rails_templater'
|
12
|
+
require 'rspec'
|
13
|
+
|
14
|
+
# # Requires supporting files with custom matchers and macros, etc,
|
15
|
+
# in ./support/ and its subdirectories.
|
16
|
+
Dir[File.join(File.dirname(__FILE__),'/support/**/*.rb')].each {|f| require f}
|
17
|
+
|
18
|
+
RSpec.configure do |config|
|
19
|
+
config.mock_with :rspec
|
20
|
+
end
|