<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>generators/dry_model/prototypes/fixture_data/active_record_fixtures.yml</filename>
    </added>
    <added>
      <filename>generators/dry_model/prototypes/fixture_data/factory_girl_factories.rb</filename>
    </added>
    <added>
      <filename>generators/dry_model/prototypes/fixture_data/machinist_blueprints.rb</filename>
    </added>
    <added>
      <filename>generators/dry_model/prototypes/tests/shoulda/unit_test.rb</filename>
    </added>
    <added>
      <filename>generators/dry_model/templates/models/fixture_data/active_record_fixtures.yml</filename>
    </added>
    <added>
      <filename>generators/dry_model/templates/models/fixture_data/factory_girl_factories.rb</filename>
    </added>
    <added>
      <filename>generators/dry_model/templates/models/fixture_data/machinist_blueprints.rb</filename>
    </added>
    <added>
      <filename>generators/dry_model/templates/models/tests/shoulda/unit_test.rb</filename>
    </added>
    <added>
      <filename>generators/dry_scaffold/prototypes/controllers/tests/shoulda/functional_test.rb</filename>
    </added>
    <added>
      <filename>generators/dry_scaffold/prototypes/helpers/tests/shoulda/unit_test.rb</filename>
    </added>
    <added>
      <filename>generators/dry_scaffold/templates/controllers/tests/shoulda/functional_test.rb</filename>
    </added>
    <added>
      <filename>generators/dry_scaffold/templates/helpers/tests/shoulda/unit_test.rb</filename>
    </added>
    <added>
      <filename>lib/dry_generator.rb</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -24,15 +24,19 @@ h3. Optional:
  
 h4. Controllers/Views
  
-* &quot;*will_paginate*&quot;:http://github.com/mislav/will_paginate - Pagination
-* &quot;*formtastic*&quot;:http://github.com/justinfrench/formtastic - DRY and semantic forms
 * &quot;*inherited_resources*&quot;:http://github.com/josevalim/inherited_resources - DRY/Resourceful controllers
+* &quot;*formtastic*&quot;:http://github.com/justinfrench/formtastic - DRY and semantic forms
+* &quot;*will_paginate*&quot;:http://github.com/mislav/will_paginate - Pagination
  
 h4. Models
  
 * &quot;*factory_girl*&quot;:http://github.com/thoughtbot/factory_girl - Fixture-replacement
 * &quot;*machinist*&quot;:http://github.com/notahat/machinist - Fixture-replacement
 * &quot;*object_daddy*&quot;:http://github.com/flogic/object_daddy - Fixture-replacement
+ 
+h4. Testing
+ 
+* &quot;*Shoulda*&quot;:http://github.com/thoughtbot/shoulda - Testing framework
 
 h2. Features
 
@@ -47,7 +51,7 @@ The most characteristic features:
 * Collection pagination using will_paginate by default. Note: Can be turned off.
 * Optionally specify what actions/views to generate (stubs for specified REST-actions will be generated).
 * Optionally specify what respond_to-formats to generate (stubs for the most common respond_to-formats will be generated).
-* Generates default helpers/models/migrations, and REST-routes.
+* Generates default helpers/models/migrations, and REST-routes (if not already defined).
 
 h3. Formtastic Forms
 
@@ -211,7 +215,7 @@ h4. Manual
 Get the gems...you want:
 
 &lt;pre&gt;sudo gem install haml
-sudo gem install will_paginate
+sudo gem install mislav-will_paginate
 sudo gem install justinfrench-formtastic
 sudo gem install josevalim-inherited_resources&lt;/pre&gt;
 
@@ -224,13 +228,13 @@ config.gem 'josevalim-inherited_resources', :lib =&gt; 'inherited_resources', :sour
 
 h2. Usage
 
-&lt;pre&gt;./script/generate dry_scaffold ModelName [attribute:type attribute:type] [_actions:new,create,...] [_formats:html,json,...] [_indexes:attribute,...] [--skip-pagination] [--skip-resourceful] [--skip-formtastic] [--skip-views] [--skip-helpers] [--skip-tests] [--include-layout] [--fixtures] [--fgirl] [--machinist] [--odaddy] [--skip-migration] [--skip-timestamps]&lt;/pre&gt;
+&lt;pre&gt;./script/generate dry_scaffold ModelName [attribute:type attribute:type] [_actions:new,create,...] [_formats:html,json,...] [_indexes:attribute,...] [--skip-pagination] [--skip-resourceful] [--skip-formtastic] [--skip-views] [--skip-helpers] [--skip-migration] [--skip-timestamps] [--skip-tests] [--layout] [--tunit] [--shoulda] [--fixtures] [--fgirl] [--machinist] [--odaddy]&lt;/pre&gt;
 
 ...or use the alias @dscaffold@ instead of @dry_scaffold@.
 
 For generating just a *model*, then use:
 
-&lt;pre&gt;./script/generate dry_model ModelName [attribute:type attribute:type] [_indexes:attribute,...] [--fixtures] [--fgirl] [--machinist] [--odaddy] [--skip-migration] [--skip-timestamps] [--skip-tests]&lt;/pre&gt;
+&lt;pre&gt;./script/generate dry_model ModelName [attribute:type attribute:type] [_indexes:attribute,...] [--skip-migration] [--skip-timestamps] [--skip-tests] [--tunit] [--shoulda] [--fixtures] [--fgirl] [--machinist] [--odaddy]&lt;/pre&gt;
 
 ...or use the alias @dmodel@ instead of @dry_model@.
 
@@ -380,7 +384,6 @@ These are the options for the scaffold-generator.
 * @--skip-formtastic@   - Don't generate formtastic forms in views, i.e. don't use *formtastic*.
 * @--skip-views@        - Don't generate views.
 * @--skip-helpers@      - Don't generate helpers.
-* @--skip-tests@        - Don't generate tests (functional/unit/...).
 * @--skip-builders@     - Don't generate builders.
 * @--layout@            - Generate layout.
  
@@ -388,16 +391,22 @@ h4. Model
 
 These are the options for the model/scaffold-generators.
 
-* @--fixtures@          - Generate fixtures.
-* @--fgirl@             - Generate *factory_girl* factories.
-* @--machinist@         - Generate *machinist* blueprints (factories).
-* @--odaddy@            - Generate *object_daddy* generator/factory methods.
 * @--skip-timestamps@   - Don't add timestamps to the migration file.
 * @--skip-migration@    - Skip generation of migration file.
+ 
+h4. All
+
+* @--skip-tests@        - Don't generate tests (functional/unit/...).
+* @--tunit@             - Generate/Use test_unit tests. Note: Rails default.
+* @--shoulda@           - Generate/Use *shoulda* tests.
+* @--fixtures@          - Generate/Use fixtures. Note: Rails default.
+* @--fgirl@             - Generate/Use *factory_girl* factories.
+* @--machinist@         - Generate/Use *machinist* blueprints (factories).
+* @--odaddy@            - Generate/Use *object_daddy* generator/factory methods.
 
 As DryScaffold is built upon Rails generator, the default generator options is available as well. For more details; see Rails documentation.
 
-h3. Setting Defaults 
+h3. Setting Defaults
 
 You can set defaults for the generator args/options in @config/scaffold.yml@. To generate this file, simply do:
 
@@ -410,11 +419,11 @@ No need for more samples here, just create a new Rails project, install DryScaff
 For your inspiration, you could try the following:
 
 &lt;pre&gt;./script/generate dry_scaffold Zebra name:string about:text --skip-resourceful
-./script/generate dry_scaffold Kangaroo name:string about:text --skip-formtastic
+./script/generate dscaffold Kangaroo name:string about:text --skip-formtastic
 ./script/generate dscaffold Duck name:string about:text _actions:new,create,index,quack
 ./script/generate dscaffold Parrot name:string about:text _formats:html,xml,yml
-./script/generate dscaffold GoldFish name:string about:text _indexes:name --fgirl
-./script/generate dry_model Frog name:string about:text _indexes:name,name+about --fixtures&lt;/pre&gt;
+./script/generate dmodel GoldFish name:string about:text _indexes:name --fgirl
+./script/generate dmodel Frog name:string about:text _indexes:name,name+about --fixtures&lt;/pre&gt;
 
 ...or just go crazy!
 </diff>
      <filename>README.textile</filename>
    </modified>
    <modified>
      <diff>@@ -3,11 +3,24 @@ h1. TODO
 h2. Next
 
 * Feature: Handle belongs_to, i.e. specify MODEL --belongs-to PARENT_MODEL, which generates proper routes, proper before-filters if inherited_resources-controller, adding belongs_to-association in model, and correct form_for arguments.
-* Choose test suits: testunit/shoulda/rspec
 
 h2. Maybe later
 
-* Clean-up: Comment the code a bit more =)
-* Refactor: Break up in different generators: dry_controller, dry_views, etc., and use as dependencies in dry_scaffold?
 * Feature: Check for overridden templates in: RAILS_ROOT/lib/dry_scaffold/templates/
-* Feature: Builder for podcast-feed, similar to RSS/Atom-builders. http://wiki.github.com/radiant/radiant/host-a-podcast
\ No newline at end of file
+* Feature: Builder for podcast-feed, similar to RSS/Atom-builders. http://wiki.github.com/radiant/radiant/host-a-podcast
+
+h2. Issues
+
+ActionController::RoutingError: parrot_url failed to generate from {:controller=&gt;&quot;parrots&quot;, :id=&gt;#&lt;Parrot id: nil, name: &quot;Hello&quot;, created_at: &quot;2009-07-21 18:53:25&quot;, updated_at: &quot;2009-07-21 18:53:25&quot;&gt;, :action=&gt;&quot;show&quot;}, expected: {:controller=&gt;&quot;parrots&quot;, :action=&gt;&quot;show&quot;}, diff: {:id=&gt;#&lt;Parrot id: nil, name: &quot;Hello&quot;, created_at: &quot;2009-07-21 18:53:25&quot;, updated_at: &quot;2009-07-21 18:53:25&quot;&gt;}
+(eval):16:in `parrot_url'
+/opt/local/lib/ruby/gems/1.8/gems/josevalim-inherited_resources-0.7.3/lib/inherited_resources/url_helpers.rb:194:in `resource_url'
+/opt/local/lib/ruby/gems/1.8/gems/josevalim-inherited_resources-0.7.3/lib/inherited_resources/base_helpers.rb:311:in `send'
+/opt/local/lib/ruby/gems/1.8/gems/josevalim-inherited_resources-0.7.3/lib/inherited_resources/base_helpers.rb:311:in `parse_redirect_url'
+/opt/local/lib/ruby/gems/1.8/gems/josevalim-inherited_resources-0.7.3/lib/inherited_resources/base.rb:79:in `create'
+/opt/local/lib/ruby/gems/1.8/gems/josevalim-inherited_resources-0.7.3/lib/inherited_resources/respond_to.rb:301:in `call'
+/opt/local/lib/ruby/gems/1.8/gems/josevalim-inherited_resources-0.7.3/lib/inherited_resources/respond_to.rb:301:in `respond_any'
+/opt/local/lib/ruby/gems/1.8/gems/josevalim-inherited_resources-0.7.3/lib/inherited_resources/respond_to.rb:233:in `respond_to'
+/opt/local/lib/ruby/gems/1.8/gems/josevalim-inherited_resources-0.7.3/lib/inherited_resources/base_helpers.rb:283:in `respond_to_with_dual_blocks'
+/opt/local/lib/ruby/gems/1.8/gems/josevalim-inherited_resources-0.7.3/lib/inherited_resources/base.rb:78:in `create'
+    haml (2.0.9) rails/./lib/sass/plugin/rails.rb:19:in `process'
+    /test/functional/parrots_controller_test.rb:8:in `test_create'
\ No newline at end of file</diff>
      <filename>TODO.textile</filename>
    </modified>
    <modified>
      <diff>@@ -5,18 +5,26 @@ dry_scaffold:
     formats: html,js,xml,json
   options:
     formtastic: true
-    resourceful: true
+    resourceful: false
     pagination: true
+    layout: false
     views: true
     helpers: true
     tests: true
-    layout: false
-dry_model:
-  options:
-    fixtures: false
+    tunit: true
+    shoulda: false
+    fixtures: true
     fgirl: false
     machinist: false
     object_daddy: false
+dry_model:
+  options:
     migration: true
     timestamps: true
-    tests: true
\ No newline at end of file
+    tests: true
+    tunit: true
+    shoulda: false
+    fixtures: true
+    fgirl: false
+    machinist: false
+    object_daddy: false
\ No newline at end of file</diff>
      <filename>config/scaffold.yml</filename>
    </modified>
    <modified>
      <diff>@@ -5,8 +5,5 @@ DESCRIPTION
   A replacement for the Rails model generator - a part of the dry_generator toolset.
   
 EXAMPLE
-  ./script/generate dry_model ModelName [attribute:type attribute:type] [_index:name,owner_id+owner_type,active,...] [--fixtures] [--fgirl] [--machinist] [--odaddy] [--skip-timestamps] [--skip-migration] [--skip-tests]
-  
-  ...or the shortcut version:
-  
-  ./script/generate dmodel ...
\ No newline at end of file
+  ./script/generate dmodel GoldFish name:string about:text _indexes:name --fgirl
+  ./script/generate dmodel Frog name:string about:text _indexes:name,name+about --fixtures
\ No newline at end of file</diff>
      <filename>generators/dry_model/USAGE</filename>
    </modified>
    <modified>
      <diff>@@ -1,55 +1,25 @@
-require 'rubygems'
-%w(factory_girl machinist object_daddy).each do |lib|
-  begin
-    require lib
-  rescue MissingSourceFile
-    eval(&quot;#{lib.upcase} = #{false}&quot;)
-  else
-    eval(&quot;#{lib.upcase} = #{true}&quot;)
-  end
-end
+require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'lib', 'dry_generator'))
 
-class DryModelGenerator &lt; Rails::Generator::NamedBase
-  
-  # Load defaults from config file - default or custom.
-  begin
-    default_config_file = File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'config', 'scaffold.yml'))
-    custom_config_file = File.expand_path(File.join(Rails.root, 'config', 'scaffold.yml'))
-    config_file = File.join(File.exist?(custom_config_file) ? custom_config_file : default_config_file)
-    config = YAML::load(File.open(config_file))
-    CONFIG_OPTIONS = config['dry_model']['options'] rescue nil
-  end
+class DryModelGenerator &lt; DryGenerator
   
-  DEFAULT_OPTIONS = {
-      :fixtures =&gt; CONFIG_OPTIONS['fixtures'] || false,
-      :factory_girl =&gt; CONFIG_OPTIONS['factory_girl'] || false,
-      :machinist =&gt; CONFIG_OPTIONS['machinist'] || false,
-      :object_daddy =&gt; CONFIG_OPTIONS['object_daddy'] || false,
-      :skip_timestamps =&gt; !CONFIG_OPTIONS['timestamps'] || false,
-      :skip_migration =&gt; !CONFIG_OPTIONS['migration'] || false,
-      :skip_tests =&gt; !CONFIG_OPTIONS['tests'] || false
-    }
+  # Banner: Generator arguments and options.
+  BANNER_ARGS = [
+      &quot;[_indexes:field,field+field,field,...]&quot;
+    ].freeze
+  BANNER_OPTIONS = [
+      &quot;[--skip-timestamps]&quot;,
+      &quot;[--skip-migration]&quot;
+    ].freeze
     
-  DEFAULT_TEST_FRAMEWORK =      :test_unit
+  # Paths.
+  MODELS_PATH =           File.join('app', 'models').freeze
+  MIGRATIONS_PATH =       File.join('db', 'migrate').freeze
   
-  MODELS_PATH =                 File.join('app', 'models').freeze
-  MIGRATIONS_PATH =             File.join('db', 'migrate').freeze
-  TESTS_PATH =                  File.join('test').freeze
-  UNIT_TESTS_PATH =             File.join(TESTS_PATH, 'unit').freeze
-  FIXTURES_PATH =               File.join(TESTS_PATH, 'fixtures').freeze
-  FACTORY_GIRL_FACTORIES_PATH = File.join(TESTS_PATH, 'factories').freeze
-  MACHINIST_FACTORIES_PATH =    File.join(TESTS_PATH, 'blueprints').freeze
-  
-  NON_ATTR_ARG_KEY_PREFIX =     '_'.freeze
-                  
   attr_reader :indexes,
-              :references,
-              :test_framework
+              :references
               
   def initialize(runtime_args, runtime_options = {})
-    super
-    
-    @test_framework = DEFAULT_TEST_FRAMEWORK
+    super(runtime_args, runtime_options)
     
     @attributes ||= []
     args_for_model = []
@@ -83,41 +53,43 @@ class DryModelGenerator &lt; Rails::Generator::NamedBase
       # Check for class naming collisions.
       m.class_collisions class_name, &quot;#{class_name}Test&quot;
       
-      # Directories.
+      # Model.
       m.directory File.join(MODELS_PATH, class_path)
-      m.directory File.join(UNIT_TESTS_PATH, class_path) unless options[:skip_tests]
-      m.directory File.join(FIXTURES_PATH, class_path) if options[:fixtures]
-      m.directory File.join(FACTORY_GIRL_FACTORIES_PATH, class_path) if options[:factory_girl]
-      m.directory File.join(MACHINIST_FACTORIES_PATH, class_path) if options[:machinist]
-      
-      # Model
       m.template File.join('models', 'active_record_model.rb'),
         File.join(MODELS_PATH, class_path, &quot;#{file_name}.rb&quot;)
         
       # Model Tests.
       unless options[:skip_tests]
+        model_tests_path = File.join(TEST_PATHS[test_framework], 'unit')
+        m.directory File.join(model_tests_path, class_path)
         m.template File.join('models', 'tests', &quot;#{test_framework}&quot;, 'unit_test.rb'),
-          File.join(UNIT_TESTS_PATH, class_path, &quot;#{file_name}_test.rb&quot;)
-      end
-      
-      # Fixtures/Factories.
-      if options[:fixtures]
-        m.template File.join('models', 'test_data', 'active_record_fixtures.yml'),
-          File.join(FIXTURES_PATH, &quot;#{file_name}.yml&quot;)
-      end
-      if options[:factory_girl]
-        m.template File.join('models', 'test_data', 'factory_girl_factories.rb'),
-          File.join(FACTORY_GIRL_FACTORIES_PATH, &quot;#{file_name}.rb&quot;)
-      end
-      if options[:machinist]
-        m.template File.join('models', 'test_data', 'machinist_factories.rb'),
-          File.join(MACHINIST_FACTORIES_PATH, &quot;#{file_name}.rb&quot;)
+          File.join(model_tests_path, class_path, &quot;#{file_name}_test.rb&quot;)
+          
+        # Fixtures/Factories.
+        if options[:fixtures]
+          fixtures_path = File.join(TEST_PATHS[test_framework], 'fixtures')
+          m.directory File.join(fixtures_path, class_path)
+          m.template File.join('models', 'fixture_data', 'active_record_fixtures.yml'),
+            File.join(fixtures_path, class_path, &quot;#{plural_name}.yml&quot;)
+        end
+        if options[:factory_girl]
+          factory_girl_path = File.join(TEST_PATHS[test_framework], 'factories')
+          m.directory File.join(factory_girl_path, class_path)
+          m.template File.join('models', 'fixture_data', 'factory_girl_factories.rb'),
+            File.join(factory_girl_path, class_path, &quot;#{plural_name}.rb&quot;)
+        end
+        if options[:machinist]
+          machinist_path = File.join(TEST_PATHS[test_framework], 'blueprints')
+          m.directory File.join(machinist_path, class_path)
+          m.template File.join('models', 'fixture_data', 'machinist_blueprints.rb'),
+            File.join(machinist_path, class_path, &quot;#{plural_name}.rb&quot;)
+        end
+        # NOTE: :object_daddy handled in model
       end
-      # NOTE: :object_daddy handled in model
       
       # Migration.
       unless options[:skip_migration]
-        m.migration_template File.join('models', 'active_record_migration.rb') , MIGRATIONS_PATH,
+        m.migration_template File.join('models', 'active_record_migration.rb'), MIGRATIONS_PATH,
           :assigns =&gt; {:migration_name =&gt; &quot;Create#{class_name.pluralize.gsub(/::/, '')}&quot;},
           :migration_file_name =&gt; &quot;create_#{file_path.gsub(/\//, '_').pluralize}&quot;
       end
@@ -125,87 +97,38 @@ class DryModelGenerator &lt; Rails::Generator::NamedBase
   end
   
   protected
+    
+    def add_options!(opt)
+      super(opt)
       
-      def add_options!(opt)
-        opt.separator ''
-        opt.separator 'Options:'
-        
-        opt.on(&quot;--fixtures&quot;, &quot;Generate fixtures.&quot;) do |v|
-          options[:fixtures] = v
-        end
-        
-        opt.on(&quot;--fgirl&quot;, &quot;Generate \&quot;factory_girl\&quot; factories.&quot;) do |v|
-          options[:factory_girl] = v
-        end
-        
-        opt.on(&quot;--machinist&quot;, &quot;Generate \&quot;machinist\&quot; blueprints (factories).&quot;) do |v|
-          options[:machinist] = v
-        end
-        
-        opt.on(&quot;--odaddy&quot;, &quot;Generate \&quot;object_daddy\&quot; generator/factory methods.&quot;) do |v|
-          options[:object_daddy] = v
-        end
-        
-        opt.on(&quot;--skip-timestamps&quot;, &quot;Don't add timestamps to the migration file.&quot;) do |v|
-          options[:skip_timestamps] = v
-        end
-        
-        opt.on(&quot;--skip-migration&quot;, &quot;Skip generation of migration file.&quot;) do |v|
-          options[:skip_migration] = v
-        end
-        
-        opt.on(&quot;--skip-tests&quot;, &quot;Skip generation of tests.&quot;) do |v|
-          options[:skip_tests] = v
-        end
-      end
+      opt.separator ' '
+      opt.separator 'Model Options:'
       
-      def banner
-        [&quot;Usage: #{$0} #{spec.name} ModelName&quot;,
-          &quot;[field:type field:type]&quot;,
-          &quot;[_indexes:name,owner_id+owner_type,active,...]&quot;,
-          &quot;[--fixtures]&quot;,
-          &quot;[--fgirl]&quot;,
-          &quot;[--machinist]&quot;,
-          &quot;[--odaddy]&quot;,
-          &quot;[--skip_timestamps]&quot;,
-          &quot;[--skip-migration]&quot;,
-          &quot;[--skip-tests]&quot;
-        ].join(' ')
+      opt.on(&quot;--skip-timestamps&quot;, &quot;Don't add timestamps to the migration file.&quot;) do |v|
+        options[:skip_timestamps] = v
       end
       
-end
-
-module Rails
-  module Generator
-    class GeneratedAttribute
-      def default_for_fixture
-        @default ||= case type
-        when :integer                     then 1
-        when :float                       then 1.5
-        when :decimal                     then '9.99'
-        when :datetime, :timestamp, :time then Time.now.to_s(:db)
-        when :date                        then Date.today.to_s(:db)
-        when :string                      then 'Hello'
-        when :text                        then 'Lorem ipsum dolor sit amet...'
-        when :boolean                     then false
-        else
-          ''
-        end
+      opt.on(&quot;--skip-migration&quot;, &quot;Skip generation of migration file.&quot;) do |v|
+        options[:skip_migration] = v
       end
-      def default_for_factory
-        @default ||= case type
-        when :integer                     then 1
-        when :float                       then 1.5
-        when :decimal                     then '9.99'
-        when :datetime, :timestamp, :time then 'Time.now'
-        when :date                        then 'Date.today'
-        when :string                      then '&quot;Hello&quot;'
-        when :text                        then '&quot;Lorem ipsum dolor sit amet...&quot;'
-        when :boolean                     then false
-        else
-          ''
-        end
+      
+      opt.on(&quot;--skip-tests&quot;, &quot;Skip generation of tests.&quot;) do |v|
+        options[:skip_tests] = v
       end
+      
+      opt.separator ' '
     end
-  end
+    
+    def banner_args
+      [BANNER_ARGS, super].flatten.join(' ')
+    end
+    
+    def banner_options
+      [BANNER_OPTIONS, super].flatten.join(' ')
+    end
+    
+    def banner
+      [super, banner_args, banner_options].join(' ')
+    end
+    
 end
\ No newline at end of file</diff>
      <filename>generators/dry_model/dry_model_generator.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,4 +1,4 @@
-class CreateResources &lt; ActiveRecord::Migration
+class CreateDucks &lt; ActiveRecord::Migration
   def self.up
     create_table :resources, :force =&gt; true do |t|
       t.string :name</diff>
      <filename>generators/dry_model/prototypes/active_record_migration.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,6 +1,6 @@
-class Resource &lt; ActiveRecord::Base
+class Duck &lt; ActiveRecord::Base
   
-  belongs_to :user
+  belongs_to :owner
   
   # object_daddy
   generator_for(:name) { &quot;AString&quot; }</diff>
      <filename>generators/dry_model/prototypes/active_record_model.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,8 +1,14 @@
-require File.expand_path(File.join(File.dirname(__FILE__), '..', 'test_helper'))
+require 'test_helper'
 
-class ResourceTest &lt; ActiveSupport::TestCase
+class DuckTest &lt; ActiveRecord::TestCase
   
-  test &quot;something&quot; do
+  fixtures :ducks
+  
+  setup do
+    
+  end
+  
+  test 'something' do
     assert true
   end
   </diff>
      <filename>generators/dry_model/prototypes/tests/test_unit/unit_test.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,6 +1,6 @@
 class &lt;%= migration_name %&gt; &lt; ActiveRecord::Migration
   def self.up
-    create_table :&lt;%= table_name %&gt;, :force =&gt; true do |t|
+    create_table :&lt;%= table_name %&gt; do |t|
 &lt;% attributes.each do |attribute| -%&gt;
       t.&lt;%= attribute.type %&gt; :&lt;%= attribute.name %&gt;
 &lt;% end -%&gt;
@@ -10,7 +10,7 @@ class &lt;%= migration_name %&gt; &lt; ActiveRecord::Migration
 &lt;% end -%&gt;
     end
 &lt;% unless indexes.blank? -%&gt;
-
+    
 &lt;% indexes.each do |index| -%&gt;
     add_index :&lt;%= table_name %&gt;, &lt;%= index.is_a?(Array) ? &quot;[:#{index.join(', :')}]&quot; : &quot;:#{index}&quot; %&gt;
 &lt;% end -%&gt;</diff>
      <filename>generators/dry_model/templates/models/active_record_migration.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,8 +1,16 @@
-require File.expand_path(File.join(File.dirname(__FILE__), '..', 'test_helper'))
+require 'test_helper'
 
-class &lt;%= class_name %&gt;Test &lt; ActiveSupport::TestCase
+class &lt;%= class_name %&gt;Test &lt; ActiveRecord::TestCase
   
-  test &quot;something&quot; do
+&lt;% if options[:fixtures] -%&gt;
+  fixtures :&lt;%= plural_name %&gt;
+  
+&lt;% end -%&gt;
+  setup do
+    
+  end
+  
+  test 'something' do
     assert true
   end
   </diff>
      <filename>generators/dry_model/templates/models/tests/test_unit/unit_test.rb</filename>
    </modified>
    <modified>
      <diff>@@ -5,8 +5,7 @@ DESCRIPTION
   A replacement for the Rails scaffold generator that generates code that most people end up deleting or rewriting anyway because of the unusable code. The scaffold concept is powerful, but it has more potential than generating messy and almost useless code. The goal with dry_scaffold is to generate DRY, beautiful, and standards compliant code based on common patterns without adding a lot of magic.
   
 EXAMPLE
-  ./script/generate dry_scaffold ModelName [attribute:type attribute:type] [_actions:new,create,...] [_formats:html,json,...] [--skip-pagination] [--skip-resourceful] [--skip-formtastic] [--skip-views] [--skip-helpers] [--skip-tests] [--skip-builders] [--layout]
-  
-  ...or the shortcut version:
-  
-  ./script/generate dscaffold ...
\ No newline at end of file
+  ./script/generate dry_scaffold Zebra name:string about:text --skip-resourceful
+  ./script/generate dscaffold Kangaroo name:string about:text --skip-formtastic
+  ./script/generate dscaffold Duck name:string about:text _actions:new,create,index,quack
+  ./script/generate dscaffold Parrot name:string about:text _formats:html,xml,yml
\ No newline at end of file</diff>
      <filename>generators/dry_scaffold/USAGE</filename>
    </modified>
    <modified>
      <diff>@@ -1,41 +1,33 @@
-require 'rubygems'
-%w(will_paginate formtastic inherited_resources).each do |lib|
-  begin
-    require lib
-  rescue MissingSourceFile
-    eval(&quot;#{lib.upcase} = #{false}&quot;)
-  else
-    eval(&quot;#{lib.upcase} = #{true}&quot;)
-  end
-end
+require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'lib', 'dry_generator'))
+require File.expand_path(File.join(File.dirname(__FILE__), '..', 'dry_model', 'dry_model_generator'))
 
-class DryScaffoldGenerator &lt; Rails::Generator::NamedBase
-  
-  # Load defaults from config file - default or custom.
-  begin
-    default_config_file = File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'config', 'scaffold.yml'))
-    custom_config_file = File.expand_path(File.join(Rails.root, 'config', 'scaffold.yml'))
-    config_file = File.join(File.exist?(custom_config_file) ? custom_config_file : default_config_file)
-    config = YAML::load(File.open(config_file))
-    CONFIG_ARGS = config['dry_scaffold']['args'] rescue nil
-    CONFIG_OPTIONS = config['dry_scaffold']['options'] rescue nil
-  end
+class DryScaffoldGenerator &lt; DryGenerator
   
-  DEFAULT_ARGS = {
-      :actions =&gt; (CONFIG_ARGS['actions'].split(',').compact.uniq.collect { |v| v.downcase.to_sym } rescue nil),
-      :formats =&gt; (CONFIG_ARGS['formats'].split(',').compact.uniq.collect { |v| v.downcase.to_sym } rescue nil)
-    }
-    
-  DEFAULT_OPTIONS = {
-      :resourceful =&gt; CONFIG_OPTIONS['resourceful'] || INHERITED_RESOURCES,
-      :formtastic =&gt; CONFIG_OPTIONS['formtastic'] || FORMTASTIC,
-      :pagination =&gt; CONFIG_OPTIONS['pagination'] || WILL_PAGINATE,
-      :skip_tests =&gt; !CONFIG_OPTIONS['tests'] || false,
-      :skip_helpers =&gt; !CONFIG_OPTIONS['helpers'] || false,
-      :skip_views =&gt; !CONFIG_OPTIONS['views'] || false,
-      :layout =&gt; CONFIG_OPTIONS['layout'] || false
-    }
+  # Banner: Generator arguments and options.
+  BANNER_ARGS = [
+      &quot;[_actions:new,create,...]&quot;,
+      &quot;[_formats:html,json,...]&quot;,
+      DryModelGenerator::BANNER_ARGS
+    ].freeze
+  BANNER_OPTIONS = [
+      &quot;[--skip-pagination]&quot;,
+      &quot;[--skip-resourceful]&quot;,
+      &quot;[--skip-formtastic]&quot;,
+      &quot;[--skip-views]&quot;,
+      &quot;[--skip-builders]&quot;,
+      &quot;[--skip-helpers]&quot;,
+      &quot;[--layout]&quot;,
+      DryModelGenerator::BANNER_OPTIONS
+    ].freeze
     
+  # Paths.
+  CONTROLLERS_PATH =        File.join('app', 'controllers').freeze
+  HELPERS_PATH =            File.join('app', 'helpers').freeze
+  VIEWS_PATH =              File.join('app', 'views').freeze
+  LAYOUTS_PATH =            File.join(VIEWS_PATH, 'layouts').freeze
+  
+  ROUTES_FILE_PATH =        File.join(RAILS_ROOT, 'config', 'routes.rb').freeze
+  
   # Formats.
   DEFAULT_RESPOND_TO_FORMATS =          [:html, :xml, :json].freeze
   ENHANCED_RESPOND_TO_FORMATS =         [:yml, :yaml, :txt, :text, :atom, :rss].freeze
@@ -49,21 +41,9 @@ class DryScaffoldGenerator &lt; Rails::Generator::NamedBase
   DEFAULT_CONTROLLER_ACTIONS =          (DEFAULT_COLLECTION_ACTIONS + DEFAULT_MEMBER_ACTIONS)
   
   DEFAULT_VIEW_TEMPLATE_FORMAT =        :haml
-  DEFAULT_TEST_FRAMEWORK =              :test_unit
-  
-  CONTROLLERS_PATH =      File.join('app', 'controllers').freeze
-  HELPERS_PATH =          File.join('app', 'helpers').freeze
-  VIEWS_PATH =            File.join('app', 'views').freeze
-  LAYOUTS_PATH =          File.join(VIEWS_PATH, 'layouts').freeze
-  MODELS_PATH =           File.join('app', 'models').freeze
-  FUNCTIONAL_TESTS_PATH = File.join('test', 'functional').freeze
-  UNIT_TESTS_PATH =       File.join('test', 'unit').freeze
-  ROUTES_FILE_PATH =      File.join(Rails.root, 'config', 'routes.rb').freeze
-  
-  RESOURCEFUL_COLLECTION_NAME = 'collection'.freeze
-  RESOURCEFUL_SINGULAR_NAME =   'resource'.freeze
   
-  NON_ATTR_ARG_KEY_PREFIX =     '_'.freeze
+  RESOURCEFUL_COLLECTION_NAME =         'collection'.freeze
+  RESOURCEFUL_SINGULAR_NAME =           'resource'.freeze
   
   # :{action} =&gt; [:{partial}, ...]
   ACTION_VIEW_TEMPLATES = {
@@ -72,7 +52,7 @@ class DryScaffoldGenerator &lt; Rails::Generator::NamedBase
       :new    =&gt; [:form],
       :edit   =&gt; [:form]
     }.freeze
-  
+    
   ACTION_FORMAT_BUILDERS = {
       :index =&gt; [:atom, :rss]
     }
@@ -90,7 +70,6 @@ class DryScaffoldGenerator &lt; Rails::Generator::NamedBase
                 :model_singular_name,
                 :model_plural_name,
                 :view_template_format,
-                :test_framework,
                 :actions,
                 :formats,
                 :config
@@ -99,7 +78,7 @@ class DryScaffoldGenerator &lt; Rails::Generator::NamedBase
   alias_method  :controller_table_name, :controller_plural_name
   
   def initialize(runtime_args, runtime_options = {})
-    super
+    super(runtime_args, runtime_options)
     
     @controller_name = @name.pluralize
     base_name, @controller_class_path, @controller_file_path, @controller_class_nesting, @controller_class_nesting_depth = extract_modules(@controller_name)
@@ -112,8 +91,7 @@ class DryScaffoldGenerator &lt; Rails::Generator::NamedBase
       @controller_class_name = &quot;#{@controller_class_nesting}::#{@controller_class_name_without_nesting}&quot;
     end
     
-    @view_template_format = DEFAULT_VIEW_TEMPLATE_FORMAT
-    @test_framework = DEFAULT_TEST_FRAMEWORK
+    @view_template_format = options[:view_template_format] || DEFAULT_VIEW_TEMPLATE_FORMAT
     
     @attributes ||= []
     @args_for_model ||= []
@@ -123,7 +101,7 @@ class DryScaffoldGenerator &lt; Rails::Generator::NamedBase
       arg_entities = arg.split(':')
       if arg =~ /^#{NON_ATTR_ARG_KEY_PREFIX}/
         if arg =~ /^#{NON_ATTR_ARG_KEY_PREFIX}action/
-          # Replace quantifiers with default actions
+          # Replace quantifiers with default actions.
           arg_entities[1].gsub!(/\*/, DEFAULT_CONTROLLER_ACTIONS.join(','))
           arg_entities[1].gsub!(/new\+/, [:new, :create].join(','))
           arg_entities[1].gsub!(/edit\+/, [:edit, :update].join(','))
@@ -131,7 +109,7 @@ class DryScaffoldGenerator &lt; Rails::Generator::NamedBase
           arg_actions = arg_entities[1].split(',').compact.uniq
           @actions = arg_actions.collect { |action| action.downcase.to_sym }
         elsif arg =~ /^#{NON_ATTR_ARG_KEY_PREFIX}(format|respond_to)/
-          # Replace quantifiers with default respond_to-formats
+          # Replace quantifiers with default respond_to-formats.
           arg_entities[1].gsub!(/\*/, DEFAULT_RESPOND_TO_FORMATS.join(','))
           
           arg_formats = arg_entities[1].split(',').compact.uniq
@@ -156,38 +134,38 @@ class DryScaffoldGenerator &lt; Rails::Generator::NamedBase
       m.class_collisions &quot;#{controller_class_name}Controller&quot;, &quot;#{controller_class_name}ControllerTest&quot;
       m.class_collisions &quot;#{controller_class_name}Helper&quot;, &quot;#{controller_class_name}HelperTest&quot;
       
-      # Directories.
-      m.directory File.join(CONTROLLERS_PATH, controller_class_path)
-      m.directory File.join(HELPERS_PATH, controller_class_path) unless options[:skip_helpers]
-      m.directory File.join(VIEWS_PATH, controller_class_path, controller_file_name) unless options[:skip_views]
-      m.directory File.join(FUNCTIONAL_TESTS_PATH, controller_class_path) unless options[:skip_tests]
-      m.directory File.join(UNIT_TESTS_PATH, 'helpers', controller_class_path) unless options[:skip_tests] || options[:skip_helpers]
-      
       # Controllers.
       controller_template = options[:resourceful] ? 'inherited_resources' : 'action'
+      m.directory File.join(CONTROLLERS_PATH, controller_class_path)
       m.template File.join('controllers', &quot;#{controller_template}_controller.rb&quot;),
         File.join(CONTROLLERS_PATH, controller_class_path, &quot;#{controller_file_name}_controller.rb&quot;)
         
       # Controller Tests.
       unless options[:skip_tests]
+        controller_tests_path = File.join(TEST_PATHS[test_framework], 'functional')
+        m.directory File.join(controller_tests_path, controller_class_path)
         m.template File.join('controllers', 'tests', &quot;#{test_framework}&quot;, 'functional_test.rb'),
-          File.join(FUNCTIONAL_TESTS_PATH, controller_class_path, &quot;#{controller_file_name}_controller_test.rb&quot;)
+          File.join(controller_tests_path, controller_class_path, &quot;#{controller_file_name}_controller_test.rb&quot;)
       end
       
       # Helpers.
       unless options[:skip_helpers]
+        m.directory File.join(HELPERS_PATH, controller_class_path)
         m.template File.join('helpers', 'helper.rb'),
           File.join(HELPERS_PATH, controller_class_path, &quot;#{controller_file_name}_helper.rb&quot;)
           
         # Helper Tests
         unless options[:skip_tests]
+          helper_tests_path = File.join(TEST_PATHS[test_framework], 'unit', 'helpers')
+          m.directory File.join(helper_tests_path, controller_class_path)
           m.template File.join('helpers', 'tests', &quot;#{test_framework}&quot;, 'unit_test.rb'),
-            File.join(UNIT_TESTS_PATH, 'helpers', controller_class_path, &quot;#{controller_file_name}_helper_test.rb&quot;)
+            File.join(helper_tests_path, controller_class_path, &quot;#{controller_file_name}_helper_test.rb&quot;)
         end
       end
       
       # Views.
       unless options[:skip_views]
+        m.directory File.join(VIEWS_PATH, controller_class_path, controller_file_name)
         # View template for each action.
         (actions &amp; ACTION_VIEW_TEMPLATES.keys).each do |action|
           m.template File.join('views', &quot;#{view_template_format}&quot;, &quot;#{action}.html.#{view_template_format}&quot;),
@@ -203,6 +181,7 @@ class DryScaffoldGenerator &lt; Rails::Generator::NamedBase
       
       # Builders.
       unless options[:skip_builders]
+        m.directory File.join(VIEWS_PATH, controller_class_path, controller_file_name)
         (actions &amp; ACTION_FORMAT_BUILDERS.keys).each do |action|
           (formats &amp; ACTION_FORMAT_BUILDERS[action] || []).each do |format|
             m.template File.join('views', 'builder', &quot;#{action}.#{format}.builder&quot;),
@@ -213,12 +192,14 @@ class DryScaffoldGenerator &lt; Rails::Generator::NamedBase
       
       # Layout.
       if options[:layout]
+        m.directory File.join(LAYOUTS_PATH)
         m.template File.join('views', &quot;#{view_template_format}&quot;, &quot;layout.html.#{view_template_format}&quot;),
           File.join(LAYOUTS_PATH, &quot;#{controller_file_name}.html.#{view_template_format}&quot;)
       end
       
       # Routes.
       unless resource_route_exists?
+        # TODO: Override Rails default method to not generate route if it's already defined.
         m.route_resources controller_file_name
       end
       
@@ -227,6 +208,19 @@ class DryScaffoldGenerator &lt; Rails::Generator::NamedBase
     end
   end
   
+  def build_object
+    case options[:factory_framework]
+      when :factory_girl then
+        &quot;Factory(:#{singular_name})&quot;
+      when :machinist then
+        &quot;#{class_name}.make&quot;
+      when :object_daddy then
+        &quot;#{class_name}.generate&quot;
+      else #:fixtures
+        &quot;#{plural_name}(:basic)&quot;
+    end
+  end
+  
   def collection_instance
     &quot;@#{collection_name}&quot;
   end
@@ -257,37 +251,37 @@ class DryScaffoldGenerator &lt; Rails::Generator::NamedBase
   
   def feed_link(format)
     case format
-    when :atom then
-      &quot;:href =&gt; #{plural_name}_url(:#{format}), :rel =&gt; 'self'&quot;
-    when :rss then
-      &quot;#{plural_name}_url(#{singular_name}, :#{format})&quot;
+      when :atom then
+        &quot;:href =&gt; #{plural_name}_url(:#{format}), :rel =&gt; 'self'&quot;
+      when :rss then
+        &quot;#{plural_name}_url(#{singular_name}, :#{format})&quot;
     end
   end
   
   def feed_entry_link(format)
     case format
-    when :atom then
-      &quot;:href =&gt; #{singular_name}_url(#{singular_name}, :#{format})&quot;
-    when :rss then
-      &quot;#{singular_name}_url(#{singular_name}, :#{format})&quot;
+      when :atom then
+        &quot;:href =&gt; #{singular_name}_url(#{singular_name}, :#{format})&quot;
+      when :rss then
+        &quot;#{singular_name}_url(#{singular_name}, :#{format})&quot;
     end
   end
   
   def feed_date(format)
     case format
-    when :atom then
-      &quot;(#{collection_instance}.first.created_at rescue Time.now.utc).strftime('%Y-%m-%dT%H:%M:%SZ')&quot;
-    when :rss then
-      &quot;(#{collection_instance}.first.created_at rescue Time.now.utc).to_s(:rfc822)&quot;
+      when :atom then
+        &quot;(#{collection_instance}.first.created_at rescue Time.now.utc).strftime('%Y-%m-%dT%H:%M:%SZ')&quot;
+      when :rss then
+        &quot;(#{collection_instance}.first.created_at rescue Time.now.utc).to_s(:rfc822)&quot;
     end
   end
   
   def feed_entry_date(format)
     case format
-    when :atom then
-      &quot;#{singular_name}.try(:updated_at).strftime('%Y-%m-%dT%H:%M:%SZ')&quot;
-    when :rss then
-      &quot;#{singular_name}.try(:updated_at).to_s(:rfc822)&quot;
+      when :atom then
+        &quot;#{singular_name}.try(:updated_at).strftime('%Y-%m-%dT%H:%M:%SZ')&quot;
+      when :rss then
+        &quot;#{singular_name}.try(:updated_at).to_s(:rfc822)&quot;
     end
   end
   
@@ -298,12 +292,8 @@ class DryScaffoldGenerator &lt; Rails::Generator::NamedBase
       File.read(ROUTES_FILE_PATH) =~ /(#{route_exp.strip}|#{route_exp.strip.tr('\'', '\&quot;')})/
     end
     
-    def symbol_array_to_expression(array)
-      &quot;:#{array.compact.join(', :')}&quot; if array.present?
-    end
-    
     def assign_names!(name)
-      super
+      super(name)
       @model_singular_name = @singular_name
       @model_plural_name = @plural_name
       @collection_name = options[:resourceful] ? RESOURCEFUL_COLLECTION_NAME : @model_plural_name
@@ -312,96 +302,74 @@ class DryScaffoldGenerator &lt; Rails::Generator::NamedBase
     end
     
     def add_options!(opt)
-      opt.separator ''
-      opt.separator 'Options:'
+      super(opt)
       
-      ### CONTROLLERS + VIEWS
+      ### CONTROLLER + VIEW + HELPER
       
-      opt.on('--skip-pagination',
-        &quot;Skip 'will_paginate' for collections in controllers and views, wich requires gem 'mislav-will_paginate'.&quot;) do |v|
-        options[:pagination] = !v
-      end
+      opt.separator ' '
+      opt.separator 'Scaffold Options:'
       
       opt.on('--skip-resourceful',
-        &quot;Skip 'inherited_resources' style controllers and views, wich requires gem 'josevalim-inherited_resources'.&quot;) do |v|
+        &quot;Controller: Skip 'inherited_resources' style controllers and views. Requires gem 'josevalim-inherited_resources'.&quot;) do |v|
         options[:resourceful] = !v
       end
       
-      opt.on('--skip-formtastic',
-        &quot;Skip 'formtastic' style forms, wich requires gem 'justinfrench-formtastic'.&quot;) do |v|
-        options[:formtastic] = !v
+      opt.on('--skip-pagination',
+        &quot;Controller/View: Skip 'will_paginate' for collections in controllers and views. Requires gem 'mislav-will_paginate'.&quot;) do |v|
+        options[:pagination] = !v
       end
       
-      opt.on('--layout', &quot;Generate layout.&quot;) do |v|
-        options[:layout] = v
+      opt.on('--skip-formtastic',
+        &quot;View: Skip 'formtastic' style forms. Requires gem 'justinfrench-formtastic'.&quot;) do |v|
+        options[:formtastic] = !v
       end
       
-      opt.on('--skip-views', &quot;Skip generation of views.&quot;) do |v|
+      opt.on('--skip-views', &quot;View: Skip generation of views.&quot;) do |v|
         options[:skip_views] = v
       end
       
-      opt.on('--skip-helper', &quot;Skip generation of helpers.&quot;) do |v|
-        options[:skip_helpers] = v
-      end
-      
-      opt.on('--skip-builders', &quot;Skip generation of helpers.&quot;) do |v|
+      opt.on('--skip-builders', &quot;View: Skip generation of builders.&quot;) do |v|
         options[:skip_builders] = v
       end
       
-      ### CONTROLLERS + MODELS
-      
-      opt.on('--skip-tests', &quot;Skip generation of tests.&quot;) do |v|
-        options[:skip_tests] = v
-      end
-      
-      ### MODELS ONLY
-      
-      opt.on('--fixtures', &quot;Model: Generate fixtures.&quot;) do |v|
-        options[:fixtures] = v
+      opt.on('--layout', &quot;View: Generate layout.&quot;) do |v|
+        options[:layout] = v
       end
       
-      opt.on('--fgirl', &quot;Model: Generate \&quot;factory_girl\&quot; factories.&quot;) do |v|
-        options[:factory_girl] = v
+      opt.on('--skip-helper', &quot;Helper: Skip generation of helpers.&quot;) do |v|
+        options[:skip_helpers] = v
       end
       
-      opt.on('--machinist', &quot;Model: Generate \&quot;machinist\&quot; blueprints (factories).&quot;) do |v|
-        options[:machinist] = v
-      end
+      ### MODEL
       
-      opt.on('--odaddy', &quot;Model: Generate \&quot;object_daddy\&quot; generator/factory methods.&quot;) do |v|
-        options[:object_daddy] = v
-      end
+      opt.separator ' '
+      opt.separator 'Model Options:'
       
-      opt.on('--skip-timestamps', &quot;Model: Don't add timestamps to the migration file.&quot;) do |v|
+      opt.on(&quot;--skip-timestamps&quot;, &quot;Model: Don't add timestamps to the migration file.&quot;) do |v|
         options[:skip_timestamps] = v
       end
       
-      opt.on('--skip-migration', &quot;Model: Skip generation of migration file.&quot;) do |v|
+      opt.on(&quot;--skip-migration&quot;, &quot;Model: Skip generation of migration file.&quot;) do |v|
         options[:skip_migration] = v
       end
+      
+      opt.on(&quot;--skip-tests&quot;, &quot;Model: Skip generation of tests.&quot;) do |v|
+        options[:skip_tests] = v
+      end
+      
+      opt.separator ' '
+    end
+    
+    def banner_args
+      [BANNER_ARGS, super].flatten.join(' ')
+    end
+    
+    def banner_options
+      [BANNER_OPTIONS, super].flatten.join(' ')
     end
     
     def banner
-      [&quot;Usage: #{$0} #{spec.name} ModelName&quot;,
-        &quot;[field:type field:type ...]&quot;,
-        &quot;[_actions:new,create,...]&quot;,
-        &quot;[_formats:html,json,...]&quot;,
-        &quot;[_indexes:field,field+field,field,...]&quot;,
-        &quot;[--skip-pagination]&quot;,
-        &quot;[--skip-resourceful]&quot;,
-        &quot;[--skip-formtastic]&quot;,
-        &quot;[--skip-views]&quot;, 
-        &quot;[--skip-helpers]&quot;,
-        &quot;[--skip-tests]&quot;,
-        &quot;[--skip-builders]&quot;,
-        &quot;[--layout]&quot;,
-        &quot;[--fixtures]&quot;,
-        &quot;[--factory_girl]&quot;,
-        &quot;[--machinist]&quot;,
-        &quot;[--object_daddy]&quot;,
-        &quot;[--skip-timestamps]&quot;,
-        &quot;[--skip-migration]&quot;
-      ].join(' ')
+      [super, banner_args, banner_options].join(' ')
     end
     
 end
\ No newline at end of file</diff>
      <filename>generators/dry_scaffold/dry_scaffold_generator.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,110 +1,110 @@
-class ResourcesController &lt; ApplicationController
+class DucksController &lt; ApplicationController
   
   before_filter :load_resource, :only =&gt; [:show, :edit, :update, :destroy]
-  before_filter :load_and_paginate_resources, :only =&gt; [:index]
+  before_filter :load_and_paginate_resource, :only =&gt; [:index]
   
-  # GET /resources
-  # GET /resources.xml
-  # GET /resources.json
+  # GET /ducks
+  # GET /ducks.xml
+  # GET /ducks.json
   def index
     respond_to do |format|
       format.html # index.html.haml
       #format.js  # index.js.rjs
-      format.xml  { render :xml =&gt; @resources }
-      format.json { render :json =&gt; @resources }
+      format.xml  { render :xml =&gt; @ducks }
+      format.json { render :json =&gt; @ducks }
       format.atom # index.atom.builder
       format.rss  # index.rss.builder
     end
   end
   
-  # GET /resources/:id
-  # GET /resources/:id.xml
-  # GET /resources/:id.json
+  # GET /ducks/:id
+  # GET /ducks/:id.xml
+  # GET /ducks/:id.json
   def show
     respond_to do |format|
       format.html # show.html.haml
       #format.js  # show.js.rjs
-      format.xml  { render :xml =&gt; @resource }
-      format.json { render :json =&gt; @resource }
+      format.xml  { render :xml =&gt; @duck }
+      format.json { render :json =&gt; @duck }
     end
   end
   
-  # GET /resources/new
-  # GET /resources/new.xml
-  # GET /resources/new.json
+  # GET /ducks/new
+  # GET /ducks/new.xml
+  # GET /ducks/new.json
   def new
-    @resource = Resource.new
+    @duck = Duck.new
     
     respond_to do |format|
       format.html # new.html.haml
       #format.js  # new.js.rjs
-      format.xml  { render :xml =&gt; @resource }
-      format.json { render :json =&gt; @resource }
+      format.xml  { render :xml =&gt; @duck }
+      format.json { render :json =&gt; @duck }
     end
   end
   
-  # GET /resources/:id/edit
+  # GET /ducks/:id/edit
   def edit
   end
   
-  # POST /resources
-  # POST /resources.xml
-  # POST /resources.json
+  # POST /ducks
+  # POST /ducks.xml
+  # POST /ducks.json
   def create
-    @resource = Resource.new(params[:resource])
+    @duck = Duck.new(params[:duck])
     
     respond_to do |format|
-      if @resource.save
-        flash[:notice] = 'Resource was successfully created.'
-        format.html { redirect_to(@resource) }
+      if @duck.save
+        flash[:notice] = &quot;Duck was successfully created.&quot;
+        format.html { redirect_to(@duck) }
         #format.js  # create.js.rjs
-        format.xml  { render :xml =&gt; @resource, :status =&gt; :created, :location =&gt; @resource }
-        format.json { render :json =&gt; @resource, :status =&gt; :created, :location =&gt; @resource }
+        format.xml  { render :xml =&gt; @duck, :status =&gt; :created, :location =&gt; @duck }
+        format.json { render :json =&gt; @duck, :status =&gt; :created, :location =&gt; @duck }
       else
-        #flash[:error] = 'Resource could not be created.'
+        flash[:error] = &quot;Duck could not be created.&quot;
         format.html { render 'new' }
         #format.js  # create.js.rjs
-        format.xml  { render :xml =&gt; @resource.errors, :status =&gt; :unprocessable_entity }
-        format.json { render :json =&gt; @resource.errors, :status =&gt; :unprocessable_entity }
+        format.xml  { render :xml =&gt; @duck.errors, :status =&gt; :unprocessable_entity }
+        format.json { render :json =&gt; @duck.errors, :status =&gt; :unprocessable_entity }
       end
     end
   end
   
-  # PUT /resources/:id
-  # PUT /resources/:id.xml
-  # PUT /resources/:id.json
+  # PUT /ducks/:id
+  # PUT /ducks/:id.xml
+  # PUT /ducks/:id.json
   def update
     respond_to do |format|
-      if @resource.update_attributes(params[:resource])
-        flash[:notice] = 'Resource was successfully updated.'
-        format.html { redirect_to(@resource) }
+      if @duck.update_attributes(params[:duck])
+        flash[:notice] = &quot;Duck was successfully updated.&quot;
+        format.html { redirect_to(@duck) }
         #format.js  # update.js.rjs
         format.xml  { head :ok }
         format.json { head :ok }
       else
-        #flash[:error] = 'Resource could not be updated.'
+        flash[:error] = &quot;Duck could not be updated.&quot;
         format.html { render 'edit' }
         #format.js  # update.js.rjs
-        format.xml  { render :xml =&gt; @resource.errors, :status =&gt; :unprocessable_entity }
-        format.json { render :json =&gt; @resource.errors, :status =&gt; :unprocessable_entity }
+        format.xml  { render :xml =&gt; @duck.errors, :status =&gt; :unprocessable_entity }
+        format.json { render :json =&gt; @duck.errors, :status =&gt; :unprocessable_entity }
       end
     end
   end
   
-  # DELETE /resources/:id
-  # DELETE /resources/:id.xml
-  # DELETE /resources/:id.json
+  # DELETE /ducks/:id
+  # DELETE /ducks/:id.xml
+  # DELETE /ducks/:id.json
   def destroy
     respond_to do |format|
-      if @resource.destroy
-        flash[:notice] = 'Resource was successfully destroyed.'
-        format.html { redirect_to(resources_url) }
+      if @duck.destroy
+        flash[:notice] = &quot;Duck was successfully destroyed.&quot;
+        format.html { redirect_to(ducks_url) }
         #format.js  # destroy.js.rjs
         format.xml  { head :ok }
         format.json { head :ok }
       else
-        flash[:error] = 'Resource could not be destroyed.'
-        format.html { redirect_to(resource_url(@resource)) }
+        flash[:error] = &quot;Duck could not be destroyed.&quot;
+        format.html { redirect_to(duck_url(@duck)) }
         #format.js  # destroy.js.rjs
         format.xml  { head :unprocessable_entity }
         format.json { head :unprocessable_entity }
@@ -112,7 +112,7 @@ class ResourcesController &lt; ApplicationController
     end
   end
   
-  # GET /resources/custom_action
+  # GET /ducks/custom_action
   def custom_action
   end
   
@@ -122,12 +122,12 @@ class ResourcesController &lt; ApplicationController
       paginate_options ||= {}
       paginate_options[:page] ||= (params[:page] || 1)
       paginate_options[:per_page] ||= (params[:per_page] || 20)
-      @collection = @resources ||= Resource.paginate(paginate_options)
+      @collection = @ducks ||= Duck.paginate(paginate_options)
     end
-    alias :load_and_paginate_resources :collection
+    alias :load_and_paginate_ducks :collection
     
     def resource
-      @resource = @resource = ||= Resource.find(params[:id])
+      @resource = @duck = ||= Duck.find(params[:id])
     end
     alias :load_resource :resource
     </diff>
      <filename>generators/dry_scaffold/prototypes/controllers/action_controller.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,10 +1,10 @@
-class ResourcesController &lt; InheritedResources::Base
+class DucksController &lt; InheritedResources::Base
   
   actions :index, :show, :new, :create, :edit, :update, :destroy
   respond_to :html, :xml, :json
   respond_to :atom, :rss, :only =&gt; [:index]
   
-  # GET /resources/custom_action
+  # GET /ducks/custom_action
   def custom_action
   end
   
@@ -14,11 +14,11 @@ class ResourcesController &lt; InheritedResources::Base
       paginate_options ||= {}
       paginate_options[:page] ||= (params[:page] || 1)
       paginate_options[:per_page] ||= (params[:per_page] || 20)
-      @collection = @resources ||= end_of_association_chain.paginate(paginate_options)
+      @collection = @ducks ||= end_of_association_chain.paginate(paginate_options)
     end
     
     def resource
-      @resource = @resource ||= end_of_association_chain.find(params[:id])
+      @resource = @duck ||= end_of_association_chain.find(params[:id])
     end
     
 end</diff>
      <filename>generators/dry_scaffold/prototypes/controllers/inherited_resources_controller.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,42 +1,53 @@
-require File.expand_path(File.join(File.dirname(__FILE__), '..', 'test_helper'))
+require 'test_helper'
 
-class ResourceControllerTest &lt; ActionController::TestCase
+class DucksControllerTest &lt; ActionController::TestCase
   
   test 'create' do
-    Resource.any_instance.expects(:save).returns(true)
-    post :create, :resource =&gt; { }
-    assert_response :redirect 
+    Duck.any_instance.expects(:save).returns(true)
+    @duck = ducks(:basic)
+    post :create, :duck =&gt; @duck.attributes
+    assert_not_nil flash[:notice]
+    assert_response :redirect
   end
   
-  test 'create_with_failure' do
-    Resource.any_instance.expects(:save).returns(false)
-    post :create, :resource =&gt; { }
+  test 'create with failure' do
+    Duck.any_instance.expects(:save).returns(false)
+    @duck = ducks(:basic)
+    post :create, :duck =&gt; @duck.attributes
+    assert_not_nil flash[:error]
     assert_template 'new'
   end
   
-  test 'destroy' do
-    Resource.any_instance.expects(:destroy).returns(true)
-    delete :destroy, :id =&gt; resources(:one).to_param
+  test 'update' do
+    Duck.any_instance.expects(:save).returns(true)
+    @duck = ducks(:basic)
+    put :update, :id =&gt; @duck.to_param, :duck =&gt; @duck.attributes
     assert_not_nil flash[:notice]
     assert_response :redirect
   end
   
-  test 'destroy_with_failure' do
-    Resource.any_instance.expects(:destroy).returns(false)
-    delete :destroy, :id =&gt; resources(:one).to_param
+  test 'update with failure' do
+    Duck.any_instance.expects(:save).returns(false)
+    @duck = ducks(:basic)
+    put :update, :id =&gt; @duck.to_param, :duck =&gt; @duck.attributes
     assert_not_nil flash[:error]
-    assert_response :redirect
+    assert_template 'edit'
   end
   
-  test 'edit' do
-    get :edit, :id =&gt; resources(:one).to_param
-    assert_response :success
+  test 'destroy' do
+    Duck.any_instance.expects(:destroy).returns(true)
+    @duck = ducks(:basic)
+    delete :destroy, :id =&gt; @duck.to_param
+    assert_not_nil flash[:notice]
+    assert_response :redirect
   end
   
-  test 'index' do
-    get :index
-    assert_response :success
-    assert_not_nil assigns(:resources)
+  test 'destroy with failure' do
+    Duck.any_instance.expects(:destroy).returns(false)
+    @duck = ducks(:basic)
+    delete :destroy, :id =&gt; @duck.to_param
+    assert_not_nil flash[:error]
+    assert_response :redirect
   end
   
   test 'new' do
@@ -44,21 +55,22 @@ class ResourceControllerTest &lt; ActionController::TestCase
     assert_response :success
   end
   
-  test 'show' do
-    get :show, :id =&gt; resources(:one).to_param
+  test 'edit' do
+    @duck = ducks(:basic)
+    get :edit, :id =&gt; @duck.to_param
     assert_response :success
   end
   
-  test 'update' do
-    Resource.any_instance.expects(:save).returns(true)
-    put :update, :id =&gt; resources(:one).to_param, :resource =&gt; { }
-    assert_response :redirect
+  test 'show' do
+    @duck = ducks(:basic)
+    get :show, :id =&gt; @duck.to_param
+    assert_response :success
   end
   
-  test 'update_with_failure' do
-    Resource.any_instance.expects(:save).returns(false)
-    put :update, :id =&gt; resources(:one).to_param, :resource =&gt; { }
-    assert_template 'edit'
+  test 'index' do
+    get :index
+    assert_response :success
+    assert_not_nil assigns(:ducks)
   end
   
 end
\ No newline at end of file</diff>
      <filename>generators/dry_scaffold/prototypes/controllers/tests/test_unit/functional_test.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,3 +1,3 @@
-module ResourcesHelper
+module DucksHelper
   
 end
\ No newline at end of file</diff>
      <filename>generators/dry_scaffold/prototypes/helpers/helper.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,5 +1,9 @@
 require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'test_helper'))
  
-class ResourcesHelperTest &lt; ActionView::TestCase
+class DucksHelperTest &lt; ActionView::TestCase
+  
+  test 'something' do
+    assert true
+  end
   
 end
\ No newline at end of file</diff>
      <filename>generators/dry_scaffold/prototypes/helpers/tests/test_unit/unit_test.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,18 +1,18 @@
 atom_feed(:language =&gt; I18n.locale) do |feed|
-  feed.title 'Resources'
-  feed.subtitle 'Index of all resources.'
-  # Optional: feed.link :href =&gt; resources_url(:atom), :rel =&gt; 'self'
-  feed.updated (@resources.first.created_at rescue Time.now.utc).strftime('%Y-%m-%dT%H:%M:%SZ'))
+  feed.title 'Ducks'
+  feed.subtitle 'Index of all ducks.'
+  # Optional: feed.link :href =&gt; ducks_url(:atom), :rel =&gt; 'self'
+  feed.updated (@ducks.first.created_at rescue Time.now.utc).strftime('%Y-%m-%dT%H:%M:%SZ'))
   
-  @resources.each do |resource|
-    feed.entry(resource) do |entry|
+  @ducks.each do |duck|
+    feed.entry(duck) do |entry|
       entry.title 'title'
       entry.summary 'summary'
       # Optional: entry.content 'content', :type =&gt; 'html'
-      # Optional: entry.updated resource.try(:updated_at).strftime('%Y-%m-%dT%H:%M:%SZ')
-      # Optional: entry.link :href =&gt; resource_url(resource, :atom)
+      # Optional: entry.updated duck.try(:updated_at).strftime('%Y-%m-%dT%H:%M:%SZ')
+      # Optional: entry.link :href =&gt; duck_url(duck, :atom)
       
-      resource.author do |author|
+      duck.author do |author|
         author.name 'author_name'
       end
     end</diff>
      <filename>generators/dry_scaffold/prototypes/views/builder/index.atom.builder</filename>
    </modified>
    <modified>
      <diff>@@ -1,18 +1,18 @@
 xml.instruct! :xml, :version =&gt; '1.0'
 xml.rss(:version =&gt; '2.0') do
   xml.channel do
-    xml.title 'Resources'
-    xml.description 'Index of all resources.'
-    xml.link resources_url(:rss)
-    xml.lastBuildDate (@resources.first.created_at rescue Time.now.utc).to_s(:rfc822)
+    xml.title 'Ducks'
+    xml.description 'Index of all ducks.'
+    xml.link ducks_url(:rss)
+    xml.lastBuildDate (@ducks.first.created_at rescue Time.now.utc).to_s(:rfc822)
     xml.language I18n.locale
     
-    @resources.each do |resource|
+    @ducks.each do |duck|
       xml.item do
         xml.title 'title'
         xml.description 'summary'
-        xml.pubDate resource.try(:created_at).to_s(:rfc822)
-        xml.link resource_url(resource, :rss)
+        xml.pubDate duck.try(:created_at).to_s(:rfc822)
+        xml.link duck_url(duck, :rss)
         
         xml.author 'author_name'
       end</diff>
      <filename>generators/dry_scaffold/prototypes/views/builder/index.rss.builder</filename>
    </modified>
    <modified>
      <diff>@@ -1,9 +1,9 @@
-- content_tag_for(:tr, resource) do
-  %td.title= h resource.try(:title)
-  %td.description= h resource.try(:description)
+- content_tag_for(:tr, duck) do
+  %td.title= h duck.try(:title)
+  %td.description= h duck.try(:description)
   %td.actions
-    = link_to 'Show', resource_url(resource)
+    = link_to 'Show', duck_url(duck)
     |
-    = link_to 'Edit', edit_resource_url(resource)
+    = link_to 'Edit', edit_duck_url(duck)
     |
-    = link_to 'Destroy', resource_url(resource), :confirm =&gt; 'Are you sure?', :method =&gt; :delete
\ No newline at end of file
+    = link_to 'Destroy', duck_url(duck), :confirm =&gt; 'Are you sure?', :method =&gt; :delete
\ No newline at end of file</diff>
      <filename>generators/dry_scaffold/prototypes/views/haml/_item.html.haml</filename>
    </modified>
    <modified>
      <diff>@@ -1,10 +1,10 @@
 %h1.heading
-  = &quot;Editing resource %s&quot; % @resource.id
+  = &quot;Editing duck %s&quot; % @duck.id
   
-- semantic_form_for(@resource) do |form|
+- semantic_form_for(@duck) do |form|
   = render 'form', :form =&gt; form
   - form.buttons do
     = form.commit_button 'Update'
     
 %p.actions
-  = link_to 'Cancel', resources_url
\ No newline at end of file
+  = link_to 'Cancel', ducks_url
\ No newline at end of file</diff>
      <filename>generators/dry_scaffold/prototypes/views/haml/edit.html.haml</filename>
    </modified>
    <modified>
      <diff>@@ -1,8 +1,8 @@
 %h1.heading
-  = 'Sections'
+  = 'Ducks'
   
 %p.actions
-  = link_to 'New resource', new_resource_url
+  = link_to 'New duck', new_duck_url
   
 %table
   %thead.header
@@ -11,7 +11,7 @@
       %th.description= 'Description'
       %th.actions= 'Actions'
   %tbody.items.resources
-    - @collection.each do |resource|
-      = render 'item', :resource =&gt; resource
+    - @ducks.each do |duck|
+      = render 'item', :duck =&gt; duck
       
-= will_paginate(@collection)
\ No newline at end of file
+= will_paginate(@ducks)
\ No newline at end of file</diff>
      <filename>generators/dry_scaffold/prototypes/views/haml/index.html.haml</filename>
    </modified>
    <modified>
      <diff>@@ -1,6 +1,5 @@
 !!! 1.1
-
-%html{html_attrs(I18n.locale)}
+%html{html_attrs(I18n.locale).update(:lang =&gt; nil)}
   %head
     %title= &quot;#{controller_class_name}: #{controller.action_name}&quot;
     </diff>
      <filename>generators/dry_scaffold/prototypes/views/haml/layout.html.haml</filename>
    </modified>
    <modified>
      <diff>@@ -1,10 +1,10 @@
 %h1.heading
-  = 'New resource'
+  = 'New duck'
   
-- semantic_form_for(@resource) do |form|
+- semantic_form_for(@duck) do |form|
   = render 'form', :form =&gt; form
   - form.buttons do
     = form.commit_button 'Create'
     
 %p.actions
-  = link_to 'Cancel', resources_url
\ No newline at end of file
+  = link_to 'Cancel', ducks_url
\ No newline at end of file</diff>
      <filename>generators/dry_scaffold/prototypes/views/haml/new.html.haml</filename>
    </modified>
    <modified>
      <diff>@@ -1,13 +1,13 @@
 %h1.heading
-  = &quot;Resource %s&quot; % @resource.id
+  = &quot;Duck %s&quot; % @duck.id
   
-- content_tag_for(:dl, @resource) do
+- content_tag_for(:dl, @duck) do
   %dt.label= 'Title'
-  %dd.title= h @resource.try(:title)
+  %dd.title= h @duck.try(:title)
   %dt.label= 'Description'
-  %dd.description= h @resource.try(:description)
+  %dd.description= h @duck.try(:description)
   
 %p.actions
-  = link_to 'Edit', edit_resource_url(@resource)
+  = link_to 'Edit', edit_duck_url(@duck)
   |
-  = link_to 'Index', resources_url
\ No newline at end of file
+  = link_to 'Index', ducks_url
\ No newline at end of file</diff>
      <filename>generators/dry_scaffold/prototypes/views/haml/show.html.haml</filename>
    </modified>
    <modified>
      <diff>@@ -105,7 +105,7 @@ class &lt;%= controller_class_name %&gt;Controller &lt; ApplicationController
     
     respond_to do |format|
       if &lt;%= resource_instance %&gt;.save
-        flash[:notice] = '&lt;%= singular_name.humanize %&gt; was successfully created.'
+        flash[:notice] = &quot;&lt;%= singular_name.humanize %&gt; was successfully created.&quot;
 &lt;% formats.each do |_format| -%&gt;
 &lt;% case _format when :html then -%&gt;
         format.html { redirect_to(&lt;%= resource_instance %&gt;) }
@@ -122,7 +122,7 @@ class &lt;%= controller_class_name %&gt;Controller &lt; ApplicationController
 &lt;% end -%&gt;
 &lt;% end -%&gt;
       else
-        #flash[:error] = '&lt;%= singular_name.humanize %&gt; could not be created.'
+        flash[:error] = &quot;&lt;%= singular_name.humanize %&gt; could not be created.&quot;
 &lt;% formats.each do |_format| -%&gt;
 &lt;% case _format when :html then -%&gt;
         format.html { render 'new' }
@@ -150,6 +150,7 @@ class &lt;%= controller_class_name %&gt;Controller &lt; ApplicationController
   def update
     respond_to do |format|
       if &lt;%= resource_instance %&gt;.update_attributes(params[:&lt;%= singular_name %&gt;])
+        flash[:notice] = &quot;&lt;%= singular_name.humanize %&gt; was successfully updated.&quot;
 &lt;% formats.each do |_format| -%&gt;
 &lt;% case _format when :html then -%&gt;
         format.html { redirect_to(&lt;%= resource_instance %&gt;) }
@@ -162,7 +163,7 @@ class &lt;%= controller_class_name %&gt;Controller &lt; ApplicationController
 &lt;% end -%&gt;
 &lt;% end -%&gt;
       else
-        #flash[:error] = '&lt;%= singular_name.humanize %&gt; could not be updated.'
+        flash[:error] = &quot;&lt;%= singular_name.humanize %&gt; could not be updated.&quot;
 &lt;% formats.each do |_format| -%&gt;
 &lt;% case _format when :html then -%&gt;
         format.html { render 'edit' }
@@ -190,7 +191,7 @@ class &lt;%= controller_class_name %&gt;Controller &lt; ApplicationController
   def destroy
     respond_to do |format|
       if &lt;%= resource_instance %&gt;.destroy
-        flash[:notice] = '&lt;%= singular_name.humanize %&gt; was successfully destroyed.'
+        flash[:notice] = &quot;&lt;%= singular_name.humanize %&gt; was successfully destroyed.&quot;
 &lt;% formats.each do |_format| -%&gt;
 &lt;% case _format when :html then -%&gt;
         format.html { redirect_to(&lt;%= plural_name %&gt;_url) }
@@ -203,7 +204,7 @@ class &lt;%= controller_class_name %&gt;Controller &lt; ApplicationController
 &lt;% end -%&gt;
 &lt;% end -%&gt;
       else
-        flash[:error] = '&lt;%= singular_name.humanize %&gt; could not be destroyed.'
+        flash[:error] = &quot;&lt;%= singular_name.humanize %&gt; could not be destroyed.&quot;
 &lt;% formats.each do |_format| -%&gt;
 &lt;% case _format when :html then -%&gt;
         format.html { redirect_to(&lt;%= singular_name %&gt;_url(&lt;%= resource_instance %&gt;)) }</diff>
      <filename>generators/dry_scaffold/templates/controllers/action_controller.rb</filename>
    </modified>
    <modified>
      <diff>@@ -29,7 +29,7 @@ class &lt;%= controller_class_name %&gt;Controller &lt; InheritedResources::Base
       paginate_options ||= {}
       paginate_options[:page] ||= (params[:page] || 1)
       paginate_options[:per_page] ||= (params[:per_page] || 20)
-      @&lt;%= plural_name %&gt; = @&lt;%= model_plural_name %&gt; ||= end_of_association_chain.paginate(paginate_options)
+      @collection = @&lt;%= model_plural_name %&gt; ||= end_of_association_chain.paginate(paginate_options)
 &lt;% else -%&gt;
       @collection = @&lt;%= model_plural_name %&gt; ||= end_of_association_chain.all
 &lt;% end -%&gt;</diff>
      <filename>generators/dry_scaffold/templates/controllers/inherited_resources_controller.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,83 +1,92 @@
-require File.expand_path(File.join(File.dirname(__FILE__), '..', 'test_helper'))
+require 'test_helper'
 
 class &lt;%= controller_class_name %&gt;ControllerTest &lt; ActionController::TestCase
   
 &lt;% if actions.include?(:create) -%&gt;
-  test &quot;create&quot; do
+  test 'create' do
     &lt;%= class_name %&gt;.any_instance.expects(:save).returns(true)
-    post :create, :&lt;%= file_name %&gt; =&gt; { }
+    &lt;%= resource_instance %&gt; = &lt;%= build_object %&gt;
+    post :create, :&lt;%= singular_name %&gt; =&gt; &lt;%= resource_instance %&gt;.attributes
     assert_response :redirect
   end
   
-  test &quot;create_with_failure&quot; do
+  test 'create with failure' do
     &lt;%= class_name %&gt;.any_instance.expects(:save).returns(false)
-    post :create, :&lt;%= file_name %&gt; =&gt; { }
+    &lt;%= resource_instance %&gt; = &lt;%= build_object %&gt;
+    post :create, :&lt;%= singular_name %&gt; =&gt; &lt;%= resource_instance %&gt;.attributes
     assert_template 'new'
   end
   
 &lt;% end -%&gt;
+&lt;% if actions.include?(:update) -%&gt;
+  test 'update' do
+    &lt;%= class_name %&gt;.any_instance.expects(:save).returns(true)
+    &lt;%= resource_instance %&gt; = &lt;%= build_object %&gt;
+    put :update, :id =&gt; &lt;%= build_object %&gt;.to_param, :&lt;%= singular_name %&gt; =&gt; &lt;%= resource_instance %&gt;.attributes
+    assert_response :redirect
+  end
+  
+  test 'update with failure' do
+    &lt;%= class_name %&gt;.any_instance.expects(:save).returns(false)
+    &lt;%= resource_instance %&gt; = &lt;%= build_object %&gt;
+    put :update, :id =&gt; &lt;%= build_object %&gt;.to_param, :&lt;%= singular_name %&gt; =&gt; &lt;%= resource_instance %&gt;.attributes
+    assert_template 'edit'
+  end
+  
+&lt;% end -%&gt;
 &lt;% if actions.include?(:destroy) -%&gt;
-  test &quot;destroy&quot; do
+  test 'destroy' do
     &lt;%= class_name %&gt;.any_instance.expects(:destroy).returns(true)
-    delete :destroy, :id =&gt; &lt;%= table_name %&gt;(:one).to_param
+    &lt;%= resource_instance %&gt; = &lt;%= build_object %&gt;
+    delete :destroy, :id =&gt; &lt;%= resource_instance %&gt;.to_param
     assert_not_nil flash[:notice] 
     assert_response :redirect
   end
   
-  test &quot;destroy_with_failure&quot; do
+  test 'destroy with failure' do
     &lt;%= class_name %&gt;.any_instance.expects(:destroy).returns(false)
-    delete :destroy, :id =&gt; &lt;%= table_name %&gt;(:one).to_param
+    &lt;%= resource_instance %&gt; = &lt;%= build_object %&gt;
+    delete :destroy, :id =&gt; &lt;%= resource_instance %&gt;.to_param
     assert_not_nil flash[:error]
     assert_response :redirect
   end
   
 &lt;% end -%&gt;
-&lt;% if actions.include?(:edit) -%&gt;
-  test &quot;edit&quot; do
-    get :edit, :id =&gt; &lt;%= table_name %&gt;(:one).to_param
-    assert_response :success
-  end
-  
-&lt;% end -%&gt;
-&lt;% if actions.include?(:index) -%&gt;
-  test &quot;index&quot; do
-    get :index
+&lt;% if actions.include?(:new) -%&gt;
+  test 'new' do
+    get :new
     assert_response :success
-    assert_not_nil assigns(:&lt;%= table_name %&gt;)
   end
   
 &lt;% end -%&gt;
-&lt;% if actions.include?(:new) -%&gt;
-  test &quot;new&quot; do
-    get :new
+&lt;% if actions.include?(:edit) -%&gt;
+  test 'edit' do
+    &lt;%= resource_instance %&gt; = &lt;%= build_object %&gt;
+    get :edit, :id =&gt; &lt;%= resource_instance %&gt;.to_param
     assert_response :success
   end
   
 &lt;% end -%&gt;
 &lt;% if actions.include?(:show) -%&gt;
-  test &quot;show&quot; do
-    get :show, :id =&gt; &lt;%= table_name %&gt;(:one).to_param
+  test 'show' do
+    &lt;%= resource_instance %&gt; = &lt;%= build_object %&gt;
+    get :show, :id =&gt; &lt;%= resource_instance %&gt;.to_param
     assert_response :success
   end
   
 &lt;% end -%&gt;
-&lt;% if actions.include?(:update) -%&gt;
-  test &quot;update&quot; do
-    &lt;%= class_name %&gt;.any_instance.expects(:save).returns(true)
-    put :update, :id =&gt; &lt;%= table_name %&gt;(:one).to_param, :&lt;%= file_name %&gt; =&gt; { }
-    assert_response :redirect
-  end
-  
-  test &quot;update_with_failure&quot; do
-    &lt;%= class_name %&gt;.any_instance.expects(:save).returns(false)
-    put :update, :id =&gt; &lt;%= table_name %&gt;(:one).to_param, :&lt;%= file_name %&gt; =&gt; { }
-    assert_template 'edit'
+&lt;% if actions.include?(:index) -%&gt;
+  test 'index' do
+    get :index
+    assert_response :success
+    assert_not_nil assigns(:&lt;%= table_name %&gt;)
   end
   
 &lt;% end -%&gt;
 &lt;% (actions - DryScaffoldGenerator::DEFAULT_CONTROLLER_ACTIONS).each do |action| -%&gt;
-  test &quot;&lt;%= action.to_s %&gt;&quot; do
-    assert true
+  test '&lt;%= action.to_s %&gt;' do
+    get :&lt;%= action.to_s %&gt;
+    assert_response :success
   end
   
 &lt;% end -%&gt;</diff>
      <filename>generators/dry_scaffold/templates/controllers/tests/test_unit/functional_test.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,5 +1,9 @@
-require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'test_helper'))
+require 'test_helper'
  
 class &lt;%= controller_class_name %&gt;HelperTest &lt; ActionView::TestCase
   
+  test 'something' do
+    assert true
+  end
+  
 end
\ No newline at end of file</diff>
      <filename>generators/dry_scaffold/templates/helpers/tests/test_unit/unit_test.rb</filename>
    </modified>
    <modified>
      <diff>@@ -31,7 +31,11 @@ namespace :dry_scaffold do
     require File.join(GEM_ROOT, 'lib', 'setup_helper')
     include SetupHelper
     
-    GEMS = [:haml, :will_paginate, :'josevalim-inherited_resources', :'justinfrench-formtastic'].freeze
+    GEMS = [:haml,
+            :'mislav-will_paginate',
+            :'josevalim-inherited_resources',
+            :'justinfrench-formtastic',
+            :'thoughtbot-shoulda'].freeze
     PLUGINS = [].freeze
     
     desc &quot;Install dependencies for fully advantage of this generator.&quot;</diff>
      <filename>tasks/dry_scaffold.rake</filename>
    </modified>
  </modified>
  <removed type="array">
    <removed>
      <filename>generators/dry_model/prototypes/test_data/active_record_fixtures.yml</filename>
    </removed>
    <removed>
      <filename>generators/dry_model/prototypes/test_data/factory_girl_factories.rb</filename>
    </removed>
    <removed>
      <filename>generators/dry_model/prototypes/test_data/machinist_factories.rb</filename>
    </removed>
    <removed>
      <filename>generators/dry_model/templates/models/test_data/active_record_fixtures.yml</filename>
    </removed>
    <removed>
      <filename>generators/dry_model/templates/models/test_data/factory_girl_factories.rb</filename>
    </removed>
    <removed>
      <filename>generators/dry_model/templates/models/test_data/machinist_factories.rb</filename>
    </removed>
  </removed>
  <parents type="array">
    <parent>
      <id>603f73c92368718ea88d8ba5ed8920d25ebacfe5</id>
    </parent>
  </parents>
  <author>
    <name>Jonas Grimfelt</name>
    <email>grimen@gmail.com</email>
  </author>
  <url>http://github.com/grimen/dry_scaffold/commit/a0f1ab42de00da23c7387f4aa2299d049bbdbd79</url>
  <id>a0f1ab42de00da23c7387f4aa2299d049bbdbd79</id>
  <committed-date>2009-07-22T15:57:35-07:00</committed-date>
  <authored-date>2009-07-22T15:57:35-07:00</authored-date>
  <message>Major refactoring - actually more of a re-write. Generates robust tests (the old ones where a bit sloppy). Added Shoulda test generation.</message>
  <tree>cf31afa0bbc97a9b49ebeb4eb4b519db74433366</tree>
  <committer>
    <name>Jonas Grimfelt</name>
    <email>grimen@gmail.com</email>
  </committer>
</commit>
