padrino-gen 0.9.1 → 0.9.2

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc CHANGED
@@ -7,7 +7,8 @@ Padrino comes preloaded with flexible code generators powered in part by the exc
7
7
  both in creating new applications and building on existing ones. The generators have been built to be as library agnostic
8
8
  as possible, supporting a myriad of test frameworks, js libraries, mocking libraries, etc.
9
9
 
10
- See the wiki article for additional information: <...WIKI...>
10
+ See the guide for {Padrino Generators}[http://wiki.github.com/padrino/padrino-framework/generators] for a
11
+ more in-depth look at the system.
11
12
 
12
13
  === Application Generator
13
14
 
@@ -19,14 +20,6 @@ to using Padrino.
19
20
  One important feature of the generators is that they were built from the ground up to support a wide variety
20
21
  of tools, libraries and gems for use within your padrino application.
21
22
 
22
- This means that Padrino generators do *not* lock you into using any particular database, ORM, testing framework,
23
- templating engine or javascript library. In fact, when generating an application you can actually tell
24
- Padrino which components you would like to use!
25
-
26
- The usage for the project generator is quite simple:
27
-
28
- $ padrino-gen project <the_app_name> </path/to/create/app> --<component-name> <value>
29
-
30
23
  The simplest possible command to generate a base application would be:
31
24
 
32
25
  $ padrino-gen project demo_project
@@ -35,11 +28,7 @@ This would construct a Padrino application DemoApp (which extends from Padrino::
35
28
  inside the folder 'demo_project' at our current path. Inside the application there would be configuration and
36
29
  setup performed for the default components.
37
30
 
38
- You can also define specific components to be used:
39
-
40
- $ padrino-gen project demo_project --test rspec --renderer haml --mock rr --script jquery --orm datamapper
41
-
42
- There is also support for aliases for each component within the command:
31
+ You can define specific components to be used:
43
32
 
44
33
  $ padrino-gen project demo_project -t rspec -r haml -m rr -s jquery -d datamapper
45
34
 
@@ -49,25 +38,14 @@ You can also instruct the generator to skip a certain component to avoid using o
49
38
 
50
39
  The available components and their default options are listed below:
51
40
 
52
- test:: rspec (default), bacon, shoulda, testspec, riot
41
+ test:: rspec (default), bacon, shoulda, cucumber, testspec, riot
53
42
  renderer:: haml (default), erb
54
- mock:: none (default), rr
55
- script:: none (default), prototype, rightjs
56
- orm:: none (default), mongomapper, activerecord, sequel, couchrest
57
-
58
- The generator uses the <tt>bundler</tt> gem to resolve any application dependencies when the application is newly created.
59
- The necessary bundler command can be executed automatically through the generator with
43
+ mock:: none (default), mocha, rr
44
+ script:: none (default), jquery, prototype, mootools, rightjs
45
+ orm:: none (default), mongomapper, mongoid, activerecord, sequel, couchrest
60
46
 
61
- $ padrino-gen project demo_project --run_bundler # alias -b
62
-
63
- or this can be done manually through executing command <tt>gem bundle</tt> in the terminal at the root of the generated application.
64
- If not executed manually, the bundling will be performed automatically the first time the application attempts to boot.
65
- Note that this command only has to be performed when the application is first generated or when the Gemfile is modified.
66
-
67
- The generator framework within padrino is extensible and additional components and tools can be added easily.
68
- This would be achieved through forking our project and reading through the code in <tt>lib/generators/App.rb</tt> and
69
- the setup instructions inside the relevant files within <tt>lib/generators/components/</tt>. We are happy to accept pull requests
70
- for additional component types not originally included (although helping us maintain them would also be appreciated).
47
+ To learn more about the project generator, check out the guide to
48
+ {Padrino Generators}[http://wiki.github.com/padrino/padrino-framework/generators].
71
49
 
72
50
  === Sub App Generator
73
51
 
@@ -90,6 +68,9 @@ By default these apps are mounted under:
90
68
 
91
69
  but you can edit config/apps.rb and change it.
92
70
 
71
+ To learn more about the subapp generator, check out the guide to
72
+ {Padrino Generators}[http://wiki.github.com/padrino/padrino-framework/generators].
73
+
93
74
  === Model Generator
94
75
 
95
76
  Padrino provides generator support for quickly creating new models within your Padrino application. Note that
@@ -108,20 +89,8 @@ You can also specify desired fields to be contained within your User model:
108
89
 
109
90
  $ padrino-gen model User name:string age:integer email:string
110
91
 
111
- The model generator will create multiple files within your application and based on your ORM component.
112
- Usually the model file will generate files similar to the following:
113
-
114
- * model definition file [app/models/user.rb]
115
- * migration declaration [db/migrate/xxx_create_users.rb]
116
- * model unit test file [test/models/user_test.rb]
117
-
118
- You can define as many models as you would like in a Padrino application using this generator.
119
-
120
- You can destroy models that you created via the destroy option and setting it to true. default is false.
121
-
122
- $ padrino-gen model User -d
123
-
124
- This remove all created model files.
92
+ To learn more about the model generator, check out the guide to
93
+ {Padrino Generators}[http://wiki.github.com/padrino/padrino-framework/generators].
125
94
 
126
95
  === Migration Generator
127
96
 
@@ -137,19 +106,8 @@ Using the migration generator is as simple as:
137
106
  $ padrino-gen migration AddFieldsToUsers
138
107
  $ padrino-gen migration RemoveFieldsFromUsers
139
108
 
140
- You can also specify desired columns to be added to the migration file:
141
-
142
- $ padrino-gen migration AddFieldsToUsers last_login:datetime crypted_password:string
143
- $ padrino-gen migration RemoveFieldsFromUsers password:string ip_address:string
144
-
145
- The migration generator will then construct the migration file according to your ORM component chosen
146
- within <tt>db/migrate/xxx_add_fields_to_users.rb</tt> including the columns specified in the command.
147
-
148
- You can destroy migrations that you created via the destroy option and setting it to true. default is false.
149
-
150
- $ padrino-gen migration AddFieldsToUsers -d
151
-
152
- This removes the migration file.
109
+ To learn more about the migration generator, check out the guide to
110
+ {Padrino Generators}[http://wiki.github.com/padrino/padrino-framework/generators].
153
111
 
154
112
  === Controller Generator
155
113
 
@@ -163,28 +121,13 @@ created through the Padrino application generator and that follow Padrino conven
163
121
  Using the controller generator is as simple as:
164
122
 
165
123
  $ padrino-gen controller Admin
166
-
167
- If you want create a controller for a specified sub app you can:
168
-
169
- $ padrino-gen controller Admin -a my_sub_app
170
124
 
171
125
  You can also specify desired actions to be added to your controller:
172
126
 
173
127
  $ padrino-gen controller Admin get:index get:new post:create
174
128
 
175
- The controller generator will then construct the controller file within <tt>app/controllers/admin.rb</tt>
176
- and also a controller test file at <tt>test/controllers/admin_controller_test.rb</tt> according to the
177
- test framework chosen during app generation. A default route will also be generated mapping to name of the controller and the route name. For example:
178
-
179
- $ padrino-gen controller User get:index
180
-
181
- will create a url route for :index mapping to "/user/index"
182
-
183
- You can destroy controllers that you created via the destroy option and setting it to true. default is false.
184
-
185
- $ padrino-gen controller User -d
186
-
187
- This removes all created controller files.
129
+ To learn more about the controller generator, check out the guide to
130
+ {Padrino Generators}[http://wiki.github.com/padrino/padrino-framework/generators].
188
131
 
189
132
  === Mailer Generator
190
133
 
@@ -196,21 +139,8 @@ Using the mailer generator is as simple as:
196
139
 
197
140
  $ padrino-gen mailer UserNotifier
198
141
 
199
- If you want create a mailer for a specified sub app you can:
200
-
201
- $ padrino-gen mailer UserNotifier -a my_sub_app
202
-
203
- You can also specify desired delivery actions to be added to the mailer:
204
-
205
- $ padrino-gen mailer UserNotifier confirm_account welcome inactive_account
206
-
207
- The mailer generator will then construct the mailer file within <tt>app/mailers/user_notifier.rb</tt>
208
-
209
- You can destroy mailer that you created via the destroy option and setting it to true. default is false.
210
-
211
- $ padrino-gen mailer UserNotifer -d
212
-
213
- This remove all created mailer files.
142
+ To learn more about the mailer generator, check out the guide to
143
+ {Padrino Generators}[http://wiki.github.com/padrino/padrino-framework/generators].
214
144
 
215
145
  == Copyright
216
146
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.9.1
1
+ 0.9.2
@@ -4,7 +4,7 @@ require 'padrino-core/support_lite'
4
4
  module Padrino
5
5
  module Generators
6
6
  ##
7
- # This class bootstrap +config/boot+ and perform +Padrino::Generators.lockup!+ for handle
7
+ # This class bootstrap +config/boot+ and perform +Padrino::Generators.load_components!+ for handle
8
8
  # 3rd party generators
9
9
  #
10
10
  class Cli < Thor::Group
@@ -31,7 +31,7 @@ module Padrino
31
31
  end
32
32
 
33
33
  def setup
34
- Padrino::Generators.lockup!
34
+ Padrino::Generators.load_components!
35
35
 
36
36
  generator_kind = ARGV.delete_at(0).to_s.downcase.to_sym if ARGV[0].present?
37
37
  generator_class = Padrino::Generators.mappings[generator_kind]
@@ -2,11 +2,6 @@ module Padrino
2
2
  module Generators
3
3
  module Components
4
4
  module Actions
5
- BASE_TEST_HELPER = (<<-TEST).gsub(/^ {8}/, '')
6
- PADRINO_ENV = 'test' unless defined?(PADRINO_ENV)
7
- require File.dirname(__FILE__) + "/../config/boot"
8
- TEST
9
-
10
5
  # For orm database components
11
6
  # Generates the model migration file created when generating a new model
12
7
  # options => { :base => "....text...", :up => "..text...",
@@ -89,9 +84,8 @@ module Padrino
89
84
  # insert_test_suite_setup('...CLASS_NAME...')
90
85
  # => inject_into_file("test/test_config.rb", TEST.gsub(/CLASS_NAME/, @class_name), :after => "set :environment, :test")
91
86
  def insert_test_suite_setup(suite_text, options={})
92
- test_helper_text = [BASE_TEST_HELPER, suite_text.gsub(/CLASS_NAME/, @class_name)].join("\n")
93
87
  options.reverse_merge!(:path => "test/test_config.rb")
94
- create_file(options[:path], test_helper_text)
88
+ create_file(options[:path], suite_text.gsub(/CLASS_NAME/, @class_name))
95
89
  end
96
90
 
97
91
  # For mocking components
@@ -7,16 +7,16 @@ module Padrino
7
7
 
8
8
  COUCHREST = (<<-COUCHREST).gsub(/^ {10}/, '')
9
9
  case Padrino.env
10
- when :development then COUCHDB = "your_db_name_development"
11
- when :production then COUCHDB = "your_db_name_production"
12
- when :test then COUCHDB = "your_db_name_test"
10
+ when :development then COUCHDB = '!NAME!_name_development'
11
+ when :production then COUCHDB = '!NAME!_name_production'
12
+ when :test then COUCHDB = '!NAME!_name_test'
13
13
  end
14
14
  CouchRest.database!(COUCHDB)
15
15
  COUCHREST
16
16
 
17
17
  def setup_orm
18
18
  require_dependencies 'couchrest'
19
- create_file("config/database.rb", COUCHREST)
19
+ create_file("config/database.rb", COUCHREST.gsub(/!NAME!/, name.underscore))
20
20
  empty_directory('app/models')
21
21
  end
22
22
 
@@ -0,0 +1,81 @@
1
+ module Padrino
2
+ module Generators
3
+ module Components
4
+ module Orms
5
+
6
+ module MongoidGen
7
+
8
+ MONGOID = (<<-MONGO).gsub(/^ {10}/, '')
9
+
10
+ # Connection.new takes host, port
11
+ host = 'localhost'
12
+ port = Mongo::Connection::DEFAULT_PORT
13
+
14
+ database_name = case Padrino.env
15
+ when :development then '!NAME!_development'
16
+ when :production then '!NAME!_production'
17
+ when :test then '!NAME!_test'
18
+ end
19
+
20
+ Mongoid.database = Mongo::Connection.new(host, port).db(database_name)
21
+
22
+ # You can also configure Mongoid this way
23
+ # Mongoid.configure do |config|
24
+ # name = @settings["database"]
25
+ # host = @settings["host"]
26
+ # config.master = Mongo::Connection.new.db(name)
27
+ # config.slaves = [
28
+ # Mongo::Connection.new(host, @settings["slave_one"]["port"], :slave_ok => true).db(name),
29
+ # Mongo::Connection.new(host, @settings["slave_two"]["port"], :slave_ok => true).db(name)
30
+ # ]
31
+ # end
32
+ #
33
+ # More installation and setup notes are on http://mongoid.org/docs/
34
+ MONGO
35
+
36
+ def setup_orm
37
+ require_dependencies 'mongo_ext', :require => 'mongo'
38
+ require_dependencies 'mongoid'
39
+ create_file("config/database.rb", MONGOID.gsub(/!NAME!/, name.underscore))
40
+ empty_directory('app/models')
41
+ end
42
+
43
+ MONGOID_MODEL = (<<-MODEL).gsub(/^ {10}/, '')
44
+ class !NAME!
45
+ include Mongoid::Document
46
+ include Mongoid::Timestamps # adds created_at and updated_at fields
47
+
48
+ # field <name>, :type => <type>, :default => <value>
49
+ !FIELDS!
50
+
51
+ # You can define indexes on documents using the index macro:
52
+ # index :field <, :unique => true>
53
+
54
+ # You can create a composite key in mongoid to replace the default id using the key macro:
55
+ # key :field <, :another_field, :one_more ....>
56
+
57
+ end
58
+ MODEL
59
+
60
+ def create_model_file(name, fields)
61
+ model_path = destination_root('app/models/', "#{name.to_s.underscore}.rb")
62
+ field_tuples = fields.collect { |value| value.split(":") }
63
+ column_declarations = field_tuples.collect { |field, kind| "field :#{field}, :type => #{kind.camelize}" }.join("\n ")
64
+ model_contents = MONGOID_MODEL.gsub(/!NAME!/, name.to_s.camelize)
65
+ model_contents.gsub!(/!FIELDS!/, column_declarations)
66
+ create_file(model_path, model_contents)
67
+ end
68
+
69
+ def create_model_migration(filename, name, fields)
70
+ # NO MIGRATION NEEDED
71
+ end
72
+
73
+ def create_migration_file(migration_name, name, columns)
74
+ # NO MIGRATION NEEDED
75
+ end
76
+ end
77
+
78
+ end
79
+ end
80
+ end
81
+ end
@@ -9,15 +9,16 @@ module Padrino
9
9
  MongoMapper.connection = Mongo::Connection.new('localhost', nil, :logger => logger)
10
10
 
11
11
  case Padrino.env
12
- when :development then MongoMapper.database = 'your_db_development'
13
- when :production then MongoMapper.database = 'your_db_production'
14
- when :test then MongoMapper.database = 'your_db_test'
12
+ when :development then MongoMapper.database = '!NAME!_development'
13
+ when :production then MongoMapper.database = '!NAME!_production'
14
+ when :test then MongoMapper.database = '!NAME!_test'
15
15
  end
16
16
  MONGO
17
17
 
18
18
  def setup_orm
19
+ require_dependencies 'mongo_ext', :require => 'mongo'
19
20
  require_dependencies 'mongo_mapper'
20
- create_file("config/database.rb", MONGO)
21
+ create_file("config/database.rb", MONGO.gsub(/!NAME!/, name.underscore))
21
22
  empty_directory('app/models')
22
23
  end
23
24
 
@@ -7,19 +7,27 @@ module Padrino
7
7
 
8
8
  SASS_INIT = (<<-SASS).gsub(/^ {10}/, '')
9
9
  # Enables support for SASS template reloading for rack.
10
+ # Store SASS files by default within 'public/stylesheets/sass'
10
11
  # See http://nex-3.com/posts/88-sass-supports-rack for more details.
11
12
 
12
13
  module SassInitializer
13
14
  def self.registered(app)
14
15
  require 'sass/plugin/rack'
16
+ Sass::Plugin.options[:template_location] = File.join(Padrino.root, "app/stylesheets")
17
+ Sass::Plugin.options[:css_location] = File.join(Padrino.root, "public/stylesheets")
15
18
  app.use Sass::Plugin::Rack
16
19
  end
17
20
  end
18
21
  SASS
19
22
 
23
+ SASS_REGISTER = (<<-SASSR).gsub(/^ {10}/, '')
24
+ register SassInitializer # Remove if not using SASS\n
25
+ SASSR
26
+
20
27
  def setup_renderer
21
28
  require_dependencies 'haml'
22
29
  create_file destination_root('/lib/sass.rb'), SASS_INIT
30
+ inject_into_file destination_root('/app/app.rb'), SASS_REGISTER, :after => "configure do\n"
23
31
  end
24
32
  end
25
33
 
@@ -0,0 +1,16 @@
1
+ module Padrino
2
+ module Generators
3
+ module Components
4
+ module Scripts
5
+
6
+ module MootoolsGen
7
+ def setup_script
8
+ copy_file('templates/scripts/mootools-core.js', destination_root("/public/javascripts/mootools-core.js"))
9
+ create_file(destination_root('/public/javascripts/application.js'), "// Put your application scripts here")
10
+ end
11
+ end
12
+
13
+ end
14
+ end
15
+ end
16
+ end
@@ -5,6 +5,9 @@ module Padrino
5
5
 
6
6
  module BaconGen
7
7
  BACON_SETUP = (<<-TEST).gsub(/^ {10}/, '')
8
+ PADRINO_ENV = 'test' unless defined?(PADRINO_ENV)
9
+ require File.dirname(__FILE__) + "/../config/boot"
10
+
8
11
  class Bacon::Context
9
12
  include Rack::Test::Methods
10
13
  end
@@ -0,0 +1,77 @@
1
+ require 'padrino-gen/generators/components/tests/rspec_test_gen'
2
+
3
+ module Padrino
4
+ module Generators
5
+ module Components
6
+ module Tests
7
+ module CucumberGen
8
+ include Padrino::Generators::Components::Tests::RspecGen
9
+
10
+ CUCUMBER_SETUP = (<<-TEST).gsub(/^ {10}/, '')
11
+ PADRINO_ENV = 'test' unless defined?(PADRINO_ENV)
12
+ require File.dirname(__FILE__) + "/../../config/boot"
13
+
14
+ require 'capybara/cucumber'
15
+ require 'spec/expectations'
16
+
17
+ # Sinatra < 1.0 always disable sessions for test env
18
+ # so if you need them it's necessary to force the use
19
+ # of Rack::Session::Cookie
20
+ Capybara.app = CLASS_NAME.tap { |app| app.use Rack::Session::Cookie }
21
+ # You can handle all padrino applications instead using:
22
+ # Capybara.app = Padrino.application
23
+ TEST
24
+
25
+ CUCUMBER_YML = (<<-TEST).gsub(/^ {10}/, '')
26
+ default: --tags ~@wip --strict features
27
+ html_report: --tags ~@wip --strict --format html --out=features_report.html features
28
+ TEST
29
+
30
+ CUCUMBER_FEATURE = (<<-TEST).gsub(/^ {10}/, '')
31
+ Feature: Addition
32
+ In order to avoid silly mistakes
33
+ As a math idiot
34
+ I want to be told the sum of two numbers
35
+
36
+ Scenario: Add two numbers
37
+ Given I visit the calculator page
38
+ And I fill in '50' for 'first'
39
+ And I fill in '70' for 'second'
40
+ When I press 'Add'
41
+ Then I should see 'Answer: 120'
42
+ TEST
43
+
44
+ CUCUMBER_STEP = (<<-TEST).gsub(/^ {10}/, '')
45
+ Given /^I visit the calculator page$/ do
46
+ visit '/add'
47
+ end
48
+
49
+ Given /^I fill in '(.*)' for '(.*)'$/ do |value, field|
50
+ fill_in(field, :with => value)
51
+ end
52
+
53
+ When /^I press '(.*)'$/ do |name|
54
+ click_button(name)
55
+ end
56
+
57
+ Then /^I should see '(.*)'$/ do |text|
58
+ response_body.should contain(/#\{text}/m)
59
+ end
60
+ TEST
61
+
62
+ def setup_test_with_cucumber
63
+ require_dependencies 'cucumber', :group => 'test'
64
+ require_dependencies 'capybara', :group => 'test'
65
+ insert_test_suite_setup CUCUMBER_SETUP, :path => "features/support/env.rb"
66
+ create_file destination_root("features/add.feature"), CUCUMBER_FEATURE
67
+ create_file destination_root("features/step_definitions/add_steps.rb"), CUCUMBER_STEP
68
+ create_file destination_root("cucumber.yml"), CUCUMBER_YML
69
+ setup_test_without_cucumber
70
+ end
71
+
72
+ alias_method_chain :setup_test, :cucumber
73
+ end
74
+ end
75
+ end
76
+ end
77
+ end
@@ -5,6 +5,9 @@ module Padrino
5
5
 
6
6
  module RiotGen
7
7
  RIOT_SETUP = (<<-TEST).gsub(/^ {10}/, '')
8
+ PADRINO_ENV = 'test' unless defined?(PADRINO_ENV)
9
+ require File.dirname(__FILE__) + "/../config/boot"
10
+
8
11
  class Riot::Situation
9
12
  include Rack::Test::Methods
10
13
 
@@ -2,56 +2,67 @@ module Padrino
2
2
  module Generators
3
3
  module Components
4
4
  module Tests
5
-
6
5
  module RspecGen
7
- RSPEC_SETUP = (<<-TEST).gsub(/^ {10}/, '')
8
- Spec::Runner.configure do |conf|
9
- conf.include Rack::Test::Methods
10
- end
11
6
 
12
- def app
13
- # Sinatra < 1.0 always disable sessions for test env
14
- # so if you need them it's necessary force the use
15
- # of Rack::Session::Cookie
16
- CLASS_NAME.tap { |app| app.use Rack::Session::Cookie }
17
- # You can hanlde all padrino applications using instead:
18
- # Padrino.application
19
- end
20
- TEST
7
+ unless defined?(RSPEC_SETUP)
8
+ RSPEC_SETUP = (<<-TEST).gsub(/^ {12}/, '')
9
+ PADRINO_ENV = 'test' unless defined?(PADRINO_ENV)
10
+ require File.dirname(__FILE__) + "/../config/boot"
21
11
 
22
- RSPEC_CONTROLLER_TEST = (<<-TEST).gsub(/^ {10}/, '')
23
- require File.dirname(__FILE__) + '/../spec_helper.rb'
12
+ Spec::Runner.configure do |conf|
13
+ conf.include Rack::Test::Methods
14
+ end
24
15
 
25
- describe "!NAME!Controller" do
26
- before do
27
- get "/"
16
+ def app
17
+ # Sinatra < 1.0 always disable sessions for test env
18
+ # so if you need them it's necessary force the use
19
+ # of Rack::Session::Cookie
20
+ CLASS_NAME.tap { |app| app.use Rack::Session::Cookie }
21
+ # You can hanlde all padrino applications using instead:
22
+ # Padrino.application
28
23
  end
24
+ TEST
25
+ end
26
+
27
+ unless defined?(RSPEC_CONTROLLER_TEST)
28
+ RSPEC_CONTROLLER_TEST = (<<-TEST).gsub(/^ {12}/, '')
29
+ require File.dirname(__FILE__) + '/../spec_helper.rb'
29
30
 
30
- it "returns hello world" do
31
- last_response.body.should == "Hello World"
31
+ describe "!NAME!Controller" do
32
+ before do
33
+ get "/"
34
+ end
35
+
36
+ it "returns hello world" do
37
+ last_response.body.should == "Hello World"
38
+ end
32
39
  end
40
+ TEST
33
41
  end
34
- TEST
35
42
 
36
- RSPEC_RAKE = (<<-TEST).gsub(/^ {10}/, '')
37
- require 'spec/rake/spectask'
43
+ unless defined?(RSPEC_RAKE)
44
+ RSPEC_RAKE = (<<-TEST).gsub(/^ {12}/, '')
45
+ require 'spec/rake/spectask'
38
46
 
39
- Spec::Rake::SpecTask.new(:spec) do |t|
40
- t.spec_opts = ['--options', "spec/spec.opts"]
41
- t.spec_files = Dir['**/*_spec.rb']
47
+ Spec::Rake::SpecTask.new(:spec) do |t|
48
+ t.spec_opts = ['--options', "spec/spec.opts"]
49
+ t.spec_files = Dir['**/*_spec.rb']
50
+ end
51
+ TEST
42
52
  end
43
- TEST
44
53
 
45
- RSPEC_MODEL_TEST = (<<-TEST).gsub(/^ {10}/, '')
46
- require File.dirname(__FILE__) + '/../spec_helper.rb'
54
+ unless defined?(RSPEC_MODEL_TEST)
55
+ RSPEC_MODEL_TEST = (<<-TEST).gsub(/^ {12}/, '')
56
+ require File.dirname(__FILE__) + '/../spec_helper.rb'
47
57
 
48
- describe "!NAME! Model" do
49
- it 'can be created' do
50
- @!DNAME! = !NAME!.new
51
- @!DNAME!.should.not.be nil
58
+ describe "!NAME! Model" do
59
+ it 'can be created' do
60
+ @!DNAME! = !NAME!.new
61
+ @!DNAME!.should_not be_nil
62
+ end
52
63
  end
64
+ TEST
53
65
  end
54
- TEST
55
66
 
56
67
  def setup_test
57
68
  require_dependencies 'rspec', :require => 'spec', :group => 'test'
@@ -5,6 +5,9 @@ module Padrino
5
5
 
6
6
  module ShouldaGen
7
7
  SHOULDA_SETUP = (<<-TEST).gsub(/^ {10}/, '')
8
+ PADRINO_ENV = 'test' unless defined?(PADRINO_ENV)
9
+ require File.dirname(__FILE__) + "/../config/boot"
10
+
8
11
  class Test::Unit::TestCase
9
12
  include Rack::Test::Methods
10
13
 
@@ -5,6 +5,9 @@ module Padrino
5
5
 
6
6
  module TestspecGen
7
7
  TESTSPEC_SETUP = (<<-TEST).gsub(/^ {10}/, '')
8
+ PADRINO_ENV = 'test' unless defined?(PADRINO_ENV)
9
+ require File.dirname(__FILE__) + "/../config/boot"
10
+
8
11
  class Test::Unit::TestCase
9
12
  include Rack::Test::Methods
10
13
 
@@ -25,10 +25,10 @@ module Padrino
25
25
  class_option :dev, :desc => "Use padrino from a git checkout", :default => false, :type => :boolean
26
26
 
27
27
  # Definitions for the available customizable components
28
- component_option :orm, "database engine", :aliases => '-d', :choices => [:datamapper, :mongomapper, :activerecord, :sequel, :couchrest], :default => :none
29
- component_option :test, "testing framework", :aliases => '-t', :choices => [:rspec, :shoulda, :bacon, :testspec, :riot]
28
+ component_option :orm, "database engine", :aliases => '-d', :choices => [:activerecord, :datamapper, :mongomapper, :mongoid, :sequel, :couchrest], :default => :none
29
+ component_option :test, "testing framework", :aliases => '-t', :choices => [:rspec, :shoulda, :cucumber, :bacon, :testspec, :riot]
30
30
  component_option :mock, "mocking library", :aliases => '-m', :choices => [:mocha, :rr], :default => :none
31
- component_option :script, "javascript library", :aliases => '-s', :choices => [:jquery, :prototype, :rightjs], :default => :none
31
+ component_option :script, "javascript library", :aliases => '-s', :choices => [:jquery, :prototype, :rightjs, :mootools], :default => :none
32
32
  component_option :renderer, "template engine", :aliases => '-e', :choices => [:haml, :erb]
33
33
 
34
34
  # Show help if no argv given