rails-embryo 0.1.1 → 0.2.0

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/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