my_enginery 0.2.8
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +18 -0
- data/.travis.yml +9 -0
- data/CHANGELOG.md +14 -0
- data/Gemfile +12 -0
- data/LICENSE +19 -0
- data/README.md +957 -0
- data/Rakefile +48 -0
- data/app/base/.pryrc +1 -0
- data/app/base/Gemfile +25 -0
- data/app/base/Rakefile +4 -0
- data/app/base/app.rb +8 -0
- data/app/base/base/boot.rb +45 -0
- data/app/base/base/config.rb +127 -0
- data/app/base/base/controllers/rear-controllers/.gitkeep +0 -0
- data/app/base/base/database.rb +3 -0
- data/app/base/base/helpers/application_helpers.rb +3 -0
- data/app/base/base/migrations/.gitkeep +0 -0
- data/app/base/base/models/.gitkeep +0 -0
- data/app/base/base/specs/.gitkeep +0 -0
- data/app/base/base/views/.gitkeep +0 -0
- data/app/base/config.ru +4 -0
- data/app/base/config/config.yml +17 -0
- data/app/base/public/assets/Enginery.png +0 -0
- data/app/base/public/assets/Espresso.png +0 -0
- data/app/base/public/assets/application.css +13 -0
- data/app/base/public/assets/application.js +2 -0
- data/app/base/public/assets/bootstrap/css/bootstrap-responsive.min.css +9 -0
- data/app/base/public/assets/bootstrap/css/bootstrap.min.css +9 -0
- data/app/base/public/assets/bootstrap/img/glyphicons-halflings-white.png +0 -0
- data/app/base/public/assets/bootstrap/img/glyphicons-halflings.png +0 -0
- data/app/base/public/assets/bootstrap/js/bootstrap.min.js +6 -0
- data/app/base/public/assets/jquery.js +6 -0
- data/app/base/var/db/.gitkeep +0 -0
- data/app/base/var/log/.gitkeep +0 -0
- data/app/base/var/pid/.gitkeep +0 -0
- data/app/database/ActiveRecord.rb +11 -0
- data/app/database/DataMapper.rb +11 -0
- data/app/database/Sequel.rb +11 -0
- data/app/database/mysql.yml +24 -0
- data/app/database/postgres.yml +24 -0
- data/app/database/sqlite.yml +24 -0
- data/app/gemfiles/ActiveRecord.rb +1 -0
- data/app/gemfiles/BlueCloth.rb +1 -0
- data/app/gemfiles/DataMapper.rb +1 -0
- data/app/gemfiles/FastCGI.rb +1 -0
- data/app/gemfiles/Puma.rb +1 -0
- data/app/gemfiles/RDiscount.rb +1 -0
- data/app/gemfiles/RDoc.rb +1 -0
- data/app/gemfiles/RedCloth.rb +1 -0
- data/app/gemfiles/WEBrick.rb +1 -0
- data/app/gemfiles/WikiCloth.rb +1 -0
- data/app/gemfiles/mysql/ActiveRecord.rb +1 -0
- data/app/gemfiles/mysql/DataMapper.rb +1 -0
- data/app/gemfiles/mysql/Sequel.rb +1 -0
- data/app/gemfiles/postgres/ActiveRecord.rb +1 -0
- data/app/gemfiles/postgres/DataMapper.rb +1 -0
- data/app/gemfiles/postgres/Sequel.rb +1 -0
- data/app/gemfiles/sqlite/ActiveRecord.rb +1 -0
- data/app/gemfiles/sqlite/DataMapper.rb +1 -0
- data/app/gemfiles/sqlite/Sequel.rb +1 -0
- data/app/layouts/ERB/layout.erb +56 -0
- data/app/layouts/Erubis/layout.erb +56 -0
- data/app/layouts/Haml/layout.haml +38 -0
- data/app/layouts/Slim/layout.slim +38 -0
- data/app/migrations/ActiveRecord.erb +51 -0
- data/app/migrations/DataMapper.erb +61 -0
- data/app/migrations/Sequel.erb +54 -0
- data/app/migrations/tracking_table/ActiveRecord.rb +19 -0
- data/app/migrations/tracking_table/DataMapper.rb +26 -0
- data/app/migrations/tracking_table/Sequel.rb +18 -0
- data/app/rakefiles/ActiveRecord.rb +0 -0
- data/app/rakefiles/DataMapper.rb +1 -0
- data/app/rakefiles/Sequel.rb +0 -0
- data/app/rakefiles/Specular.rb +1 -0
- data/app/specfiles/Specular.erb +7 -0
- data/bin/my_enginery +235 -0
- data/lib/enginery.rb +23 -0
- data/lib/enginery/cli.rb +44 -0
- data/lib/enginery/configurator.rb +139 -0
- data/lib/enginery/delete.rb +116 -0
- data/lib/enginery/enginery.rb +41 -0
- data/lib/enginery/generator.rb +325 -0
- data/lib/enginery/helpers/app.rb +83 -0
- data/lib/enginery/helpers/generic.rb +145 -0
- data/lib/enginery/helpers/input.rb +123 -0
- data/lib/enginery/helpers/orm.rb +86 -0
- data/lib/enginery/helpers/validations.rb +101 -0
- data/lib/enginery/migrator.rb +371 -0
- data/lib/enginery/rake-tasks/data_mapper.rb +49 -0
- data/lib/enginery/rake-tasks/specular.rb +41 -0
- data/lib/enginery/registry.rb +101 -0
- data/lib/enginery/usage.rb +66 -0
- data/lib/enginery/version.rb +7 -0
- data/logo.png +0 -0
- data/my_enginery.gemspec +37 -0
- data/test/delete/test__admin.rb +49 -0
- data/test/delete/test__controller.rb +37 -0
- data/test/delete/test__helper.rb +49 -0
- data/test/delete/test__migration.rb +27 -0
- data/test/delete/test__model.rb +35 -0
- data/test/delete/test__route.rb +35 -0
- data/test/delete/test__spec.rb +59 -0
- data/test/delete/test__view.rb +51 -0
- data/test/generator/test__admin.rb +39 -0
- data/test/generator/test__controller.rb +123 -0
- data/test/generator/test__helper.rb +56 -0
- data/test/generator/test__model.rb +206 -0
- data/test/generator/test__project.rb +81 -0
- data/test/generator/test__route.rb +110 -0
- data/test/generator/test__spec.rb +56 -0
- data/test/generator/test__view.rb +85 -0
- data/test/migrator/test__auto_generation.rb +41 -0
- data/test/migrator/test__manual_generation.rb +59 -0
- data/test/migrator/test__migrations.rb +139 -0
- data/test/sandbox/.gitkeep +0 -0
- data/test/setup.rb +29 -0
- data/test/support/spec_helpers.rb +151 -0
- metadata +392 -0
@@ -0,0 +1,101 @@
|
|
1
|
+
module Enginery
|
2
|
+
class Registry
|
3
|
+
include Helpers
|
4
|
+
|
5
|
+
def initialize root
|
6
|
+
@dst_root = root.freeze
|
7
|
+
end
|
8
|
+
|
9
|
+
def controllers
|
10
|
+
boot_app
|
11
|
+
app_controllers.inject({}) do |f,c|
|
12
|
+
path = controller_path(c)
|
13
|
+
routes = routes(c)
|
14
|
+
data = {
|
15
|
+
name: c.name,
|
16
|
+
path: path,
|
17
|
+
file: unrootify(dst_path(:controllers, path + CONTROLLER_SUFFIX)),
|
18
|
+
dom_id: c.name.gsub(/\W/m, ''),
|
19
|
+
routes: routes,
|
20
|
+
specs: routes.inject(0) {|s,(_,r)| s += r[:specs].size}
|
21
|
+
}
|
22
|
+
helper_file = dst_path(:helpers, path + HELPER_SUFFIX)
|
23
|
+
File.exists?(helper_file) && data[:helper_file] = unrootify(helper_file)
|
24
|
+
f.merge c.name => data
|
25
|
+
end.to_yaml
|
26
|
+
end
|
27
|
+
|
28
|
+
def routes controller
|
29
|
+
path = controller_path(controller)
|
30
|
+
routes_by_controller(controller.name).inject({}) do |f,r|
|
31
|
+
f.merge r => {
|
32
|
+
name: r,
|
33
|
+
route: controller[r.to_sym],
|
34
|
+
file: unrootify(dst_path(:controllers, path, r + ROUTE_SUFFIX)),
|
35
|
+
views: views(controller, r),
|
36
|
+
specs: specs(controller, r)
|
37
|
+
}
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def views controller, route
|
42
|
+
path = controller_path(controller)
|
43
|
+
Dir[dst_path(:views, path, route + '.*')].map {|f| unrootify(f)}
|
44
|
+
end
|
45
|
+
|
46
|
+
def specs controller, route
|
47
|
+
path = controller_path(controller)
|
48
|
+
Dir[dst_path(:specs, path, route + SPEC_SUFFIX)].map {|f| unrootify(f)}
|
49
|
+
end
|
50
|
+
|
51
|
+
def models
|
52
|
+
cfg = app_config()
|
53
|
+
app_models.inject({}) do |f,m|
|
54
|
+
path = model_path(m)
|
55
|
+
f.merge m.name => {
|
56
|
+
name: m.name,
|
57
|
+
path: path,
|
58
|
+
file: unrootify(dst_path(:models, path + MODEL_SUFFIX)),
|
59
|
+
rear_file: rear_file(m),
|
60
|
+
rear_path: rear_path(m, cfg),
|
61
|
+
dom_id: m.name.gsub(/\W/m, ''),
|
62
|
+
orm: cfg[:orm],
|
63
|
+
migrations: migrations(m)
|
64
|
+
}
|
65
|
+
end.to_yaml
|
66
|
+
end
|
67
|
+
|
68
|
+
def migrations model
|
69
|
+
migrations_by_model(model.name).inject({}) do |f,m|
|
70
|
+
step, time, name = m.scan(Migrator::NAME_REGEXP).flatten
|
71
|
+
file = dst_path(:migrations, model_path(model), m)
|
72
|
+
f.merge ('%s. %s' % [step, name.to_s.gsub('-', ' ')]) => {
|
73
|
+
step: step,
|
74
|
+
name: name,
|
75
|
+
time: time,
|
76
|
+
file: unrootify(file),
|
77
|
+
path: file.sub(dst_path.migrations, '')
|
78
|
+
}
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
private
|
83
|
+
def controller_path controller
|
84
|
+
EUtils.class_to_route(controller.name)
|
85
|
+
end
|
86
|
+
|
87
|
+
def model_path model
|
88
|
+
EUtils.class_to_route(model.name)
|
89
|
+
end
|
90
|
+
|
91
|
+
def rear_path model, cfg
|
92
|
+
return unless admin_url = cfg[:admin_url]
|
93
|
+
EUtils.rootify_url(admin_url, EUtils.class_to_route(model.name))
|
94
|
+
end
|
95
|
+
|
96
|
+
def rear_file model
|
97
|
+
unrootify dst_path(:rear_controllers, model_path(model) + ADMIN_SUFFIX)
|
98
|
+
end
|
99
|
+
|
100
|
+
end
|
101
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
require 'enginery/version'
|
2
|
+
|
3
|
+
class << Enginery
|
4
|
+
def usage
|
5
|
+
<<USAGE
|
6
|
+
|
7
|
+
Enginery version #{EngineryVersion::FULL}
|
8
|
+
|
9
|
+
Generator:
|
10
|
+
|
11
|
+
enginery g[enerate][:p] Foo - generates a new application in ./Foo/ folder
|
12
|
+
enginery g[enerate][:p] - generates a new application in current folder
|
13
|
+
|
14
|
+
enginery g[enerate]:c[ontroller] Foo - generates Foo controller
|
15
|
+
enginery g[enerate]:c[ontroller] Foo Bar - generates Foo and Bar controllers
|
16
|
+
|
17
|
+
enginery g[enerate]:r[oute] Foo bar - generates Foo#bar action
|
18
|
+
enginery g[enerate]:r[oute] Foo bar baz - generates Foo#bar and Foo#baz actions
|
19
|
+
|
20
|
+
enginery g[enerate]:s[pec] Foo bar - generates a spec for Foo#bar action
|
21
|
+
|
22
|
+
enginery g[enerate]:v[iew] Foo bar - generates view file for Foo#bar action
|
23
|
+
|
24
|
+
enginery g[enerate]:m[odel] Foo - generates Foo model
|
25
|
+
enginery g[enerate]:m[odel] Foo Bar - generates Foo and Bar models
|
26
|
+
|
27
|
+
Generator Options:
|
28
|
+
|
29
|
+
ORM:
|
30
|
+
enginery g o[rm]:[ActiveRecord|ar] - generated project will use ActiveRecord ORM
|
31
|
+
enginery g o[rm]:[DataMapper|dm] - generated project will use DataMapper ORM
|
32
|
+
enginery g o[rm]:[Sequel|sq] - generated project will use Sequel ORM
|
33
|
+
|
34
|
+
Engine:
|
35
|
+
enginery g[enerate] e[ngine]:Slim - generated project will use Slim engine
|
36
|
+
enginery g[enerate]:c[ontroller] e[ngine]:Haml - generated controller will use Haml engine
|
37
|
+
|
38
|
+
Note: engine name should be provided in full and are case sensitive
|
39
|
+
|
40
|
+
#{ migrator_usage }
|
41
|
+
|
42
|
+
USAGE
|
43
|
+
end
|
44
|
+
|
45
|
+
def migrator_usage
|
46
|
+
<<USAGE
|
47
|
+
Migrator:
|
48
|
+
|
49
|
+
enginery m[igration] migration-name m[odel]:Foo c[olumn]:bar - create bar column of string type
|
50
|
+
enginery m[igration] migration-name m[odel]:Foo c[olumn]:bar:baz - create bar column of baz type
|
51
|
+
|
52
|
+
enginery m[igration] migration-name m[odel]:Foo u[pdate_]c[olumn]:bar:baz - set bar column type to baz
|
53
|
+
|
54
|
+
enginery m[igration] migration-name m[odel]:Foo r[ename_]c[olumn]:bar:baz - rename bar column to baz
|
55
|
+
|
56
|
+
enginery m[igration]:l[ist] - list all available migrations
|
57
|
+
|
58
|
+
enginery m[igrate]:up|down N - perform up|down migration with serial number N
|
59
|
+
|
60
|
+
enginery m[igrate]:up|down N M - perform up|down migrations with serial numbers N and M
|
61
|
+
|
62
|
+
enginery m[igrate]:up|down N-M - perform up|down migrations with serial numbers from N to M
|
63
|
+
|
64
|
+
USAGE
|
65
|
+
end
|
66
|
+
end
|
data/logo.png
ADDED
Binary file
|
data/my_enginery.gemspec
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
require File.expand_path('../lib/enginery/version', __FILE__)
|
4
|
+
Gem::Specification.new do |s|
|
5
|
+
|
6
|
+
s.name = 'my_enginery'
|
7
|
+
s.version = EngineryVersion::FULL
|
8
|
+
s.authors = ['Walter Smith']
|
9
|
+
s.email = ['waltee.smith@gmail.com']
|
10
|
+
s.homepage = 'https://github.com/espresso/enginery'
|
11
|
+
s.summary = 'enginery-%s' % EngineryVersion::FULL
|
12
|
+
s.description = 'Stuff Builder for Espresso Framework'
|
13
|
+
|
14
|
+
s.required_ruby_version = '>= 1.9.2'
|
15
|
+
|
16
|
+
s.add_dependency 'e', '>= 0.4.10'
|
17
|
+
s.add_dependency 'el', '>= 0.4.10'
|
18
|
+
s.add_dependency 'rear', '>= 0.1.2'
|
19
|
+
s.add_dependency 'bundler'
|
20
|
+
s.add_dependency 'tenjin'
|
21
|
+
|
22
|
+
s.add_development_dependency 'rake', '>= 10'
|
23
|
+
s.add_development_dependency 'specular', '>= 0.2.2'
|
24
|
+
s.add_development_dependency 'sonar', '>= 0.2.0'
|
25
|
+
s.add_development_dependency 'mysql'
|
26
|
+
s.add_development_dependency 'activerecord'
|
27
|
+
s.add_development_dependency 'datamapper'
|
28
|
+
s.add_development_dependency 'dm-mysql-adapter'
|
29
|
+
s.add_development_dependency 'sequel'
|
30
|
+
s.add_development_dependency 'slim'
|
31
|
+
|
32
|
+
s.require_paths = ['lib']
|
33
|
+
s.files = Dir['**/{*,.[a-z]*}'].reject {|e| e =~ /\.(gem|lock)\Z/}
|
34
|
+
s.executables = ['my_enginery']
|
35
|
+
|
36
|
+
s.licenses = ['MIT']
|
37
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
module Enginery
|
2
|
+
module Test
|
3
|
+
module DeleteAdmin
|
4
|
+
Spec.new self do
|
5
|
+
|
6
|
+
Dir.chdir DST_ROOT do
|
7
|
+
|
8
|
+
is(new_app 'App').ok?
|
9
|
+
|
10
|
+
Dir.chdir 'App' do
|
11
|
+
entries = [
|
12
|
+
'base/controllers/rear-controllers/foo' + ADMIN_SUFFIX
|
13
|
+
]
|
14
|
+
|
15
|
+
Should 'be deleted alongside model' do
|
16
|
+
is(new_model 'Foo').ok?
|
17
|
+
|
18
|
+
entries.each do |e|
|
19
|
+
does(File).exists? e
|
20
|
+
end
|
21
|
+
|
22
|
+
is(delete_model 'Foo').ok?
|
23
|
+
entries.each do |e|
|
24
|
+
refute(File).exists? e
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
Should 'be deleted manually' do
|
29
|
+
|
30
|
+
is(new_model 'Foo').ok?
|
31
|
+
|
32
|
+
entries.each do |e|
|
33
|
+
does(File).exists? e
|
34
|
+
end
|
35
|
+
|
36
|
+
is(delete_admin_controller 'Foo').ok?
|
37
|
+
entries.each do |e|
|
38
|
+
refute(File).exists? e
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module Enginery
|
2
|
+
module Test
|
3
|
+
module DeleteController
|
4
|
+
Spec.new self do
|
5
|
+
|
6
|
+
Dir.chdir DST_ROOT do
|
7
|
+
|
8
|
+
is(new_app 'App').ok?
|
9
|
+
|
10
|
+
Dir.chdir 'App' do
|
11
|
+
|
12
|
+
entries = [
|
13
|
+
'base/controllers/foo/',
|
14
|
+
'base/controllers/foo' + Enginery::CONTROLLER_SUFFIX,
|
15
|
+
'base/controllers/foo/bar' + Enginery::ROUTE_SUFFIX,
|
16
|
+
'base/views/foo/bar.erb',
|
17
|
+
'base/specs/foo/bar' + Enginery::SPEC_SUFFIX
|
18
|
+
]
|
19
|
+
|
20
|
+
is(new_controller 'Foo').ok?
|
21
|
+
is(new_route 'Foo bar').ok?
|
22
|
+
entries.each do |e|
|
23
|
+
does(File).exists? e
|
24
|
+
end
|
25
|
+
|
26
|
+
is(delete_controller 'Foo').ok?
|
27
|
+
entries.each do |e|
|
28
|
+
refute(File).exists? e
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
module Enginery
|
2
|
+
module Test
|
3
|
+
module DeleteHelper
|
4
|
+
Spec.new self do
|
5
|
+
|
6
|
+
Dir.chdir DST_ROOT do
|
7
|
+
|
8
|
+
is(new_app 'App').ok?
|
9
|
+
|
10
|
+
Dir.chdir 'App' do
|
11
|
+
entries = [
|
12
|
+
'base/helpers/foo' + Enginery::HELPER_SUFFIX
|
13
|
+
]
|
14
|
+
|
15
|
+
Should 'be deleted alongside controller' do
|
16
|
+
is(new_controller 'Foo').ok?
|
17
|
+
|
18
|
+
entries.each do |e|
|
19
|
+
does(File).exists? e
|
20
|
+
end
|
21
|
+
|
22
|
+
is(delete_controller 'Foo').ok?
|
23
|
+
entries.each do |e|
|
24
|
+
refute(File).exists? e
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
Should 'be deleted manually' do
|
29
|
+
|
30
|
+
is(new_controller 'Foo').ok?
|
31
|
+
|
32
|
+
entries.each do |e|
|
33
|
+
does(File).exists? e
|
34
|
+
end
|
35
|
+
|
36
|
+
is(delete_helper 'Foo').ok?
|
37
|
+
entries.each do |e|
|
38
|
+
refute(File).exists? e
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Enginery
|
2
|
+
module Test
|
3
|
+
module DeleteMigration
|
4
|
+
Spec.new self do
|
5
|
+
|
6
|
+
Dir.chdir DST_ROOT do
|
7
|
+
|
8
|
+
is(new_app 'App o:dm').ok?
|
9
|
+
|
10
|
+
Dir.chdir 'App' do
|
11
|
+
|
12
|
+
is(new_model 'Foo').ok?
|
13
|
+
migrations = Dir['base/migrations/foo/*' + Enginery::MIGRATION_SUFFIX]
|
14
|
+
check(migrations).any?
|
15
|
+
|
16
|
+
is(delete_migration '1').ok?
|
17
|
+
migrations.each do |e|
|
18
|
+
refute(File).exists? e
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module Enginery
|
2
|
+
module Test
|
3
|
+
module DeleteModel
|
4
|
+
Spec.new self do
|
5
|
+
|
6
|
+
Dir.chdir DST_ROOT do
|
7
|
+
|
8
|
+
is(new_app 'App o:ar').ok?
|
9
|
+
|
10
|
+
Dir.chdir 'App' do
|
11
|
+
|
12
|
+
entries = [
|
13
|
+
'base/models/foo' + Enginery::MODEL_SUFFIX
|
14
|
+
]
|
15
|
+
|
16
|
+
is(new_model 'Foo').ok?
|
17
|
+
migrations = Dir['base/migrations/foo/*' + Enginery::MIGRATION_SUFFIX]
|
18
|
+
check(migrations).any?
|
19
|
+
|
20
|
+
entries.each do |e|
|
21
|
+
does(File).exists? e
|
22
|
+
end
|
23
|
+
|
24
|
+
is(delete_model 'Foo').ok?
|
25
|
+
(entries + migrations).each do |e|
|
26
|
+
refute(File).exists? e
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module Enginery
|
2
|
+
module Test
|
3
|
+
module DeleteRoute
|
4
|
+
Spec.new self do
|
5
|
+
|
6
|
+
Dir.chdir DST_ROOT do
|
7
|
+
|
8
|
+
is(new_app 'App').ok?
|
9
|
+
|
10
|
+
Dir.chdir 'App' do
|
11
|
+
|
12
|
+
entries = [
|
13
|
+
'base/controllers/foo/bar' + Enginery::ROUTE_SUFFIX,
|
14
|
+
'base/views/foo/bar.erb',
|
15
|
+
'base/specs/foo/bar' + Enginery::SPEC_SUFFIX
|
16
|
+
]
|
17
|
+
|
18
|
+
is(new_controller 'Foo').ok?
|
19
|
+
is(new_route 'Foo bar').ok?
|
20
|
+
entries.each do |e|
|
21
|
+
does(File).exists? e
|
22
|
+
end
|
23
|
+
|
24
|
+
is(delete_route 'Foo bar').ok?
|
25
|
+
entries.each do |e|
|
26
|
+
refute(File).exists? e
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|