rails-embryo 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/History.md CHANGED
@@ -1,3 +1,9 @@
1
+ ### Version 0.2.0
2
+ 2014-08-04
3
+
4
+ * Add model generator
5
+ * Minor fixes for basic app configuration
6
+
1
7
  ### Version 0.1.1
2
8
  2014-6-10
3
9
 
data/README.md CHANGED
@@ -2,7 +2,6 @@
2
2
  [![Gem Version](https://badge.fury.io/rb/rails-embryo.png)](http://badge.fury.io/rb/rails-embryo)
3
3
  [![Build Status](https://travis-ci.org/brianauton/rails-embryo.png?branch=master)](https://travis-ci.org/brianauton/rails-embryo)
4
4
  [![Code Climate](https://codeclimate.com/github/brianauton/rails-embryo.png)](https://codeclimate.com/github/brianauton/rails-embryo)
5
- [![Dependency Status](https://gemnasium.com/brianauton/rails-embryo.png)](https://gemnasium.com/brianauton/rails-embryo)
6
5
 
7
6
  Rails-embryo is a Ruby gem that helps get a new Rails application up and
8
7
  running quickly. In just one step, it adds many of the the tweaks and
@@ -16,12 +15,14 @@ configurable in the future.
16
15
  ### Requirements
17
16
 
18
17
  * Ruby 1.9.3 or newer
19
- * Rails 4.1.1 or newer
18
+ * Rails 4.1.4 or newer
20
19
 
21
- ### Getting Started
20
+ ### Generating a New Application
22
21
 
23
- Make sure the gem is installed in your current environment (this will
24
- also install Rails 4.1.1 if it's not already present).
22
+ To generate a new Rails application with all Rails Embryo features
23
+ added, first make sure the gem is installed in your current
24
+ environment (this will also install Rails 4.1.4 if it's not already
25
+ present).
25
26
 
26
27
  gem install rails-embryo
27
28
 
@@ -54,16 +55,33 @@ Bootstrap-enhanced landing page.
54
55
 
55
56
  rails server
56
57
 
57
- ### Running the Generators Directly
58
+ ### Generators Available in the Application
58
59
 
59
- You can also install the rails-embryo enhancements by adding the gem
60
+ You can also install the Rails Embryo enhancements by adding the gem
60
61
  to an existing Rails application and running the "embryo" generator:
61
62
 
62
63
  rails generate embryo
63
64
 
65
+ Once Rails Embryo has has been initialized in an application, more
66
+ generators are available to add features to the app.
67
+
68
+ #### Models
69
+
70
+ To generate a new model, run the `embryo:model` generator with the
71
+ same arguments you would pass to Rails' basic `model` generator.
72
+
73
+ rails generate embryo:model user name email age:integer
74
+
75
+ A class, migration, spec and factory will all be generated for the
76
+ model. All options available for the [basic model
77
+ generator](http://railsguides.net/advanced-rails-model-generators/)
78
+ are accepted.
79
+
64
80
  ### Enhancements Added
65
81
 
66
- All of the following enhancements are added by rails-embryo.
82
+ All of the following enhancements are added to new applications by
83
+ rails-embryo, and are used whenever possible by the other "embryo"
84
+ generators.
67
85
 
68
86
  #### Views and Templating
69
87
 
@@ -91,8 +109,15 @@ For acceptance testing,
91
109
  [Capybara](https://github.com/jnicklas/capybara) is installed, along
92
110
  with a simple end-to-end spec that uses it to test the `Welcome#index`
93
111
  action. [Poltergeist](https://github.com/teampoltergeist/poltergeist)
94
- is configured and ready for JavaScript-enabled testing; just add `js:
95
- true` to any RSpec `scenario` blocks that require JavaScript.
112
+ is configured and ready for JavaScript-enabled testing; just add a `:js`
113
+ metadata tag to any RSpec `feature` or `scenario` blocks that require
114
+ JavaScript:
115
+
116
+ ```ruby
117
+ feature "Customer searches for widgets" do
118
+ scenario "using the auto-suggest search box", :js do
119
+ # ...
120
+ ```
96
121
 
97
122
  #### Other Enhancements
98
123
 
@@ -0,0 +1,34 @@
1
+ require "rails/generators"
2
+ require "generators/embryo/ruby_version"
3
+ require "generators/embryo/default_view"
4
+ require "generators/embryo/template_support"
5
+ require "generators/embryo/rspec"
6
+ require "generators/embryo/factory_girl"
7
+ require "generators/embryo/capybara"
8
+ require "generators/embryo/poltergeist"
9
+
10
+ class EmbryoGenerator < Rails::Generators::Base
11
+ def install(force: false, bundle: false)
12
+ add_embryo_gem
13
+ invoke "embryo:ruby_version"
14
+ invoke "embryo:rspec"
15
+ invoke "embryo:factory_girl"
16
+ invoke "embryo:capybara"
17
+ invoke "embryo:poltergeist"
18
+ invoke "embryo:template_support"
19
+ invoke "embryo:default_view"
20
+ clean_files
21
+ end
22
+
23
+ private
24
+
25
+ def clean_files
26
+ gsub_file "Gemfile", /^#.*$/, "", verbose: false
27
+ gsub_file "Gemfile", /\n\n+/, "\n", verbose: false
28
+ append_to_file "Gemfile", "\n\n"
29
+ end
30
+
31
+ def add_embryo_gem
32
+ gem "rails-embryo", "~> #{Rails::Embryo::VERSION}", group: :development
33
+ end
34
+ end
@@ -0,0 +1,24 @@
1
+ require "rails-embryo"
2
+
3
+ module Embryo
4
+ class CapybaraGenerator < Rails::Generators::Base
5
+ include GeneratorHelpers::Hidden
6
+
7
+ def install
8
+ gem "capybara", "~> 2.0", group: :test
9
+ gem "launchy", "~> 2.0", group: :test
10
+ create_file "spec/support/capybara.rb", capybara_helper_data
11
+ end
12
+
13
+ private
14
+
15
+ def capybara_helper_data
16
+ 'require "capybara/rails"
17
+ require "capybara/rspec"
18
+ RSpec.configure do |config|
19
+ config.include Capybara::DSL, type: :feature
20
+ end
21
+ '
22
+ end
23
+ end
24
+ end
@@ -1,14 +1,15 @@
1
+ require "rails-embryo"
2
+ require "rails/generators"
3
+
1
4
  module Embryo
2
- class DefaultView
3
- def initialize(filesystem)
4
- @filesystem = filesystem
5
- end
5
+ class DefaultViewGenerator < Rails::Generators::Base
6
+ include GeneratorHelpers::Hidden
6
7
 
7
8
  def install
8
- @filesystem.write "config/routes.rb", routes_data
9
- @filesystem.write "app/controllers/dashboard_controller.rb", controller_data
10
- @filesystem.write "spec/controllers/dashboard_controller_spec.rb", controller_spec_data
11
- @filesystem.write "spec/features/dashboard_spec.rb", feature_spec_data
9
+ create_file "config/routes.rb", routes_data
10
+ create_file "app/controllers/dashboard_controller.rb", controller_data
11
+ create_file "spec/controllers/dashboard_controller_spec.rb", controller_spec_data
12
+ create_file "spec/features/dashboard_spec.rb", feature_spec_data
12
13
  end
13
14
 
14
15
  private
@@ -0,0 +1,21 @@
1
+ require "rails-embryo"
2
+
3
+ module Embryo
4
+ class FactoryGirlGenerator < Rails::Generators::Base
5
+ include GeneratorHelpers::Hidden
6
+
7
+ def install
8
+ gem "factory_girl_rails", "~> 4.0", group: :test
9
+ create_file "spec/support/factory_girl.rb", factory_girl_helper_data
10
+ end
11
+
12
+ private
13
+
14
+ def factory_girl_helper_data
15
+ 'RSpec.configure do |config|
16
+ config.include FactoryGirl::Syntax::Methods
17
+ end
18
+ '
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,37 @@
1
+ require "rails/generators"
2
+
3
+ module Embryo
4
+ class ModelGenerator < Rails::Generators::NamedBase
5
+ def install
6
+ generate "rails:model", "#{ARGV.join ' '} --no-test-framework"
7
+ create_file "spec/factories/#{file_path}.rb", factory_data
8
+ create_file "spec/models/#{file_path}_spec.rb", spec_data
9
+ end
10
+
11
+ private
12
+
13
+ def factory_data
14
+ class_option = class_path.any? ? ", class: #{class_name}" : ""
15
+ 'FactoryGirl.define do
16
+ factory :' + factory_name + class_option + ' do
17
+ end
18
+ end
19
+ '
20
+ end
21
+
22
+ def spec_data
23
+ 'require "rails_helper"
24
+
25
+ describe ' + class_name + ' do
26
+ it "initializes successfully" do
27
+ expect(build :' + factory_name + ').to be_valid
28
+ end
29
+ end
30
+ '
31
+ end
32
+
33
+ def factory_name
34
+ file_path.gsub "/", "_"
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,20 @@
1
+ require "rails-embryo"
2
+
3
+ module Embryo
4
+ class PoltergeistGenerator < Rails::Generators::Base
5
+ include GeneratorHelpers::Hidden
6
+
7
+ def install
8
+ gem "poltergeist", "~> 1.0", group: :test
9
+ create_file "spec/support/poltergeist.rb", poltergeist_helper_data
10
+ end
11
+
12
+ private
13
+
14
+ def poltergeist_helper_data
15
+ 'require "capybara/poltergeist"
16
+ Capybara.javascript_driver = :poltergeist
17
+ '
18
+ end
19
+ end
20
+ end
@@ -1,15 +1,18 @@
1
+ require "rails-embryo"
2
+
1
3
  module Embryo
2
- class Rspec
3
- def initialize(filesystem)
4
- @filesystem = filesystem
5
- end
4
+ class RspecGenerator < Rails::Generators::Base
5
+ include GeneratorHelpers::Hidden
6
6
 
7
7
  def install
8
- @filesystem.require_gem "rspec-rails", "~> 3.0", group: :test
9
- @filesystem.write "spec/spec_helper.rb", spec_helper_data
10
- @filesystem.write "spec/rails_helper.rb", rails_helper_data
8
+ gem "rspec-rails", "~> 3.0", group: :test
9
+ create_file "spec/spec_helper.rb", spec_helper_data
10
+ create_file "spec/rails_helper.rb", rails_helper_data
11
+ remove_dir "test"
11
12
  end
12
13
 
14
+ private
15
+
13
16
  def spec_helper_data
14
17
  'RSpec.configure do |config|
15
18
  config.color = true
@@ -0,0 +1,12 @@
1
+ require "rails-embryo"
2
+
3
+ module Embryo
4
+ class RubyVersionGenerator < Rails::Generators::Base
5
+ include GeneratorHelpers::Hidden
6
+
7
+ def install
8
+ create_file ".ruby-version", "2.1.2\n"
9
+ create_file ".ruby-gemset", "#{File.basename Dir.getwd}\n"
10
+ end
11
+ end
12
+ end
@@ -1,21 +1,23 @@
1
+ require "rails-embryo"
2
+
1
3
  module Embryo
2
- class TemplateSupport
3
- def initialize(filesystem)
4
- @filesystem = filesystem
5
- end
4
+ class TemplateSupportGenerator < Rails::Generators::Base
5
+ include GeneratorHelpers::Hidden
6
6
 
7
7
  def install
8
- @filesystem.require_gem "haml", "~> 4.0"
9
- @filesystem.require_gem "haml-rails", ">= 0"
10
- @filesystem.require_gem "bootstrap-sass", "~> 3.0"
11
- @filesystem.write "app/views/layouts/application.html.haml", layout_data
12
- @filesystem.write "app/views/layouts/_navigation.html.haml", navigation_data
13
- @filesystem.write "app/views/layouts/_messages.html.haml", messages_data
14
- @filesystem.write "app/assets/javascripts/application.js", javascript_data
15
- @filesystem.write "app/assets/stylesheets/bootstrap-custom.css.scss", stylesheet_data
16
- @filesystem.delete "app/views/layouts/application.html.erb"
8
+ gem "haml", "~> 4.0"
9
+ gem "haml-rails", ">= 0"
10
+ gem "bootstrap-sass", "~> 3.0"
11
+ create_file "app/views/layouts/application.html.haml", layout_data
12
+ create_file "app/views/layouts/_navigation.html.haml", navigation_data
13
+ create_file "app/views/layouts/_messages.html.haml", messages_data
14
+ create_file "app/assets/javascripts/application.js", javascript_data
15
+ create_file "app/assets/stylesheets/bootstrap-custom.css.scss", stylesheet_data
16
+ remove_file "app/views/layouts/application.html.erb"
17
17
  end
18
18
 
19
+ private
20
+
19
21
  def layout_data
20
22
  '!!! 5
21
23
  %html(lang="en")
@@ -23,7 +25,7 @@ module Embryo
23
25
  %meta(charset="utf-8")
24
26
  %meta(http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1")
25
27
  %meta(name="viewport" content="width=device-width, initial-scale=1.0")
26
- %title ' + @filesystem.application_human_name + '
28
+ %title ' + application_human_name + '
27
29
  = stylesheet_link_tag "application", media: "all", "data-turbolinks-track" => true
28
30
  = javascript_include_tag "application", "data_turbolinks_track" => true
29
31
  = csrf_meta_tags
@@ -44,7 +46,7 @@ module Embryo
44
46
  %span.icon-bar
45
47
  %span.icon-bar
46
48
  %span.icon-bar
47
- = link_to "' + @filesystem.application_human_name + '", root_path, class: "navbar-brand"
49
+ = link_to "' + application_human_name + '", root_path, class: "navbar-brand"
48
50
  .navbar-collapse.collapse
49
51
  %ul.nav.navbar-nav
50
52
  %li= link_to "Home", root_path
@@ -75,5 +77,9 @@ module Embryo
75
77
  body { padding-top: 70px; }
76
78
  '
77
79
  end
80
+
81
+ def application_human_name
82
+ File.basename(Dir.getwd).titleize
83
+ end
78
84
  end
79
85
  end
@@ -1,50 +1,11 @@
1
- require "rails/generators"
2
- require "rails/generators/app_base"
3
1
  require "rails-embryo/version"
4
- require "embryo/filesystem"
5
- require "embryo/ruby_version"
6
- require "embryo/test_support"
7
- require "embryo/template_support"
8
- require "embryo/default_view"
9
-
10
- class EmbryoGenerator < Rails::Generators::Base
11
- def install(force: false, bundle: false)
12
- @force = force || options.force?
13
- clean_files
14
- add_embryo_gem
15
- Embryo::RubyVersion.new(filesystem).install
16
- Embryo::TestSupport.new(filesystem).install
17
- Embryo::TemplateSupport.new(filesystem).install
18
- Embryo::DefaultView.new(filesystem).install
19
- filesystem.commit_changes
20
- update_bundle if bundle
21
- end
22
-
23
- private
24
-
25
- def clean_files
26
- gemfile.remove_noise
27
- end
28
-
29
- def add_embryo_gem
30
- filesystem.require_gem "rails-embryo", "~> #{Rails::Embryo::VERSION}"
31
- end
32
-
33
- def filesystem
34
- @filesystem ||= Embryo::Filesystem.new self, force: @force
35
- end
36
-
37
- def gemfile
38
- filesystem.gemfile
39
- end
40
-
41
- def update_bundle
42
- command = "bundle install"
43
- if `which bundle`.strip.present?
44
- say_status :run, command
45
- `#{command}`
46
- else
47
- say_status :skip, command, :yellow
48
- end
2
+ require "rails-embryo/generator_helpers/hidden"
3
+ require "generators/embryo"
4
+ require "generators/embryo/model"
5
+ require "rails/railtie"
6
+
7
+ class EmbryoHiddenGeneratorsRailtie < Rails::Railtie
8
+ config.app_generators do |generators|
9
+ generators.hidden_namespaces.concat Embryo::GeneratorHelpers::Hidden.namespaces
49
10
  end
50
11
  end
@@ -0,0 +1,13 @@
1
+ module Embryo
2
+ module GeneratorHelpers
3
+ module Hidden
4
+ def self.namespaces
5
+ @namespaces ||= []
6
+ end
7
+
8
+ def self.included(generator)
9
+ namespaces << generator.namespace
10
+ end
11
+ end
12
+ end
13
+ end
@@ -1,5 +1,5 @@
1
1
  module Rails
2
2
  module Embryo
3
- VERSION = "0.1.1"
3
+ VERSION = "0.2.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,32 +1,36 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails-embryo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - Brian Auton
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2014-06-10 00:00:00.000000000 Z
12
+ date: 2014-08-04 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: rails
15
16
  requirement: !ruby/object:Gem::Requirement
17
+ none: false
16
18
  requirements:
17
- - - ">="
19
+ - - "~>"
18
20
  - !ruby/object:Gem::Version
19
- version: 4.1.1
21
+ version: 4.1.4
20
22
  type: :runtime
21
23
  prerelease: false
22
24
  version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
23
26
  requirements:
24
- - - ">="
27
+ - - "~>"
25
28
  - !ruby/object:Gem::Version
26
- version: 4.1.1
29
+ version: 4.1.4
27
30
  - !ruby/object:Gem::Dependency
28
31
  name: rspec
29
32
  requirement: !ruby/object:Gem::Requirement
33
+ none: false
30
34
  requirements:
31
35
  - - "~>"
32
36
  - !ruby/object:Gem::Version
@@ -34,6 +38,7 @@ dependencies:
34
38
  type: :development
35
39
  prerelease: false
36
40
  version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
37
42
  requirements:
38
43
  - - "~>"
39
44
  - !ruby/object:Gem::Version
@@ -41,6 +46,7 @@ dependencies:
41
46
  - !ruby/object:Gem::Dependency
42
47
  name: rake
43
48
  requirement: !ruby/object:Gem::Requirement
49
+ none: false
44
50
  requirements:
45
51
  - - "~>"
46
52
  - !ruby/object:Gem::Version
@@ -48,6 +54,7 @@ dependencies:
48
54
  type: :development
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
51
58
  requirements:
52
59
  - - "~>"
53
60
  - !ruby/object:Gem::Version
@@ -60,44 +67,45 @@ executables:
60
67
  extensions: []
61
68
  extra_rdoc_files: []
62
69
  files:
70
+ - lib/rails-embryo/generator_helpers/hidden.rb
71
+ - lib/rails-embryo/version.rb
72
+ - lib/rails-embryo.rb
73
+ - lib/generators/embryo/factory_girl.rb
74
+ - lib/generators/embryo/capybara.rb
75
+ - lib/generators/embryo/default_view.rb
76
+ - lib/generators/embryo/model.rb
77
+ - lib/generators/embryo/template_support.rb
78
+ - lib/generators/embryo/poltergeist.rb
79
+ - lib/generators/embryo/rspec.rb
80
+ - lib/generators/embryo/ruby_version.rb
81
+ - lib/generators/embryo.rb
82
+ - README.md
63
83
  - History.md
64
84
  - License.txt
65
- - README.md
66
85
  - bin/rails-embryo
67
- - lib/embryo/capybara.rb
68
- - lib/embryo/default_view.rb
69
- - lib/embryo/factory_girl.rb
70
- - lib/embryo/filesystem.rb
71
- - lib/embryo/gemfile.rb
72
- - lib/embryo/poltergeist.rb
73
- - lib/embryo/rspec.rb
74
- - lib/embryo/ruby_version.rb
75
- - lib/embryo/template_support.rb
76
- - lib/embryo/test_support.rb
77
- - lib/rails-embryo.rb
78
- - lib/rails-embryo/version.rb
79
86
  homepage: http://github.com/brianauton/rails-embryo
80
87
  licenses:
81
88
  - MIT
82
- metadata: {}
83
89
  post_install_message:
84
90
  rdoc_options: []
85
91
  require_paths:
86
92
  - lib
87
93
  required_ruby_version: !ruby/object:Gem::Requirement
94
+ none: false
88
95
  requirements:
89
96
  - - ">="
90
97
  - !ruby/object:Gem::Version
91
98
  version: '0'
92
99
  required_rubygems_version: !ruby/object:Gem::Requirement
100
+ none: false
93
101
  requirements:
94
102
  - - ">="
95
103
  - !ruby/object:Gem::Version
96
104
  version: 1.3.6
97
105
  requirements: []
98
106
  rubyforge_project:
99
- rubygems_version: 2.2.2
107
+ rubygems_version: 1.8.29
100
108
  signing_key:
101
- specification_version: 4
109
+ specification_version: 3
102
110
  summary: Generators for quick setup of advanced Rails practices
103
111
  test_files: []
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: e320f4f9a4efed26ee96d1734d44a7487075b7ca
4
- data.tar.gz: 1d459d50c459dbfa6b33d15b0fae53bd23e4fd8b
5
- SHA512:
6
- metadata.gz: c17ec6e686cbd30e3c0005d7ffd5b426cfe44e17d30abe6cf8afb0b84bb0296e2ac644cc371668dee1b83ec4f6dab74daaf5b92ab237511935875b3e53d169a1
7
- data.tar.gz: 23ef35d270cf9d87197c9333fb224b7fd6b9a17fa84e3151a1ef7f803d68c27330ea6233556970adf8ad07a9567b8741d444f9efb47f7f540128ee87bb4bb964
@@ -1,22 +0,0 @@
1
- module Embryo
2
- class Capybara
3
- def initialize(filesystem)
4
- @filesystem = filesystem
5
- end
6
-
7
- def install
8
- @filesystem.require_gem "capybara", "~> 2.0", group: :test
9
- @filesystem.require_gem "launchy", "~> 2.0", group: :test
10
- @filesystem.write "spec/support/capybara.rb", capybara_helper_data
11
- end
12
-
13
- def capybara_helper_data
14
- 'require "capybara/rails"
15
- require "capybara/rspec"
16
- RSpec.configure do |config|
17
- config.include Capybara::DSL, type: :feature
18
- end
19
- '
20
- end
21
- end
22
- end
@@ -1,19 +0,0 @@
1
- module Embryo
2
- class FactoryGirl
3
- def initialize(filesystem)
4
- @filesystem = filesystem
5
- end
6
-
7
- def install
8
- @filesystem.require_gem "factory_girl_rails", "~> 4.0", group: :test
9
- @filesystem.write "spec/support/factory_girl.rb", factory_girl_helper_data
10
- end
11
-
12
- def factory_girl_helper_data
13
- 'RSpec.configure do |config|
14
- config.include FactoryGirl::Syntax::Methods
15
- end
16
- '
17
- end
18
- end
19
- end
@@ -1,53 +0,0 @@
1
- require "embryo/gemfile"
2
- require "tmpdir"
3
- require "active_support/inflector"
4
-
5
- module Embryo
6
- class Filesystem
7
- def initialize(generator, *write_options)
8
- @generator = generator
9
- @write_options = write_options
10
- @write_cache = {}
11
- @gemfile = nil
12
- end
13
-
14
- def commit_changes
15
- @gemfile.write(*@write_options) if @gemfile
16
- sorted_cache.each do |path, data|
17
- if data
18
- @generator.create_file path, data, *@write_options
19
- else
20
- @generator.remove_file path, *@write_options if File.exist? path
21
- end
22
- end
23
- end
24
-
25
- def sorted_cache
26
- @write_cache.sort.to_h
27
- end
28
-
29
- def require_gem(*args)
30
- gemfile.require_gem(*args)
31
- end
32
-
33
- def gemfile
34
- @gemfile ||= Gemfile.current generator: @generator
35
- end
36
-
37
- def write(path, data)
38
- @write_cache[path] = data
39
- end
40
-
41
- def delete(path)
42
- @write_cache[path] = nil
43
- end
44
-
45
- def application_name
46
- File.basename Dir.getwd
47
- end
48
-
49
- def application_human_name
50
- application_name.titleize
51
- end
52
- end
53
- end
@@ -1,39 +0,0 @@
1
- module Embryo
2
- class Gemfile
3
- attr_accessor :path, :data
4
-
5
- def initialize(path, generator: nil)
6
- @path = path
7
- @generator = generator
8
- @data = File.exist?(path) ? File.read(path) : ""
9
- end
10
-
11
- def remove_noise
12
- @data = @data.each_line.select { |line| line[0] != "#" }.join
13
- @data.gsub!(/\n\n+/, "\n\n")
14
- @data.gsub!(/\n+$/, "\n")
15
- end
16
-
17
- def require_gem(name, version, options = {})
18
- remove_gem name
19
- @data << "\n" unless @data[-1] == "\n"
20
- @data << "gem '#{name}', '#{version}'"
21
- options.each { |key, value| @data << ", #{key}: #{value.inspect}" }
22
- @data << "\n"
23
- end
24
-
25
- def remove_gem(name)
26
- @data = @data.each_line.reject do |line|
27
- line.match(/ *gem +'#{name}'/) or line.match(/ *gem +"#{name}"/)
28
- end.join
29
- end
30
-
31
- def write(force: false)
32
- @generator.create_file path, data, force: force
33
- end
34
-
35
- def self.current(generator: nil)
36
- new "Gemfile", generator: generator
37
- end
38
- end
39
- end
@@ -1,18 +0,0 @@
1
- module Embryo
2
- class Poltergeist
3
- def initialize(filesystem)
4
- @filesystem = filesystem
5
- end
6
-
7
- def install
8
- @filesystem.require_gem "poltergeist", "~> 1.0", group: :test
9
- @filesystem.write "spec/support/poltergeist.rb", poltergeist_helper_data
10
- end
11
-
12
- def poltergeist_helper_data
13
- 'require "capybara/poltergeist"
14
- Capybara.javascript_driver = :poltergeist
15
- '
16
- end
17
- end
18
- end
@@ -1,12 +0,0 @@
1
- module Embryo
2
- class RubyVersion
3
- def initialize(filesystem)
4
- @filesystem = filesystem
5
- end
6
-
7
- def install
8
- @filesystem.write ".ruby-version", "2.1.2\n"
9
- @filesystem.write ".ruby-gemset", "#{@filesystem.application_name}\n"
10
- end
11
- end
12
- end
@@ -1,19 +0,0 @@
1
- require "embryo/rspec"
2
- require "embryo/factory_girl"
3
- require "embryo/capybara"
4
- require "embryo/poltergeist"
5
-
6
- module Embryo
7
- class TestSupport
8
- def initialize(filesystem)
9
- @filesystem = filesystem
10
- end
11
-
12
- def install
13
- Rspec.new(@filesystem).install
14
- FactoryGirl.new(@filesystem).install
15
- Capybara.new(@filesystem).install
16
- Poltergeist.new(@filesystem).install
17
- end
18
- end
19
- end