rspec_engine_generator 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +17 -0
- data/Gemfile +4 -0
- data/LICENSE +22 -0
- data/README.md +37 -0
- data/Rakefile +2 -0
- data/TODO +3 -0
- data/bin/rspec_engine +83 -0
- data/lib/rspec_engine_generator/version.rb +7 -0
- data/lib/rspec_engine_generator.rb +9 -0
- data/rspec_engine_generator.gemspec +20 -0
- metadata +78 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2012 Jack Dempsey
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
# Rspec::Engine::Generator
|
2
|
+
|
3
|
+
Simple Thor based gem that lets you easily create a Rails 3 engine.
|
4
|
+
Standard Rails prefers TestUnit and it's not obvious or trivial to set
|
5
|
+
things up yourself, so I've bundled together great ideas from
|
6
|
+
http://brainbicycle.net/blog/2011/10/03/create-a-rails-engine-with-rspec-and-capybara-tests
|
7
|
+
and elsewhere and tried to make this simple and easy.
|
8
|
+
|
9
|
+
## Installation
|
10
|
+
|
11
|
+
$ gem install rspec_engine_generator
|
12
|
+
|
13
|
+
## Usage
|
14
|
+
|
15
|
+
Usage:
|
16
|
+
rspec\_engine new NAME
|
17
|
+
|
18
|
+
Options:
|
19
|
+
[--mountable] # choose whether to make the engine mountable or not
|
20
|
+
(if false, engine is --full)
|
21
|
+
# Default: true
|
22
|
+
|
23
|
+
Build a new rspec-ready engine named NAME
|
24
|
+
|
25
|
+
## Notes
|
26
|
+
|
27
|
+
Looks like there's some wonkiness going on if you generate an engine
|
28
|
+
with a dash in it. So, name your engines foo\_engine not foo-engine to
|
29
|
+
avoid a headache.
|
30
|
+
|
31
|
+
## Contributing
|
32
|
+
|
33
|
+
1. Fork it
|
34
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
35
|
+
3. Commit your changes (`git commit -am 'Added some feature'`)
|
36
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
37
|
+
5. Create new Pull Request
|
data/Rakefile
ADDED
data/TODO
ADDED
data/bin/rspec_engine
ADDED
@@ -0,0 +1,83 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'thor'
|
4
|
+
|
5
|
+
class RspecEngine < Thor
|
6
|
+
include Thor::Actions
|
7
|
+
|
8
|
+
option :mountable, type: :boolean, default: true, desc: "choose whether to make the engine mountable or not (if false, engine is --full)"
|
9
|
+
desc "new NAME", "Build a new rspec-ready engine named NAME"
|
10
|
+
def new(name)
|
11
|
+
command = %{rails plugin new #{name} #{options[:mountable] ? '--mountable' : '--full'} --skip-test-unit --skip-bundle --dummy-path=spec/dummy}
|
12
|
+
run command
|
13
|
+
inside name do
|
14
|
+
run 'git init && git add . && git commit -m"Base engine"'
|
15
|
+
insert_into_file "#{name}.gemspec", :after => 's.add_development_dependency "sqlite3"' do
|
16
|
+
%{\n s.add_development_dependency "rspec-rails"\n s.add_development_dependency "capybara"}
|
17
|
+
end
|
18
|
+
run "bundle install"
|
19
|
+
run "rails g rspec:install"
|
20
|
+
gsub_file 'spec/spec_helper.rb', /..\/config\/environment/, 'dummy/config/environment'
|
21
|
+
insert_into_file "Rakefile", after: "load 'rails/tasks/engine.rake'" do
|
22
|
+
%{\n\nrequire 'rspec/core/rake_task'\nRSpec::Core::RakeTask.new(:spec)\ntask :default => :spec}
|
23
|
+
end
|
24
|
+
run 'git add . && git commit -m"added rspec"'
|
25
|
+
empty_directory "spec/requests"
|
26
|
+
create_file "spec/requests/requests_helper.rb", "require 'spec_helper.rb'\nrequire 'capybara/rspec'"
|
27
|
+
create_file "spec/requests/root_spec.rb", <<-SPEC.gsub(/^ {8}/, '')
|
28
|
+
require 'requests/requests_helper'
|
29
|
+
|
30
|
+
feature "Root", %q{
|
31
|
+
In order to provide base functionality
|
32
|
+
As a user
|
33
|
+
I want to view the root url
|
34
|
+
} do
|
35
|
+
|
36
|
+
background do
|
37
|
+
end
|
38
|
+
|
39
|
+
scenario "View " do
|
40
|
+
visit '/'
|
41
|
+
page.should have_content('Welcome')
|
42
|
+
end
|
43
|
+
end
|
44
|
+
SPEC
|
45
|
+
run 'git add . && git ci -am"installed capybara"'
|
46
|
+
|
47
|
+
insert_into_file 'spec/dummy/config/routes.rb', " root to: 'home#index'\n", after: '.draw do'
|
48
|
+
# generate a home controller and place to link off to engine from
|
49
|
+
inside 'spec/dummy' do
|
50
|
+
run "rails g controller Home index"
|
51
|
+
create_file 'app/views/home/index.html.erb', force: true do
|
52
|
+
content = "<h1>Welcome to the Dummy app for #{name}</h1>"
|
53
|
+
# if generating a mountable engine, add a link to the dashboard we'll setup below
|
54
|
+
if options[:mountable]
|
55
|
+
content += <<-INDEX.gsub(/^ {12}/, '')
|
56
|
+
<ul>
|
57
|
+
<li><%= link_to "View #{name} dashboard", #{name}_path %></li>
|
58
|
+
</ul>
|
59
|
+
INDEX
|
60
|
+
end
|
61
|
+
content
|
62
|
+
end
|
63
|
+
run 'git add . && git ci -am"created Home controller for easy start to engine development"'
|
64
|
+
end
|
65
|
+
|
66
|
+
# if we're generating a mountable engine, then generate a simple dashboard controller
|
67
|
+
# if it's a full engine, then there's no real dashboard, as it's integrated fully into the host app, not alongside
|
68
|
+
if options[:mountable]
|
69
|
+
run "rails g controller Dashboard index"
|
70
|
+
insert_into_file 'config/routes.rb', " root to: 'dashboard#index'\n", after: '.draw do'
|
71
|
+
create_file "app/views/#{name}/dashboard/index.html.erb", force: true do
|
72
|
+
content = <<-INDEX.gsub(/^ {10}/, '')
|
73
|
+
<h1>Welcome to an example Dashboard for #{name}</h1>
|
74
|
+
INDEX
|
75
|
+
end
|
76
|
+
run 'git add . && git ci -am"created Dashboardcontroller for easy starting place to link off to subcomponents of mounted engine."'
|
77
|
+
end
|
78
|
+
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
RspecEngine.start(ARGV)
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require File.expand_path('../lib/rspec_engine_generator/version', __FILE__)
|
3
|
+
|
4
|
+
Gem::Specification.new do |gem|
|
5
|
+
gem.authors = ["Jack Dempsey"]
|
6
|
+
gem.email = ["jack.dempsey@gmail.com"]
|
7
|
+
gem.description = %q{Thor based gem that generates an RSpec ready Rails 3 engine}
|
8
|
+
gem.summary = %q{Thor based gem that generates an RSpec ready Rails 3 engine}
|
9
|
+
gem.homepage = ""
|
10
|
+
|
11
|
+
gem.files = `git ls-files`.split($\)
|
12
|
+
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
13
|
+
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
14
|
+
gem.name = "rspec_engine_generator"
|
15
|
+
gem.require_paths = ["lib"]
|
16
|
+
gem.version = Rspec::Engine::Generator::VERSION
|
17
|
+
|
18
|
+
gem.add_dependency("thor", "~> 0.15.2")
|
19
|
+
gem.add_dependency("rails", "~> 3.0")
|
20
|
+
end
|
metadata
ADDED
@@ -0,0 +1,78 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: rspec_engine_generator
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.4
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Jack Dempsey
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-06-04 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: thor
|
16
|
+
requirement: &70282383950180 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 0.15.2
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *70282383950180
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: rails
|
27
|
+
requirement: &70282383949220 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ~>
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '3.0'
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *70282383949220
|
36
|
+
description: Thor based gem that generates an RSpec ready Rails 3 engine
|
37
|
+
email:
|
38
|
+
- jack.dempsey@gmail.com
|
39
|
+
executables:
|
40
|
+
- rspec_engine
|
41
|
+
extensions: []
|
42
|
+
extra_rdoc_files: []
|
43
|
+
files:
|
44
|
+
- .gitignore
|
45
|
+
- Gemfile
|
46
|
+
- LICENSE
|
47
|
+
- README.md
|
48
|
+
- Rakefile
|
49
|
+
- TODO
|
50
|
+
- bin/rspec_engine
|
51
|
+
- lib/rspec_engine_generator.rb
|
52
|
+
- lib/rspec_engine_generator/version.rb
|
53
|
+
- rspec_engine_generator.gemspec
|
54
|
+
homepage: ''
|
55
|
+
licenses: []
|
56
|
+
post_install_message:
|
57
|
+
rdoc_options: []
|
58
|
+
require_paths:
|
59
|
+
- lib
|
60
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - ! '>='
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '0'
|
66
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
67
|
+
none: false
|
68
|
+
requirements:
|
69
|
+
- - ! '>='
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
version: '0'
|
72
|
+
requirements: []
|
73
|
+
rubyforge_project:
|
74
|
+
rubygems_version: 1.8.15
|
75
|
+
signing_key:
|
76
|
+
specification_version: 3
|
77
|
+
summary: Thor based gem that generates an RSpec ready Rails 3 engine
|
78
|
+
test_files: []
|