padrino-gen 0.1.3 → 0.1.4
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/README.rdoc +11 -7
- data/Rakefile +4 -3
- data/VERSION +1 -1
- data/bin/padrino-gen +2 -2
- data/lib/generators/actions.rb +1 -1
- data/lib/generators/components/actions.rb +10 -2
- data/lib/generators/components/orms/activerecord_gen.rb +1 -0
- data/lib/generators/components/orms/couchrest_gen.rb +1 -0
- data/lib/generators/components/orms/datamapper_gen.rb +3 -1
- data/lib/generators/components/orms/mongomapper_gen.rb +1 -14
- data/lib/generators/components/orms/sequel_gen.rb +1 -1
- data/lib/generators/components/renderers/haml_gen.rb +17 -3
- data/lib/generators/components/scripts/jquery_gen.rb +1 -0
- data/lib/generators/components/scripts/prototype_gen.rb +1 -0
- data/lib/generators/components/scripts/rightjs_gen.rb +1 -0
- data/lib/generators/model.rb +0 -1
- data/lib/generators/skeleton.rb +1 -1
- data/lib/generators/skeleton/.gitignore +3 -4
- data/lib/generators/skeleton/config/apps.rb.tt +7 -2
- data/lib/generators/templates/controller.rb.tt +5 -1
- data/lib/padrino-gen.rb +1 -0
- data/padrino-gen.gemspec +7 -14
- data/test/helper.rb +19 -11
- data/test/test_controller_generator.rb +2 -2
- data/test/test_mailer_generator.rb +4 -4
- data/test/test_model_generator.rb +1 -1
- data/test/test_skeleton_generator.rb +33 -9
- metadata +4 -9
- data/lib/generators/skeleton/app/models/.empty_directory +0 -0
- data/lib/generators/skeleton/test/test_config.rb.tt +0 -5
- data/lib/generators/skeleton/vendor/gems/.empty_directory +0 -0
- data/test/active_support_helpers.rb +0 -7
data/README.rdoc
CHANGED
@@ -7,14 +7,14 @@ To install the 'full-stack' padrino framework, simply grab the latest version fr
|
|
7
7
|
$ sudo gem install padrino --source http://gemcutter.org
|
8
8
|
|
9
9
|
This will install the necessary padrino gems to get you started.
|
10
|
-
Now you are ready to use this gem to enhance your
|
10
|
+
Now you are ready to use this gem to enhance your existing Sinatra projects or build new Padrino applications.
|
11
11
|
|
12
12
|
== Overview
|
13
13
|
|
14
|
-
Padrino comes preloaded with flexible code generators
|
15
|
-
|
16
|
-
|
17
|
-
|
14
|
+
Padrino comes preloaded with flexible code generators powered in part by the excellent Thor gem
|
15
|
+
(incidentally also used in the Rails 3 generators). These generators are intended to allow for easy code generation
|
16
|
+
both in creating new applications and building on existing ones. The generators have been built to be as library agnostic
|
17
|
+
as possible, supporting a myriad of test frameworks, js libraries, mocking libraries, etc.
|
18
18
|
|
19
19
|
See the wiki article for additional information: <...WIKI...>
|
20
20
|
|
@@ -52,6 +52,10 @@ There is also support for aliases for each component within the command:
|
|
52
52
|
|
53
53
|
$ padrino-gen demo_app . -t=rspec -r=haml -m=rr -s=jquery -d=datamapper
|
54
54
|
|
55
|
+
You can also instruct the generator to skip a certain component to avoid using one at all (or to use your own):
|
56
|
+
|
57
|
+
$ padrino-gen demo_app . --test=none --renderer=none
|
58
|
+
|
55
59
|
The available components and their default options are listed below:
|
56
60
|
|
57
61
|
* test: <tt>bacon</tt> (default), <tt>shoulda</tt>, <tt>rspec</tt>, <tt>testspec</tt>, <tt>riot</tt>
|
@@ -70,8 +74,8 @@ If not executed manually, the bundling will be performed automatically the first
|
|
70
74
|
Note that this command only has to be performed when the application is first generated or when the Gemfile is modified.
|
71
75
|
|
72
76
|
The generator framework within padrino is extensible and additional components and tools can be added easily.
|
73
|
-
This would be achieved through forking our project and reading through the code in <tt
|
74
|
-
the setup instructions inside the relevant files within <tt
|
77
|
+
This would be achieved through forking our project and reading through the code in <tt>lib/generators/skeleton.rb</tt> and
|
78
|
+
the setup instructions inside the relevant files within <tt>lib/generators/components/</tt>. We are happy to accept pull requests
|
75
79
|
for additional component types not originally included (although helping us maintain them would also be appreciated).
|
76
80
|
|
77
81
|
=== Model Generator ===
|
data/Rakefile
CHANGED
@@ -8,14 +8,15 @@ begin
|
|
8
8
|
gem.summary = "Generators for easily creating and building padrino applications"
|
9
9
|
gem.description = "Generators for easily creating and building padrino applications from the console"
|
10
10
|
gem.email = "nesquena@gmail.com"
|
11
|
-
gem.homepage = "http://github.com/padrino/padrino-gen"
|
11
|
+
gem.homepage = "http://github.com/padrino/padrino-framework/tree/master/padrino-gen"
|
12
12
|
gem.authors = ["Padrino Team", "Nathan Esquenazi", "Davide D'Agostino", "Arthur Chiu"]
|
13
|
+
gem.executables = ["padrino-gen"]
|
13
14
|
gem.add_runtime_dependency "sinatra", ">= 0.9.2"
|
14
15
|
gem.add_runtime_dependency "padrino-core", ">= 0.1.1"
|
15
16
|
gem.add_runtime_dependency "thor", ">= 0.11.8"
|
16
|
-
gem.add_runtime_dependency "bundler"
|
17
|
+
gem.add_runtime_dependency "bundler", ">= 0.5.0"
|
17
18
|
gem.add_development_dependency "haml", ">= 2.2.1"
|
18
|
-
gem.add_development_dependency "shoulda",
|
19
|
+
gem.add_development_dependency "shoulda", ">= 0"
|
19
20
|
gem.add_development_dependency "mocha", ">= 0.9.7"
|
20
21
|
gem.add_development_dependency "rack-test", ">= 0.5.0"
|
21
22
|
gem.add_development_dependency "webrat", ">= 0.5.1"
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.4
|
data/bin/padrino-gen
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
%w[rubygems
|
2
|
+
%w[rubygems thor].each { |gem| require gem }
|
3
3
|
require File.dirname(__FILE__) + "/../lib/padrino-gen"
|
4
4
|
|
5
|
-
generator_mappings =
|
5
|
+
generator_mappings = SupportLite::OrderedHash.new
|
6
6
|
generator_mappings[:app] = Padrino::Generators::Skeleton
|
7
7
|
generator_mappings[:model] = Padrino::Generators::Model
|
8
8
|
generator_mappings[:controller] = Padrino::Generators::Controller
|
data/lib/generators/actions.rb
CHANGED
@@ -97,7 +97,7 @@ module Padrino
|
|
97
97
|
def component_option(name, caption, options = {})
|
98
98
|
(@component_types ||= []) << name # TODO use ordered hash and combine with choices below
|
99
99
|
(@available_choices ||= Hash.new({}))[name] = options[:choices]
|
100
|
-
description = "The #{caption} component (#{options[:choices].join(', ')})"
|
100
|
+
description = "The #{caption} component (#{options[:choices].join(', ')}, none)"
|
101
101
|
class_option name, :default => options[:choices].first, :aliases => options[:aliases], :desc => description
|
102
102
|
end
|
103
103
|
|
@@ -2,6 +2,12 @@ module Padrino
|
|
2
2
|
module Generators
|
3
3
|
module Components
|
4
4
|
module Actions
|
5
|
+
BASE_TEST_HELPER = (<<-TEST).gsub(/^ {8}/, '')
|
6
|
+
RACK_ENV = 'test' unless defined?(RACK_ENV)
|
7
|
+
require File.dirname(__FILE__) + "/../config/boot"
|
8
|
+
Bundler.require_env(:testing)
|
9
|
+
TEST
|
10
|
+
|
5
11
|
# Adds all the specified gems into the Gemfile for bundler
|
6
12
|
# require_dependencies 'activerecord'
|
7
13
|
# require_dependencies 'mocha', 'bacon', :env => :testing
|
@@ -25,8 +31,9 @@ module Padrino
|
|
25
31
|
# insert_test_suite_setup('...CLASS_NAME...')
|
26
32
|
# => inject_into_file("test/test_config.rb", TEST.gsub(/CLASS_NAME/, @class_name), :after => "set :environment, :test\n")
|
27
33
|
def insert_test_suite_setup(suite_text, options={})
|
28
|
-
|
29
|
-
|
34
|
+
test_helper_text = [BASE_TEST_HELPER, suite_text.gsub(/CLASS_NAME/, @class_name)].join("\n")
|
35
|
+
options.reverse_merge!(:path => "test/test_config.rb")
|
36
|
+
create_file(options[:path], test_helper_text)
|
30
37
|
end
|
31
38
|
|
32
39
|
# Injects the mock library include into the test class in test_config for setting up mock gen
|
@@ -34,6 +41,7 @@ module Padrino
|
|
34
41
|
# => inject_into_file("test/test_config.rb", " include Mocha::API\n", :after => /class.*?\n/)
|
35
42
|
def insert_mocking_include(library_name, options={})
|
36
43
|
options.reverse_merge!(:indent => 2, :after => /class.*?\n/, :path => "test/test_config.rb")
|
44
|
+
return unless File.exist?(File.join(self.destination_root, options[:path]))
|
37
45
|
include_text = indent_spaces(options[:indent]) + "include #{library_name}\n"
|
38
46
|
inject_into_file(options[:path], include_text, :after => options[:after])
|
39
47
|
end
|
@@ -4,13 +4,14 @@ module Padrino
|
|
4
4
|
module Orms
|
5
5
|
|
6
6
|
module DatamapperGen
|
7
|
-
|
8
7
|
DM = (<<-DM).gsub(/^ {10}/, '')
|
9
8
|
module DatabaseSetup
|
10
9
|
def self.registered(app)
|
11
10
|
app.configure(:development) { DataMapper.setup(:default, 'your_dev_db_here') }
|
12
11
|
app.configure(:production) { DataMapper.setup(:default, 'your_production_db_here') }
|
13
12
|
app.configure(:test) { DataMapper.setup(:default, 'your_test_db_here') }
|
13
|
+
rescue ArgumentError => e
|
14
|
+
puts "Database options need to be configured within 'config/database.rb'!" if app.logging?
|
14
15
|
end
|
15
16
|
end
|
16
17
|
DM
|
@@ -18,6 +19,7 @@ module Padrino
|
|
18
19
|
def setup_orm
|
19
20
|
require_dependencies 'dm-core', 'dm-validations'
|
20
21
|
create_file("config/database.rb", DM)
|
22
|
+
empty_directory('app/models')
|
21
23
|
end
|
22
24
|
|
23
25
|
DM_MODEL = (<<-MODEL).gsub(/^ {10}/, '')
|
@@ -28,23 +28,10 @@ module Padrino
|
|
28
28
|
end
|
29
29
|
MONGO
|
30
30
|
|
31
|
-
CONCERNED = (<<-CONCERN).gsub(/^ {10}/, '')
|
32
|
-
module MongoMapper
|
33
|
-
module Document
|
34
|
-
module ClassMethods
|
35
|
-
# TODO find a cleaner way for it to know where to look for dependencies
|
36
|
-
def concerned_with(*concerns)
|
37
|
-
concerns.each { |concern| require_dependency "./app/models/\#{name.underscore}/\#{concern}" }
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
CONCERN
|
43
|
-
|
44
31
|
def setup_orm
|
45
32
|
require_dependencies 'mongo_mapper'
|
46
33
|
create_file("config/database.rb", MONGO)
|
47
|
-
|
34
|
+
empty_directory('app/models')
|
48
35
|
end
|
49
36
|
|
50
37
|
MM_MODEL = (<<-MODEL).gsub(/^ {10}/, '')
|
@@ -19,6 +19,7 @@ module Padrino
|
|
19
19
|
def setup_orm
|
20
20
|
require_dependencies 'sequel'
|
21
21
|
create_file("config/database.rb", SEQUEL)
|
22
|
+
empty_directory('app/models')
|
22
23
|
end
|
23
24
|
|
24
25
|
SQ_MODEL = (<<-MODEL).gsub(/^ {10}/, '')
|
@@ -40,7 +41,6 @@ module Padrino
|
|
40
41
|
create_table :!TABLE! do
|
41
42
|
primary_key :id
|
42
43
|
# <type> <name>
|
43
|
-
text :username, :unique => true, :null => false
|
44
44
|
!FIELDS!
|
45
45
|
end
|
46
46
|
end
|
@@ -2,15 +2,29 @@ module Padrino
|
|
2
2
|
module Generators
|
3
3
|
module Components
|
4
4
|
module Renderers
|
5
|
-
|
5
|
+
|
6
6
|
module HamlGen
|
7
7
|
|
8
|
+
SASS_INIT = (<<-SASS).gsub(/^ {10}/, '')
|
9
|
+
# Enables support for SASS template reloading for rack.
|
10
|
+
# See http://nex-3.com/posts/88-sass-supports-rack for more details.
|
11
|
+
|
12
|
+
module SassInitializer
|
13
|
+
def self.registered(app)
|
14
|
+
require 'sass/plugin/rack'
|
15
|
+
app.use Sass::Plugin::Rack
|
16
|
+
end
|
17
|
+
end
|
18
|
+
SASS
|
19
|
+
|
8
20
|
def setup_renderer
|
9
21
|
require_dependencies 'haml'
|
22
|
+
create_file 'config/initializers/sass.rb', SASS_INIT
|
23
|
+
empty_directory 'public/stylesheets/sass'
|
10
24
|
end
|
11
25
|
end
|
12
|
-
|
26
|
+
|
13
27
|
end
|
14
28
|
end
|
15
29
|
end
|
16
|
-
end
|
30
|
+
end
|
@@ -7,6 +7,7 @@ module Padrino
|
|
7
7
|
def setup_script
|
8
8
|
get("http://prototypejs.org/assets/2009/8/31/prototype.js", "public/javascripts/prototype.js")
|
9
9
|
get('http://github.com/nesquena/lowpro/raw/master/dist/lowpro.js', "public/javascripts/lowpro.js")
|
10
|
+
create_file('public/javascripts/application.js')
|
10
11
|
end
|
11
12
|
end
|
12
13
|
|
data/lib/generators/model.rb
CHANGED
@@ -22,7 +22,6 @@ module Padrino
|
|
22
22
|
# Copies over the base sinatra starting project
|
23
23
|
def create_model
|
24
24
|
if in_app_root?(options[:root])
|
25
|
-
say "Name: #{name}, Fields: #{fields.inspect}"
|
26
25
|
include_component_module_for(:orm, options[:root])
|
27
26
|
include_component_module_for(:test, options[:root])
|
28
27
|
migration_name = "create_#{name.pluralize.underscore}"
|
data/lib/generators/skeleton.rb
CHANGED
@@ -25,7 +25,7 @@ module Padrino
|
|
25
25
|
component_option :script, "javascript library", :aliases => '-s', :choices => [:jquery, :prototype, :rightjs]
|
26
26
|
component_option :renderer, "template engine", :aliases => '-r', :choices => [:erb, :haml]
|
27
27
|
|
28
|
-
# Copies over the base
|
28
|
+
# Copies over the Padrino base application skeleton
|
29
29
|
def setup_skeleton
|
30
30
|
self.destination_root = File.join(path, name)
|
31
31
|
@class_name = name.classify
|
@@ -7,9 +7,14 @@ You can mount additional applications using any of these below:
|
|
7
7
|
Padrino.mount("blog", :app_class => "BlogApp").to('/blog')
|
8
8
|
Padrino.mount("blog", :app_file => "/path/to/blog/app.rb").to('/blog')
|
9
9
|
|
10
|
-
Note that mounted apps by default should be placed into 'apps/app_name'
|
10
|
+
Note that mounted apps by default should be placed into 'apps/app_name'.
|
11
|
+
|
12
|
+
By default, this file simply mounts the core app which was generated with this project.
|
13
|
+
However, the mounted core can be modified as needed:
|
14
|
+
|
15
|
+
Padrino.mount_core(:app_file => "/path/to/file", :app_class => "Blog")
|
11
16
|
|
12
17
|
=end
|
13
18
|
|
14
19
|
# Mounts the core application for this project
|
15
|
-
Padrino.mount_core(
|
20
|
+
Padrino.mount_core("<%= @class_name %>")
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# Define your named routes inside config/urls.rb
|
1
|
+
# Define your named routes inside config/urls.rb or define them inline
|
2
2
|
# You can also use unnamed routes by defining them directly
|
3
3
|
|
4
4
|
<%= @app_name %>.controllers do
|
@@ -6,6 +6,10 @@
|
|
6
6
|
# session[:foo] = "bar"
|
7
7
|
# haml_template 'index'
|
8
8
|
# end
|
9
|
+
|
10
|
+
# get :sample, :map => "/sample/url" do
|
11
|
+
# "Hello world!"
|
12
|
+
# end
|
9
13
|
|
10
14
|
# get "/example" do
|
11
15
|
# "Hello world!"
|
data/lib/padrino-gen.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'padrino-core/support_lite'
|
1
2
|
Dir[File.dirname(__FILE__) + "/generators/{components}/**/*.rb"].each { |lib| require lib }
|
2
3
|
require File.dirname(__FILE__) + "/generators/actions.rb"
|
3
4
|
Dir[File.dirname(__FILE__) + "/generators/{skeleton,mailer,controller,model}.rb"].each { |lib| require lib }
|
data/padrino-gen.gemspec
CHANGED
@@ -5,26 +5,23 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{padrino-gen}
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.4"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Padrino Team", "Nathan Esquenazi", "Davide D'Agostino", "Arthur Chiu"]
|
12
|
-
s.date = %q{2009-11-
|
12
|
+
s.date = %q{2009-11-23}
|
13
13
|
s.default_executable = %q{padrino-gen}
|
14
14
|
s.description = %q{Generators for easily creating and building padrino applications from the console}
|
15
15
|
s.email = %q{nesquena@gmail.com}
|
16
16
|
s.executables = ["padrino-gen"]
|
17
17
|
s.extra_rdoc_files = [
|
18
|
-
"
|
19
|
-
"README.rdoc"
|
18
|
+
"README.rdoc"
|
20
19
|
]
|
21
20
|
s.files = [
|
22
21
|
".document",
|
23
22
|
".gitignore",
|
24
23
|
"LICENSE",
|
25
24
|
"README.rdoc",
|
26
|
-
"README.rdoc",
|
27
|
-
"Rakefile",
|
28
25
|
"Rakefile",
|
29
26
|
"VERSION",
|
30
27
|
"bin/padrino-gen",
|
@@ -57,7 +54,6 @@ Gem::Specification.new do |s|
|
|
57
54
|
"lib/generators/skeleton/app/app.rb.tt",
|
58
55
|
"lib/generators/skeleton/app/controllers/.empty_directory",
|
59
56
|
"lib/generators/skeleton/app/helpers/.empty_directory",
|
60
|
-
"lib/generators/skeleton/app/models/.empty_directory",
|
61
57
|
"lib/generators/skeleton/app/views/.empty_directory",
|
62
58
|
"lib/generators/skeleton/config.ru",
|
63
59
|
"lib/generators/skeleton/config/apps.rb.tt",
|
@@ -69,16 +65,13 @@ Gem::Specification.new do |s|
|
|
69
65
|
"lib/generators/skeleton/public/images/.empty_directory",
|
70
66
|
"lib/generators/skeleton/public/javascripts/.empty_directory",
|
71
67
|
"lib/generators/skeleton/public/stylesheets/.empty_directory",
|
72
|
-
"lib/generators/skeleton/test/test_config.rb.tt",
|
73
68
|
"lib/generators/skeleton/tmp/.emptydirectory",
|
74
|
-
"lib/generators/skeleton/vendor/gems/.empty_directory",
|
75
69
|
"lib/generators/templates/controller.rb.tt",
|
76
70
|
"lib/generators/templates/helper.rb.tt",
|
77
71
|
"lib/generators/templates/mailer.rb.tt",
|
78
72
|
"lib/generators/templates/mailer_initializer.rb.tt",
|
79
73
|
"lib/padrino-gen.rb",
|
80
74
|
"padrino-gen.gemspec",
|
81
|
-
"test/active_support_helpers.rb",
|
82
75
|
"test/helper.rb",
|
83
76
|
"test/test_controller_generator.rb",
|
84
77
|
"test/test_mailer_generator.rb",
|
@@ -86,7 +79,7 @@ Gem::Specification.new do |s|
|
|
86
79
|
"test/test_model_generator.rb",
|
87
80
|
"test/test_skeleton_generator.rb"
|
88
81
|
]
|
89
|
-
s.homepage = %q{http://github.com/padrino/padrino-gen}
|
82
|
+
s.homepage = %q{http://github.com/padrino/padrino-framework/tree/master/padrino-gen}
|
90
83
|
s.rdoc_options = ["--charset=UTF-8"]
|
91
84
|
s.require_paths = ["lib"]
|
92
85
|
s.rubygems_version = %q{1.3.5}
|
@@ -100,7 +93,7 @@ Gem::Specification.new do |s|
|
|
100
93
|
s.add_runtime_dependency(%q<sinatra>, [">= 0.9.2"])
|
101
94
|
s.add_runtime_dependency(%q<padrino-core>, [">= 0.1.1"])
|
102
95
|
s.add_runtime_dependency(%q<thor>, [">= 0.11.8"])
|
103
|
-
s.add_runtime_dependency(%q<bundler>, [">= 0"])
|
96
|
+
s.add_runtime_dependency(%q<bundler>, [">= 0.5.0"])
|
104
97
|
s.add_development_dependency(%q<haml>, [">= 2.2.1"])
|
105
98
|
s.add_development_dependency(%q<shoulda>, [">= 0"])
|
106
99
|
s.add_development_dependency(%q<mocha>, [">= 0.9.7"])
|
@@ -110,7 +103,7 @@ Gem::Specification.new do |s|
|
|
110
103
|
s.add_dependency(%q<sinatra>, [">= 0.9.2"])
|
111
104
|
s.add_dependency(%q<padrino-core>, [">= 0.1.1"])
|
112
105
|
s.add_dependency(%q<thor>, [">= 0.11.8"])
|
113
|
-
s.add_dependency(%q<bundler>, [">= 0"])
|
106
|
+
s.add_dependency(%q<bundler>, [">= 0.5.0"])
|
114
107
|
s.add_dependency(%q<haml>, [">= 2.2.1"])
|
115
108
|
s.add_dependency(%q<shoulda>, [">= 0"])
|
116
109
|
s.add_dependency(%q<mocha>, [">= 0.9.7"])
|
@@ -121,7 +114,7 @@ Gem::Specification.new do |s|
|
|
121
114
|
s.add_dependency(%q<sinatra>, [">= 0.9.2"])
|
122
115
|
s.add_dependency(%q<padrino-core>, [">= 0.1.1"])
|
123
116
|
s.add_dependency(%q<thor>, [">= 0.11.8"])
|
124
|
-
s.add_dependency(%q<bundler>, [">= 0"])
|
117
|
+
s.add_dependency(%q<bundler>, [">= 0.5.0"])
|
125
118
|
s.add_dependency(%q<haml>, [">= 2.2.1"])
|
126
119
|
s.add_dependency(%q<shoulda>, [">= 0"])
|
127
120
|
s.add_dependency(%q<mocha>, [">= 0.9.7"])
|
data/test/helper.rb
CHANGED
@@ -7,14 +7,9 @@ require 'webrat'
|
|
7
7
|
|
8
8
|
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
9
9
|
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
10
|
-
require 'active_support_helpers'
|
11
|
-
require 'padrino-helpers'
|
12
10
|
require 'padrino-gen'
|
13
11
|
|
14
12
|
class Test::Unit::TestCase
|
15
|
-
include Padrino::Helpers::OutputHelpers
|
16
|
-
include Padrino::Helpers::TagHelpers
|
17
|
-
include Padrino::Helpers::AssetTagHelpers
|
18
13
|
include Rack::Test::Methods
|
19
14
|
include Webrat::Methods
|
20
15
|
include Webrat::Matchers
|
@@ -47,7 +42,26 @@ class Test::Unit::TestCase
|
|
47
42
|
raise "Please specify a block!" if html.blank?
|
48
43
|
assert matcher.matches?(html), matcher.failure_message
|
49
44
|
end
|
45
|
+
|
46
|
+
# assert_file_exists('/tmp/app')
|
47
|
+
def assert_file_exists(file_path)
|
48
|
+
assert File.exist?(file_path), "File at path '#{file_path}' does not exist!"
|
49
|
+
end
|
50
|
+
alias assert_dir_exists assert_file_exists
|
51
|
+
|
52
|
+
# assert_no_file_exists('/tmp/app')
|
53
|
+
def assert_no_file_exists(file_path)
|
54
|
+
assert !File.exist?(file_path), "File should not exist at path '#{file_path}' but was found!"
|
55
|
+
end
|
56
|
+
alias assert_no_dir_exists assert_no_file_exists
|
50
57
|
|
58
|
+
# Asserts that a file matches the pattern
|
59
|
+
def assert_match_in_file(pattern, file)
|
60
|
+
File.exist?(file) ? assert_match(pattern, File.read(file)) : assert_file_exists(file)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
class Object
|
51
65
|
# Silences the output by redirecting to stringIO
|
52
66
|
# silence_logger { ...commands... } => "...output..."
|
53
67
|
def silence_logger(&block)
|
@@ -57,12 +71,6 @@ class Test::Unit::TestCase
|
|
57
71
|
$stdout = orig_stdout
|
58
72
|
log_buffer.rewind && log_buffer.read
|
59
73
|
end
|
60
|
-
|
61
|
-
# Asserts that a file matches the pattern
|
62
|
-
def assert_match_in_file(pattern, file)
|
63
|
-
assert File.exist?(file), "File '#{file}' does not exist!"
|
64
|
-
assert_match pattern, File.read(file)
|
65
|
-
end
|
66
74
|
end
|
67
75
|
|
68
76
|
module Webrat
|
@@ -12,7 +12,7 @@ class TestControllerGenerator < Test::Unit::TestCase
|
|
12
12
|
should "fail outside app root" do
|
13
13
|
output = silence_logger { @contgen.start(['demo', '-r=/tmp']) }
|
14
14
|
assert_match(/not at the root/, output)
|
15
|
-
|
15
|
+
assert_no_file_exists('/tmp/app/controllers/demo.rb')
|
16
16
|
end
|
17
17
|
|
18
18
|
should "generate controller within existing application" do
|
@@ -20,7 +20,7 @@ class TestControllerGenerator < Test::Unit::TestCase
|
|
20
20
|
silence_logger { @contgen.start(['demo_items', '-r=/tmp/sample_app']) }
|
21
21
|
assert_match_in_file(/SampleApp.controllers do/m, '/tmp/sample_app/app/controllers/demo_items.rb')
|
22
22
|
assert_match_in_file(/SampleApp.helpers do/m, '/tmp/sample_app/app/helpers/demo_items_helper.rb')
|
23
|
-
|
23
|
+
assert_file_exists('/tmp/sample_app/app/views/demo_items')
|
24
24
|
end
|
25
25
|
|
26
26
|
should "generate controller test for bacon" do
|
@@ -12,7 +12,7 @@ class TestMailerGenerator < Test::Unit::TestCase
|
|
12
12
|
should "fail outside app root" do
|
13
13
|
output = silence_logger { @mailgen.start(['demo', '-r=/tmp']) }
|
14
14
|
assert_match(/not at the root/, output)
|
15
|
-
|
15
|
+
assert_no_file_exists('/tmp/app/mailers/demo_mailer.rb')
|
16
16
|
end
|
17
17
|
|
18
18
|
should "support generating a new mailer extended from base" do
|
@@ -20,7 +20,7 @@ class TestMailerGenerator < Test::Unit::TestCase
|
|
20
20
|
silence_logger { @mailgen.start(['demo', '-r=/tmp/sample_app']) }
|
21
21
|
assert_match_in_file(/class DemoMailer < Padrino::Mailer::Base/m, '/tmp/sample_app/app/mailers/demo_mailer.rb')
|
22
22
|
assert_match_in_file(/Padrino::Mailer::Base.smtp_settings/m, '/tmp/sample_app/config/initializers/mailer.rb')
|
23
|
-
|
23
|
+
assert_file_exists('/tmp/sample_app/app/views/demo_mailer')
|
24
24
|
end
|
25
25
|
|
26
26
|
should "support generating a new mailer extended from base with long name" do
|
@@ -28,7 +28,7 @@ class TestMailerGenerator < Test::Unit::TestCase
|
|
28
28
|
silence_logger { @mailgen.start(['user_notice', '-r=/tmp/sample_app']) }
|
29
29
|
assert_match_in_file(/class UserNoticeMailer/m, '/tmp/sample_app/app/mailers/user_notice_mailer.rb')
|
30
30
|
assert_match_in_file(/Padrino::Mailer::Base.smtp_settings/m, '/tmp/sample_app/config/initializers/mailer.rb')
|
31
|
-
|
31
|
+
assert_file_exists('/tmp/sample_app/app/views/user_notice_mailer')
|
32
32
|
end
|
33
33
|
|
34
34
|
should "support generating a new mailer extended from base with capitalized name" do
|
@@ -36,7 +36,7 @@ class TestMailerGenerator < Test::Unit::TestCase
|
|
36
36
|
silence_logger { @mailgen.start(['DEMO', '-r=/tmp/sample_app']) }
|
37
37
|
assert_match_in_file(/class DemoMailer < Padrino::Mailer::Base/m, '/tmp/sample_app/app/mailers/demo_mailer.rb')
|
38
38
|
assert_match_in_file(/Padrino::Mailer::Base.smtp_settings/m, '/tmp/sample_app/config/initializers/mailer.rb')
|
39
|
-
|
39
|
+
assert_file_exists('/tmp/sample_app/app/views/demo_mailer')
|
40
40
|
end
|
41
41
|
end
|
42
42
|
|
@@ -12,7 +12,7 @@ class TestModelGenerator < Test::Unit::TestCase
|
|
12
12
|
should "fail outside app root" do
|
13
13
|
output = silence_logger { @model_gen.start(['user', '-r=/tmp']) }
|
14
14
|
assert_match(/not at the root/, output)
|
15
|
-
|
15
|
+
assert_no_file_exists('/tmp/app/models/user.rb')
|
16
16
|
end
|
17
17
|
|
18
18
|
should "generate only generate model once" do
|
@@ -10,15 +10,24 @@ class TestSkeletonGenerator < Test::Unit::TestCase
|
|
10
10
|
context 'the skeleton generator' do
|
11
11
|
should "allow simple generator to run and create base_app with no options" do
|
12
12
|
assert_nothing_raised { silence_logger { @skeleton.start(['sample_app', '/tmp', '--script=none']) } }
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
13
|
+
assert_file_exists('/tmp/sample_app')
|
14
|
+
assert_file_exists('/tmp/sample_app/app')
|
15
|
+
assert_file_exists('/tmp/sample_app/config/boot.rb')
|
16
|
+
assert_dir_exists('/tmp/sample_app/app/models')
|
17
|
+
assert_file_exists('/tmp/sample_app/test/test_config.rb')
|
18
|
+
end
|
19
|
+
should "not create models folder if no orm is chosen" do
|
20
|
+
silence_logger { @skeleton.start(['sample_app', '/tmp', '--script=none', '--orm=none']) }
|
21
|
+
assert_no_dir_exists('/tmp/sample_app/app/models')
|
22
|
+
end
|
23
|
+
should "not create tests folder if no test framework is chosen" do
|
24
|
+
silence_logger { @skeleton.start(['sample_app', '/tmp', '--script=none', '--test=none']) }
|
25
|
+
assert_no_dir_exists('/tmp/sample_app/test')
|
17
26
|
end
|
18
27
|
should "place app specific names into correct files" do
|
19
28
|
silence_logger { @skeleton.start(['sample_app', '/tmp', '--script=none']) }
|
20
29
|
assert_match_in_file(/class SampleApp < Padrino::Application/m, '/tmp/sample_app/app/app.rb')
|
21
|
-
assert_match_in_file(/Padrino.mount_core\(
|
30
|
+
assert_match_in_file(/Padrino.mount_core\("SampleApp"\)/m, '/tmp/sample_app/config/apps.rb')
|
22
31
|
assert_match_in_file(/SampleApp.urls do/m, '/tmp/sample_app/config/urls.rb')
|
23
32
|
end
|
24
33
|
should "create components file containing options chosen with defaults" do
|
@@ -81,6 +90,7 @@ class TestSkeletonGenerator < Test::Unit::TestCase
|
|
81
90
|
assert_match /Applying.*?sequel.*?orm/, buffer
|
82
91
|
assert_match_in_file(/gem 'sequel'/, '/tmp/sample_app/Gemfile')
|
83
92
|
assert_match_in_file(/Sequel.connect/, '/tmp/sample_app/config/database.rb')
|
93
|
+
assert_dir_exists('/tmp/sample_app/app/models')
|
84
94
|
end
|
85
95
|
|
86
96
|
should "properly generate for activerecord" do
|
@@ -89,6 +99,7 @@ class TestSkeletonGenerator < Test::Unit::TestCase
|
|
89
99
|
assert_match_in_file(/gem 'activerecord'/, '/tmp/sample_app/Gemfile')
|
90
100
|
assert_match_in_file(/Migrate the database/, '/tmp/sample_app/Rakefile')
|
91
101
|
assert_match_in_file(/ActiveRecord::Base.establish_connection/, '/tmp/sample_app/config/database.rb')
|
102
|
+
assert_dir_exists('/tmp/sample_app/app/models')
|
92
103
|
end
|
93
104
|
|
94
105
|
should "properly generate default for datamapper" do
|
@@ -96,6 +107,7 @@ class TestSkeletonGenerator < Test::Unit::TestCase
|
|
96
107
|
assert_match /Applying.*?datamapper.*?orm/, buffer
|
97
108
|
assert_match_in_file(/gem 'dm-core'/, '/tmp/sample_app/Gemfile')
|
98
109
|
assert_match_in_file(/DataMapper.setup/, '/tmp/sample_app/config/database.rb')
|
110
|
+
assert_dir_exists('/tmp/sample_app/app/models')
|
99
111
|
end
|
100
112
|
|
101
113
|
should "properly generate for mongomapper" do
|
@@ -103,6 +115,7 @@ class TestSkeletonGenerator < Test::Unit::TestCase
|
|
103
115
|
assert_match /Applying.*?mongomapper.*?orm/, buffer
|
104
116
|
assert_match_in_file(/gem 'mongo_mapper'/, '/tmp/sample_app/Gemfile')
|
105
117
|
assert_match_in_file(/MongoMapper.database/, '/tmp/sample_app/config/database.rb')
|
118
|
+
assert_dir_exists('/tmp/sample_app/app/models')
|
106
119
|
end
|
107
120
|
|
108
121
|
should "properly generate for couchrest" do
|
@@ -110,6 +123,7 @@ class TestSkeletonGenerator < Test::Unit::TestCase
|
|
110
123
|
assert_match /Applying.*?couchrest.*?orm/, buffer
|
111
124
|
assert_match_in_file(/gem 'couchrest'/, '/tmp/sample_app/Gemfile')
|
112
125
|
assert_match_in_file(/CouchRest.database!/, '/tmp/sample_app/config/database.rb')
|
126
|
+
assert_dir_exists('/tmp/sample_app/app/models')
|
113
127
|
end
|
114
128
|
end
|
115
129
|
|
@@ -124,6 +138,8 @@ class TestSkeletonGenerator < Test::Unit::TestCase
|
|
124
138
|
buffer = silence_logger { @skeleton.start(['sample_app', '/tmp', '--renderer=haml','--script=none']) }
|
125
139
|
assert_match /Applying.*?haml.*?renderer/, buffer
|
126
140
|
assert_match_in_file(/gem 'haml'/, '/tmp/sample_app/Gemfile')
|
141
|
+
assert_match_in_file(/module SassInitializer.*Sass::Plugin::Rack/m, '/tmp/sample_app/config/initializers/sass.rb')
|
142
|
+
assert_file_exists('/tmp/sample_app/public/stylesheets/sass')
|
127
143
|
end
|
128
144
|
end
|
129
145
|
|
@@ -131,20 +147,23 @@ class TestSkeletonGenerator < Test::Unit::TestCase
|
|
131
147
|
should "properly generate for jquery" do
|
132
148
|
buffer = silence_logger { @skeleton.start(['sample_app', '/tmp', '--script=jquery']) }
|
133
149
|
assert_match /Applying.*?jquery.*?script/, buffer
|
134
|
-
|
150
|
+
assert_file_exists('/tmp/sample_app/public/javascripts/jquery.min.js')
|
151
|
+
assert_file_exists('/tmp/sample_app/public/javascripts/application.js')
|
135
152
|
end
|
136
153
|
|
137
154
|
should "properly generate for prototype" do
|
138
155
|
buffer = silence_logger { @skeleton.start(['sample_app', '/tmp', '--script=prototype']) }
|
139
156
|
assert_match /Applying.*?prototype.*?script/, buffer
|
140
|
-
|
141
|
-
|
157
|
+
assert_file_exists('/tmp/sample_app/public/javascripts/prototype.js')
|
158
|
+
assert_file_exists('/tmp/sample_app/public/javascripts/lowpro.js')
|
159
|
+
assert_file_exists('/tmp/sample_app/public/javascripts/application.js')
|
142
160
|
end
|
143
161
|
|
144
162
|
should "properly generate for rightjs" do
|
145
163
|
buffer = silence_logger { @skeleton.start(['sample_app', '/tmp', '--script=rightjs']) }
|
146
164
|
assert_match /Applying.*?rightjs.*?script/, buffer
|
147
|
-
|
165
|
+
assert_file_exists('/tmp/sample_app/public/javascripts/right-min.js')
|
166
|
+
assert_file_exists('/tmp/sample_app/public/javascripts/application.js')
|
148
167
|
end
|
149
168
|
end
|
150
169
|
|
@@ -153,6 +172,7 @@ class TestSkeletonGenerator < Test::Unit::TestCase
|
|
153
172
|
buffer = silence_logger { @skeleton.start(['sample_app', '/tmp', '--test=bacon', '--script=none']) }
|
154
173
|
assert_match /Applying.*?bacon.*?test/, buffer
|
155
174
|
assert_match_in_file(/gem 'bacon'/, '/tmp/sample_app/Gemfile')
|
175
|
+
assert_match_in_file(/Bundler.require_env\(:testing\)/, '/tmp/sample_app/test/test_config.rb')
|
156
176
|
assert_match_in_file(/Bacon::Context/, '/tmp/sample_app/test/test_config.rb')
|
157
177
|
end
|
158
178
|
|
@@ -160,6 +180,7 @@ class TestSkeletonGenerator < Test::Unit::TestCase
|
|
160
180
|
buffer = silence_logger { @skeleton.start(['sample_app', '/tmp', '--test=riot', '--script=none']) }
|
161
181
|
assert_match /Applying.*?riot.*?test/, buffer
|
162
182
|
assert_match_in_file(/gem 'riot'/, '/tmp/sample_app/Gemfile')
|
183
|
+
assert_match_in_file(/Bundler.require_env\(:testing\)/, '/tmp/sample_app/test/test_config.rb')
|
163
184
|
assert_match_in_file(/Riot::Situation/, '/tmp/sample_app/test/test_config.rb')
|
164
185
|
end
|
165
186
|
|
@@ -167,6 +188,7 @@ class TestSkeletonGenerator < Test::Unit::TestCase
|
|
167
188
|
buffer = silence_logger { @skeleton.start(['sample_app', '/tmp', '--test=rspec', '--script=none']) }
|
168
189
|
assert_match /Applying.*?rspec.*?test/, buffer
|
169
190
|
assert_match_in_file(/gem 'spec'/, '/tmp/sample_app/Gemfile')
|
191
|
+
assert_match_in_file(/Bundler.require_env\(:testing\)/, '/tmp/sample_app/test/test_config.rb')
|
170
192
|
assert_match_in_file(/Spec::Runner/, '/tmp/sample_app/test/test_config.rb')
|
171
193
|
end
|
172
194
|
|
@@ -174,6 +196,7 @@ class TestSkeletonGenerator < Test::Unit::TestCase
|
|
174
196
|
buffer = silence_logger { @skeleton.start(['sample_app', '/tmp', '--test=shoulda', '--script=none']) }
|
175
197
|
assert_match /Applying.*?shoulda.*?test/, buffer
|
176
198
|
assert_match_in_file(/gem 'shoulda'/, '/tmp/sample_app/Gemfile')
|
199
|
+
assert_match_in_file(/Bundler.require_env\(:testing\)/, '/tmp/sample_app/test/test_config.rb')
|
177
200
|
assert_match_in_file(/Test::Unit::TestCase/, '/tmp/sample_app/test/test_config.rb')
|
178
201
|
end
|
179
202
|
|
@@ -181,6 +204,7 @@ class TestSkeletonGenerator < Test::Unit::TestCase
|
|
181
204
|
buffer = silence_logger { @skeleton.start(['sample_app', '/tmp', '--test=testspec', '--script=none']) }
|
182
205
|
assert_match /Applying.*?testspec.*?test/, buffer
|
183
206
|
assert_match_in_file(/gem 'test\/spec'/, '/tmp/sample_app/Gemfile')
|
207
|
+
assert_match_in_file(/Bundler.require_env\(:testing\)/, '/tmp/sample_app/test/test_config.rb')
|
184
208
|
assert_match_in_file(/Test::Unit::TestCase/, '/tmp/sample_app/test/test_config.rb')
|
185
209
|
end
|
186
210
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: padrino-gen
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Padrino Team
|
@@ -12,7 +12,7 @@ autorequire:
|
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
14
|
|
15
|
-
date: 2009-11-
|
15
|
+
date: 2009-11-23 00:00:00 -08:00
|
16
16
|
default_executable: padrino-gen
|
17
17
|
dependencies:
|
18
18
|
- !ruby/object:Gem::Dependency
|
@@ -53,7 +53,7 @@ dependencies:
|
|
53
53
|
requirements:
|
54
54
|
- - ">="
|
55
55
|
- !ruby/object:Gem::Version
|
56
|
-
version:
|
56
|
+
version: 0.5.0
|
57
57
|
version:
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: haml
|
@@ -112,7 +112,6 @@ executables:
|
|
112
112
|
extensions: []
|
113
113
|
|
114
114
|
extra_rdoc_files:
|
115
|
-
- LICENSE
|
116
115
|
- README.rdoc
|
117
116
|
files:
|
118
117
|
- .document
|
@@ -151,7 +150,6 @@ files:
|
|
151
150
|
- lib/generators/skeleton/app/app.rb.tt
|
152
151
|
- lib/generators/skeleton/app/controllers/.empty_directory
|
153
152
|
- lib/generators/skeleton/app/helpers/.empty_directory
|
154
|
-
- lib/generators/skeleton/app/models/.empty_directory
|
155
153
|
- lib/generators/skeleton/app/views/.empty_directory
|
156
154
|
- lib/generators/skeleton/config.ru
|
157
155
|
- lib/generators/skeleton/config/apps.rb.tt
|
@@ -163,16 +161,13 @@ files:
|
|
163
161
|
- lib/generators/skeleton/public/images/.empty_directory
|
164
162
|
- lib/generators/skeleton/public/javascripts/.empty_directory
|
165
163
|
- lib/generators/skeleton/public/stylesheets/.empty_directory
|
166
|
-
- lib/generators/skeleton/test/test_config.rb.tt
|
167
164
|
- lib/generators/skeleton/tmp/.emptydirectory
|
168
|
-
- lib/generators/skeleton/vendor/gems/.empty_directory
|
169
165
|
- lib/generators/templates/controller.rb.tt
|
170
166
|
- lib/generators/templates/helper.rb.tt
|
171
167
|
- lib/generators/templates/mailer.rb.tt
|
172
168
|
- lib/generators/templates/mailer_initializer.rb.tt
|
173
169
|
- lib/padrino-gen.rb
|
174
170
|
- padrino-gen.gemspec
|
175
|
-
- test/active_support_helpers.rb
|
176
171
|
- test/helper.rb
|
177
172
|
- test/test_controller_generator.rb
|
178
173
|
- test/test_mailer_generator.rb
|
@@ -180,7 +175,7 @@ files:
|
|
180
175
|
- test/test_model_generator.rb
|
181
176
|
- test/test_skeleton_generator.rb
|
182
177
|
has_rdoc: true
|
183
|
-
homepage: http://github.com/padrino/padrino-gen
|
178
|
+
homepage: http://github.com/padrino/padrino-framework/tree/master/padrino-gen
|
184
179
|
licenses: []
|
185
180
|
|
186
181
|
post_install_message:
|
File without changes
|
File without changes
|