shoestrap 0.4.1 → 1.0.0.pre1

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 (90) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +17 -18
  3. data/.rspec +1 -1
  4. data/.ruby-version +1 -0
  5. data/.travis.yml +4 -11
  6. data/CHANGELOG.md +15 -1
  7. data/CONTRIBUTING +1 -0
  8. data/Gemfile +1 -1
  9. data/Guardfile +7 -0
  10. data/LICENSE +17 -4
  11. data/README.md +32 -14
  12. data/Rakefile +11 -10
  13. data/bin/shoestrap +2 -10
  14. data/features/features_helper.rb +91 -0
  15. data/features/shoestrap/commands/new_command_feature.rb +191 -0
  16. data/features/shoestrap/generators/bdd_generator_feature.rb +43 -0
  17. data/features/shoestrap/generators/bootstrap_generator_feature.rb +11 -0
  18. data/features/shoestrap/generators/coffee_files_generator_feature.rb +32 -0
  19. data/features/shoestrap/generators/foundation_generator_feature.rb +34 -0
  20. data/features/shoestrap/generators/kuhsaft_generator_feature.rb +38 -0
  21. data/features/shoestrap/generators/smacss_files_generator_feature.rb +45 -0
  22. data/lib/generators/shoestrap/bdd_generator.rb +34 -0
  23. data/lib/generators/shoestrap/bootstrap_generator.rb +6 -0
  24. data/lib/generators/shoestrap/coffee_files_generator.rb +19 -0
  25. data/lib/generators/shoestrap/database_generator.rb +9 -0
  26. data/lib/generators/shoestrap/foundation_generator.rb +24 -0
  27. data/lib/generators/shoestrap/gem_install_generator.rb +12 -0
  28. data/lib/generators/shoestrap/kuhsaft_generator.rb +34 -0
  29. data/lib/generators/shoestrap/mailcatcher_generator.rb +14 -0
  30. data/lib/generators/shoestrap/smacss_file_generator.rb +33 -0
  31. data/lib/shoestrap.rb +2 -6
  32. data/lib/shoestrap/application_generator.rb +96 -0
  33. data/lib/shoestrap/cli.rb +35 -0
  34. data/lib/shoestrap/railtie.rb +7 -0
  35. data/lib/shoestrap/shell.rb +9 -0
  36. data/lib/shoestrap/version.rb +3 -0
  37. data/shoestrap.gemspec +28 -21
  38. data/spec/shoestrap/application_generator_spec.rb +170 -0
  39. data/spec/shoestrap/cli_spec.rb +28 -0
  40. data/spec/spec_helper.rb +34 -0
  41. data/templates/application_generator/application.html.haml +51 -0
  42. data/templates/application_generator/application_helper.rb +6 -0
  43. data/templates/application_generator/application_template.rb +72 -0
  44. data/templates/application_generator/favicons/favicon-sc-129x129.png +0 -0
  45. data/templates/application_generator/favicons/favicon-sc-16x16.ico +0 -0
  46. data/templates/application_generator/favicons/favicon-sc-32x32.png +0 -0
  47. data/templates/bdd_generator/active_record_spec_helper.rb +19 -0
  48. data/templates/bdd_generator/dotrspec +2 -0
  49. data/templates/bdd_generator/fast_spec_helper.rb +6 -0
  50. data/templates/bdd_generator/spec_helper.rb +12 -0
  51. data/templates/coffee_generator/application.js.coffee +3 -0
  52. data/templates/foundation_generator/_ie8_grid.css +85 -0
  53. data/templates/foundation_generator/_settings.css.sass +171 -0
  54. data/templates/kuhsaft_generator/kuhsaft.rb +5 -0
  55. data/templates/smacss_generator/application.css.sass +18 -0
  56. metadata +165 -74
  57. data/.rvmrc +0 -34
  58. data/lib/generators/shoestrap/app_generator.rb +0 -35
  59. data/lib/generators/shoestrap/cms_generator.rb +0 -57
  60. data/lib/generators/shoestrap/deployment_generator.rb +0 -62
  61. data/lib/generators/shoestrap/templates/cms/migration.rb +0 -15
  62. data/lib/generators/shoestrap/templates/cms/model.rb +0 -10
  63. data/lib/generators/shoestrap/templates/cms/model.yml.erb +0 -9
  64. data/lib/generators/shoestrap/templates/cms/view.yml.erb +0 -10
  65. data/lib/generators/shoestrap/templates/deployment/airbrake.rb +0 -10
  66. data/lib/generators/shoestrap/templates/deployment/database.yml.erb +0 -30
  67. data/lib/generators/shoestrap/templates/deployment/deployment.rake.erb +0 -23
  68. data/lib/generators/shoestrap/templates/deployment/unicorn.rb +0 -38
  69. data/lib/shoestrap/app_builder.rb +0 -132
  70. data/lib/shoestrap/tasks/middleman.rb +0 -21
  71. data/lib/shoestrap/tasks/radiant.rb +0 -41
  72. data/lib/shoestrap/tasks/rails.rb +0 -81
  73. data/templates/Gemfile.erb +0 -43
  74. data/templates/Guardfile +0 -33
  75. data/templates/README.md.erb +0 -30
  76. data/templates/_main_navigation.html.haml.erb +0 -5
  77. data/templates/application.html.haml +0 -24
  78. data/templates/bootstrap_and_overrides.css.sass +0 -7
  79. data/templates/cms_navigation.rb +0 -9
  80. data/templates/development_mail_interceptor.rb +0 -7
  81. data/templates/haml/scaffold/_form.html.haml +0 -10
  82. data/templates/haml/scaffold/edit.html.haml +0 -8
  83. data/templates/haml/scaffold/index.html.haml +0 -29
  84. data/templates/haml/scaffold/new.html.haml +0 -5
  85. data/templates/haml/scaffold/show.html.haml +0 -11
  86. data/templates/index.html.haml +0 -27
  87. data/templates/kuhsaft.css.sass +0 -2
  88. data/templates/rails/scaffold_controller/controller.rb +0 -89
  89. data/templates/setup_mail.rb +0 -1
  90. data/templates/shoestrap.yml +0 -41
@@ -0,0 +1,35 @@
1
+ require "thor"
2
+
3
+ require_relative 'application_generator'
4
+
5
+ module Shoestrap
6
+ class CLI < Thor
7
+
8
+ method_option :css,
9
+ :type => :string,
10
+ :default => 'bootstrap',
11
+ :banner => 'Specify which CSS Framework is used by the Application Generator'
12
+
13
+ method_option :database,
14
+ :type => :string,
15
+ :default => 'postgresql',
16
+ :banner => 'Specify which database is used when creating new Rails app'
17
+
18
+ method_option :kuhsaft,
19
+ :type => :boolean,
20
+ :default => true,
21
+ :banner => 'Specify wether kuhsaft should be installed'
22
+
23
+ desc 'new <application_name>', 'Generate a new rails app with shoestrap'
24
+
25
+ def new(application_name)
26
+ application_generator.start(application_name, options)
27
+ end
28
+
29
+ private
30
+
31
+ def application_generator
32
+ @application_generator ||= ApplicationGenerator
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,7 @@
1
+ module Shoestrap
2
+ class Railtie < ::Rails::Railtie
3
+ generators do
4
+ require '../generators/shoestrap/bootstrap_generator'
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,9 @@
1
+ module Shoestrap
2
+ module Shell
3
+ extend self
4
+
5
+ def self.exec(command)
6
+ system "#{command}"
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,3 @@
1
+ module Shoestrap
2
+ VERSION = "1.0.0.pre1"
3
+ end
data/shoestrap.gemspec CHANGED
@@ -1,26 +1,33 @@
1
- # -*- encoding: utf-8 -*-
2
- $:.push File.expand_path("../lib", __FILE__)
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'shoestrap/version'
3
5
 
4
- Gem::Specification.new do |s|
5
- s.name = "shoestrap"
6
- s.version = '0.4.1'
7
- s.platform = Gem::Platform::RUBY
8
- s.authors = ["Immanuel Häussermann", "Felipe Kaufmann", "Phil Schilter", "Noëlle Rosenberg"]
9
- s.email = "info@screenconcept.ch"
10
- s.homepage = "http://github.com/screenconcept/shoestrap"
11
- s.summary = %q{A tool that helps you bootstrap your rails projects}
12
- s.description = %q{shoestrap is a rails app bootstrapper}
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "shoestrap"
8
+ spec.version = Shoestrap::VERSION
9
+ spec.authors = ["Felipe Kaufmann"]
10
+ spec.email = ["felipekaufmann@gmail.com"]
11
+ spec.description = %q{SC Bootstrapper and Generators}
12
+ spec.summary = %q{Rails App Bootstrapper and Generator used at Screen Concept}
13
+ spec.homepage = ""
14
+ spec.license = "MIT"
13
15
 
14
- s.rubyforge_project = "shoestrap"
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
15
20
 
16
- s.files = `git ls-files`.split("\n")
17
- s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
- s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
- s.require_paths = ["lib"]
21
+ spec.add_development_dependency "bundler", "~> 1.3"
22
+ spec.add_development_dependency "rake"
23
+ spec.add_development_dependency "pry"
24
+ spec.add_development_dependency "rspec", '2.14.0.rc1'
25
+ spec.add_development_dependency "guard"
26
+ spec.add_development_dependency "guard-rspec"
27
+ spec.add_development_dependency "ruby_gntp"
20
28
 
21
- s.add_development_dependency 'rspec'
22
- s.add_development_dependency 'pry'
23
- s.add_dependency 'rails'
24
- s.add_dependency 'airbrake'
25
- s.add_dependency 'blazing', '0.4.0.beta3'
29
+ spec.add_dependency 'rails', '4.0.0'
30
+ spec.add_dependency 'airbrake'
31
+ spec.add_dependency 'thor'
32
+ spec.add_dependency 'blazing', '0.4.0.beta3'
26
33
  end
@@ -0,0 +1,170 @@
1
+ require_relative '../../lib/shoestrap/application_generator'
2
+ require_relative '../spec_helper'
3
+
4
+ module Shoestrap
5
+ describe ApplicationGenerator do
6
+
7
+ let(:default_options) { { css: 'bootstrap', database: 'postgresql', kuhsaft: true } }
8
+
9
+ describe '#start' do
10
+ it 'says it is going to generate an app' do
11
+ ApplicationGenerator.stub(:shoestrap_generators).and_return(:true)
12
+ output = capture(:stdout, :stderr) do
13
+ ApplicationGenerator.start('test_app', default_options)
14
+ end
15
+ expect(output).to match(/\[shoestrap\] Generating new Rails Application test_app/)
16
+ end
17
+
18
+ it 'calls rails new with the shoestrap template' do
19
+ ApplicationGenerator.stub(:shoestrap_generators).and_return(:true)
20
+ capture(:stdout, :stderr) do
21
+ expect(Shell).to receive(:exec).with("rails new test_app -m #{File.join(
22
+ File.dirname(__FILE__).gsub('spec','lib'),
23
+ '../../templates/application_generator/application_template.rb')} -d postgresql")
24
+ ApplicationGenerator.start('test_app', default_options)
25
+ end
26
+ end
27
+
28
+ it 'runs the shoestrap generators' do
29
+ capture(:stdout, :stderr) do
30
+ expect(ApplicationGenerator).to receive(:shoestrap_generators)
31
+ ApplicationGenerator.start('test_app', default_options)
32
+ end
33
+ end
34
+ end
35
+
36
+ describe '#shoestrap_generators' do
37
+
38
+ before :each do
39
+ ApplicationGenerator.stub(:setup_bdd_environment)
40
+ ApplicationGenerator.stub(:setup_database)
41
+ ApplicationGenerator.stub(:setup_css_framework)
42
+ ApplicationGenerator.stub(:setup_smacss_files)
43
+ ApplicationGenerator.stub(:setup_coffee_files)
44
+ ApplicationGenerator.stub(:setup_kuhsaft)
45
+ ApplicationGenerator.stub(:install_gems)
46
+ ApplicationGenerator.stub(:apply_special_sauce)
47
+ ApplicationGenerator.stub(:setup_mailcatcher)
48
+ Dir.stub(:chdir).and_yield
49
+ end
50
+
51
+ it 'installs requried gems' do
52
+ expect(ApplicationGenerator).to receive(:install_gems)
53
+ ApplicationGenerator.shoestrap_generators('test_app', default_options)
54
+ end
55
+
56
+ it 'sets up the css framework' do
57
+ expect(ApplicationGenerator).to receive(:setup_css_framework)
58
+ ApplicationGenerator.shoestrap_generators('test_app', default_options)
59
+ end
60
+
61
+ it 'sets up the smacss files' do
62
+ expect(ApplicationGenerator).to receive(:setup_smacss_files)
63
+ ApplicationGenerator.shoestrap_generators('test_app', default_options)
64
+ end
65
+
66
+ it 'sets up the coffee files' do
67
+ expect(ApplicationGenerator).to receive(:setup_coffee_files)
68
+ ApplicationGenerator.shoestrap_generators('test_app', default_options)
69
+ end
70
+
71
+ it 'sets up the bdd environment' do
72
+ expect(ApplicationGenerator).to receive(:setup_bdd_environment)
73
+ ApplicationGenerator.shoestrap_generators('test_app', default_options)
74
+ end
75
+
76
+ it 'sets up kuhsaft' do
77
+ expect(ApplicationGenerator).to receive(:setup_kuhsaft)
78
+ ApplicationGenerator.shoestrap_generators('test_app', default_options)
79
+ end
80
+
81
+ it 'applies special sauce when the correct environment variable is set' do
82
+ original_value = ENV['GIVE_ME_SPECIAL_SAUCE']
83
+ ENV['GIVE_ME_SPECIAL_SAUCE'] = "true"
84
+ expect(ApplicationGenerator).to receive(:apply_special_sauce)
85
+ ApplicationGenerator.shoestrap_generators('test_app', default_options)
86
+ ENV['GIVE_ME_SPECIAL_SAUCE'] = original_value
87
+ end
88
+
89
+ it 'does not apply special sauce normally' do
90
+ original_value = ENV['GIVE_ME_SPECIAL_SAUCE']
91
+ ENV['GIVE_ME_SPECIAL_SAUCE'] = nil
92
+ expect(ApplicationGenerator).not_to receive(:apply_special_sauce)
93
+ ApplicationGenerator.shoestrap_generators('test_app', default_options)
94
+ ENV['GIVE_ME_SPECIAL_SAUCE'] = original_value
95
+ end
96
+ end
97
+
98
+ describe '#install_gems' do
99
+ it 'delegates to the Gem Install Generator' do
100
+ Shell.stub(:exec)
101
+ expect(GemInstallGenerator).to receive(:start)
102
+ ApplicationGenerator.install_gems([])
103
+ end
104
+
105
+ it 'delegates to the Gem Install Generator' do
106
+ GemInstallGenerator.stub(:start)
107
+ expect(Shell).to receive(:exec).with('bundle')
108
+ ApplicationGenerator.install_gems([])
109
+ end
110
+ end
111
+
112
+ describe '#setup_css_framework' do
113
+ it 'runs the generator it was called with' do
114
+ DummyGenerator = double
115
+ expect(DummyGenerator).to receive('start')
116
+ ApplicationGenerator.setup_css_framework('dummy')
117
+ end
118
+ end
119
+
120
+ describe '#setup_smacss_files' do
121
+ it 'runs the smacss files generator' do
122
+ expect(SmacssFilesGenerator).to receive('start')
123
+ ApplicationGenerator.setup_smacss_files
124
+ end
125
+ end
126
+
127
+ describe '#setup_coffee_files' do
128
+ it 'runs the coffee files generator' do
129
+ expect(CoffeeFilesGenerator).to receive('start')
130
+ ApplicationGenerator.setup_coffee_files
131
+ end
132
+ end
133
+
134
+ describe '#setup_bdd_environment' do
135
+ it 'runs the rspec generator' do
136
+ expect(BddGenerator).to receive('start')
137
+ ApplicationGenerator.setup_bdd_environment
138
+ end
139
+ end
140
+
141
+ describe '#setup_kuhsaft' do
142
+ it 'delegates to the Gem Install Generator' do
143
+ expect(KuhsaftGenerator).to receive(:start)
144
+ ApplicationGenerator.setup_kuhsaft
145
+ end
146
+ end
147
+
148
+ describe '#apply_special_sauce' do
149
+ it 'calls sauce apply on current directory' do
150
+ expect(Shell).to receive(:exec).with('sauce apply . --appname=foo')
151
+ ApplicationGenerator.apply_special_sauce('foo')
152
+ end
153
+ end
154
+
155
+ describe '#required_gems' do
156
+ it 'includes kuhsaft by default' do
157
+ pending "waiting for kuhsaft pre-release"
158
+ #expect(ApplicationGenerator.required_gems(default_options)).to include('kuhsaft')
159
+ end
160
+
161
+ it 'includes bootstrap-sass by default' do
162
+ expect(ApplicationGenerator.required_gems(default_options)).to include('bootstrap-sass')
163
+ end
164
+
165
+ it 'includes zurb-foundation when css option is set to foundation' do
166
+ expect(ApplicationGenerator.required_gems(default_options.merge( css: 'foundation' ))).to include('zurb-foundation')
167
+ end
168
+ end
169
+ end
170
+ end
@@ -0,0 +1,28 @@
1
+ require_relative '../../lib/shoestrap/cli'
2
+ require_relative '../spec_helper'
3
+
4
+ module Shoestrap
5
+ describe CLI do
6
+
7
+ subject { CLI }
8
+
9
+ describe '#new' do
10
+ it 'delegates to ApplicationGenerator' do
11
+ expect(ApplicationGenerator).to receive(:start)
12
+ subject.start(['new', 'foo'])
13
+ end
14
+
15
+ it 'does not delegate to ApplicationGenerator when no application name is provided' do
16
+ capture(:stdout, :stderr) do
17
+ expect(ApplicationGenerator).not_to receive(:start)
18
+ subject.start(['new'])
19
+ end
20
+ end
21
+
22
+ it 'passes bootstrap & postgresql & kuhsaft as default to the ApplicationGenerator' do
23
+ expect(ApplicationGenerator).to receive(:start).with('test_app', { 'css' => 'bootstrap', 'database' => 'postgresql', 'kuhsaft' => true })
24
+ subject.start(['new', 'test_app'])
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,34 @@
1
+ require 'rspec'
2
+
3
+ #
4
+ # Override Shoestrap::Shell.exec so no acutal shelling out
5
+ # happens when running tests.
6
+ #
7
+ # You can set expectations for system calls like so:
8
+ # Shell.expects(:exec).with('rails new test_app')
9
+ #
10
+ module Shoestrap
11
+ module Shell
12
+ extend self
13
+
14
+ def self.exec(command)
15
+ puts "#{command}"
16
+ end
17
+ end
18
+ end
19
+
20
+ #
21
+ # Use capture to silece and capture stderr/stdout
22
+ # Useful to hide logged messages etc. in test run
23
+ #
24
+ def capture(*streams)
25
+ streams.map! { |stream| stream.to_s }
26
+ begin
27
+ result = StringIO.new
28
+ streams.each { |stream| eval "$#{stream} = result" }
29
+ yield
30
+ ensure
31
+ streams.each { |stream| eval("$#{stream} = #{stream.upcase}") }
32
+ end
33
+ result.string
34
+ end
@@ -0,0 +1,51 @@
1
+ !!! 5
2
+ /[if lt IE 7] <html class='no-js lt-ie9 lt-ie8 lt-ie7'>
3
+ /[if IE 7] <html class='no-js lt-ie9 lt-ie8'>
4
+ /[if IE 8] <html class='no-js lt-ie9'>
5
+ /[if gt IE 8]><!
6
+ %html.no-js{ lang: I18n.locale }
7
+ / <![endif]
8
+ %head
9
+ %title= content_for?(:title) ? yield(:title) : 'Untitled'
10
+
11
+ %meta{ charset: 'utf-8' }
12
+ %meta{ 'http-equiv' => 'X-UA-Compatible', content: 'IE=edge,chrome=1' }
13
+ %meta{ name: 'keywords', content: '' }
14
+ %meta{ name: 'description', content: '' }
15
+ %meta{ name: 'viewport', content: 'width=device-width, initial-scale=1.0' }
16
+
17
+ -# Favicons
18
+ = favicon_link_tag('favicons/favicon-sc-129x129.png', rel: 'apple-touch-icon', type: 'image/png')
19
+ = favicon_link_tag('favicons/favicon-sc-32x32.png', rel: 'icon', type: 'image/png')
20
+ <!--[if IE]>
21
+ = favicon_link_tag('favicons/favicon-sc-16x16.ico')
22
+ <![endif]-->
23
+
24
+ -# Typekit
25
+ = javascript_include_tag '//use.typekit.net/XXXX.js', :media => 'all'
26
+ :javascript
27
+ try{Typekit.load();}catch(e){}
28
+
29
+ = stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true
30
+ = javascript_include_tag 'modernizr', 'data-turbolinks-track' => true
31
+ = csrf_meta_tags
32
+
33
+ %body{ class: body_class }
34
+ = render_navigation
35
+
36
+ = yield
37
+
38
+ -# Application JavaScripts
39
+ = javascript_include_tag 'application', 'data-turbolinks-track' => true
40
+
41
+ -# Selectivizr
42
+ <!--[if lte IE 8]>
43
+ = javascript_include_tag 'selectivizr'
44
+ <![endif]-->
45
+
46
+ -# Google Analytics
47
+ :javascript
48
+ var _gaq=[['_setAccount','UA-XXXXX-X'],['_trackPageview'],['_trackPageLoadTime']];
49
+ (function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];g.async=1;
50
+ g.src=('https:'==location.protocol?'//ssl':'//www')+'.google-analytics.com/ga.js';
51
+ s.parentNode.insertBefore(g,s)}(document,'script'));
@@ -0,0 +1,6 @@
1
+ module ApplicationHelper
2
+
3
+ def body_class
4
+ "controller-#{controller_name} action-#{action_name}"
5
+ end
6
+ end
@@ -0,0 +1,72 @@
1
+ #
2
+ # SC Rails Application Template
3
+ #
4
+ def source_paths
5
+ [File.expand_path(File.dirname(__FILE__))]
6
+ end
7
+
8
+ #
9
+ # Locale and Timezone
10
+ #
11
+ application "config.time_zone = 'Bern'"
12
+ application "config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}').to_s]"
13
+ application "config.i18n.available_locales = [:de]"
14
+ application "config.i18n.default_locale = :de"
15
+
16
+ inject_into_file 'config/application.rb', :after => "Application < Rails::Application" do
17
+ <<-eos
18
+ # Customize generators
19
+ config.generators do |g|
20
+ g.stylesheets false
21
+ g.form_builder :simple_form
22
+ g.template_engine :haml
23
+ g.test_framework :rspec
24
+ g.javascripts false
25
+ g.assets false
26
+ g.helper false
27
+ end
28
+ eos
29
+ end
30
+
31
+ #
32
+ # Default Gems (others are added to gemfile by individual generators called after app generation)
33
+ #
34
+ gem 'simple_form', '3.0.0.rc'
35
+ gem 'haml'
36
+ gem 'haml-rails'
37
+ gem 'simple-navigation'
38
+ gem 'mail'
39
+ gem 'fabrication'
40
+ gem 'shoestrap'
41
+ gem 'kuhsaft'
42
+ gem 'selectivizr-rails'
43
+ gem 'modernizr-rails'
44
+ gem 'bourbon'
45
+
46
+ gem_group :development, :test do
47
+ gem 'pry'
48
+ gem 'ruby_gntp'
49
+ gem 'rspec-rails'
50
+ gem 'guard-rspec'
51
+ gem 'guard-spring'
52
+ end
53
+
54
+ gem_group :test do
55
+ gem 'database_cleaner'
56
+ end
57
+
58
+ #
59
+ # Application layout
60
+ #
61
+ remove_file "app/views/layouts/application.html.erb"
62
+ copy_file "application.html.haml", "app/views/layouts/application.html.haml"
63
+
64
+ #
65
+ # Application helper
66
+ #
67
+ copy_file "application_helper.rb", "app/helpers/application_helper.rb", force: true
68
+
69
+ #
70
+ # Favicons
71
+ #
72
+ directory "favicons", "app/assets/images/favicons/"