Lighthouse has a new layout. Prefer the old one? Return to the old layout, and switch back any time from the link at the top of each page.

This project is archived and is in readonly mode.

Generator allows stupid errors

#4981

The generators allows for stupid errors like:
$ rails g nifty:scaffold title:string content:text rating:integer user_id:integer

I was distracted while writing this, and didn't realize that I forgot to name the scaffold. The generator did not have any problems with this:

create app/models/title:string.rb

  create  test/unit/title:string_test.rb
  create  test/fixtures/title:strings.yml
  create  db/migrate/20100626080439_create_title:strings.rb
  create  app/controllers/title:strings_controller.rb
  create  app/helpers/title:strings_helper.rb
  create  app/views/title:strings/index.html.erb
  create  app/views/title:strings/show.html.erb
  create  app/views/title:strings/new.html.erb
  create  app/views/title:strings/edit.html.erb
  create  app/views/title:strings/_form.html.erb
   route  resources :"title:strings"
  create  test/functional/title:strings_controller_test.rb

Unfortunately the typo error was harder to revert than I expected:

$ rails destroy scaffold title:string /Users/Jonas/.rvm/gems/ruby-1.9.1-p378/gems/actionpack-3.0.0.beta4/lib/action_dispatch/routing/route_set.rb:146:in module_eval': /Users/Jonas/.rvm/gems/ruby-1.9.1-p378/gems/actionpack-3.0.0.beta4/lib/action_dispatch/routing/route_set.rb:147: syntax error, unexpected ':', expecting ';' or '\n' (SyntaxError) ... def hash_for_title:strings_url(options = nil) ... ... ^ /Users/Jonas/.rvm/gems/ruby-1.9.1-p378/gems/actionpack-3.0.0.beta4/lib/action_dispatch/routing/route_set.rb:149: syntax error, unexpected keyword_end, expecting $end

          end                             ...
             ^
from /Users/Jonas/.rvm/gems/ruby-1.9.1-p378/gems/actionpack-3.0.0.beta4/lib/action_dispatch/routing/route_set.rb:146:in `define_hash_access'
from /Users/Jonas/.rvm/gems/ruby-1.9.1-p378/gems/actionpack-3.0.0.beta4/lib/action_dispatch/routing/route_set.rb:137:in `block in define_named_route_methods'
from /Users/Jonas/.rvm/gems/ruby-1.9.1-p378/gems/actionpack-3.0.0.beta4/lib/action_dispatch/routing/route_set.rb:135:in `each'
from /Users/Jonas/.rvm/gems/ruby-1.9.1-p378/gems/actionpack-3.0.0.beta4/lib/action_dispatch/routing/route_set.rb:135:in `define_named_route_methods'
from /Users/Jonas/.rvm/gems/ruby-1.9.1-p378/gems/actionpack-3.0.0.beta4/lib/action_dispatch/routing/route_set.rb:86:in `add'
from /Users/Jonas/.rvm/gems/ruby-1.9.1-p378/gems/actionpack-3.0.0.beta4/lib/action_dispatch/routing/route_set.rb:282:in `add_route'
from /Users/Jonas/.rvm/gems/ruby-1.9.1-p378/gems/actionpack-3.0.0.beta4/lib/action_dispatch/routing/mapper.rb:212:in `match'
from /Users/Jonas/.rvm/gems/ruby-1.9.1-p378/gems/actionpack-3.0.0.beta4/lib/action_dispatch/routing/mapper.rb:369:in `match'
from /Users/Jonas/.rvm/gems/ruby-1.9.1-p378/gems/actionpack-3.0.0.beta4/lib/action_dispatch/routing/mapper.rb:741:in `match'
from /Users/Jonas/.rvm/gems/ruby-1.9.1-p378/gems/actionpack-3.0.0.beta4/lib/action_dispatch/routing/mapper.rb:711:in `match'
from /Users/Jonas/.rvm/gems/ruby-1.9.1-p378/gems/actionpack-3.0.0.beta4/lib/action_dispatch/routing/mapper.rb:287:in `map_method'
from /Users/Jonas/.rvm/gems/ruby-1.9.1-p378/gems/actionpack-3.0.0.beta4/lib/action_dispatch/routing/mapper.rb:239:in `get'
from /Users/Jonas/.rvm/gems/ruby-1.9.1-p378/gems/actionpack-3.0.0.beta4/lib/action_dispatch/routing/mapper.rb:612:in `block (4 levels) in resources'
from /Users/Jonas/.rvm/gems/ruby-1.9.1-p378/gems/actionpack-3.0.0.beta4/lib/action_dispatch/routing/mapper.rb:329:in `scope'
from /Users/Jonas/.rvm/gems/ruby-1.9.1-p378/gems/actionpack-3.0.0.beta4/lib/action_dispatch/routing/mapper.rb:611:in `block (3 levels) in resources'
from /Users/Jonas/.rvm/gems/ruby-1.9.1-p378/gems/actionpack-3.0.0.beta4/lib/action_dispatch/routing/mapper.rb:814:in `with_scope_level'
from /Users/Jonas/.rvm/gems/ruby-1.9.1-p378/gems/actionpack-3.0.0.beta4/lib/action_dispatch/routing/mapper.rb:610:in `block (2 levels) in resources'
from /Users/Jonas/.rvm/gems/ruby-1.9.1-p378/gems/actionpack-3.0.0.beta4/lib/action_dispatch/routing/mapper.rb:814:in `with_scope_level'
from /Users/Jonas/.rvm/gems/ruby-1.9.1-p378/gems/actionpack-3.0.0.beta4/lib/action_dispatch/routing/mapper.rb:607:in `block in resources'
from /Users/Jonas/.rvm/gems/ruby-1.9.1-p378/gems/actionpack-3.0.0.beta4/lib/action_dispatch/routing/mapper.rb:329:in `scope'
from /Users/Jonas/.rvm/gems/ruby-1.9.1-p378/gems/actionpack-3.0.0.beta4/lib/action_dispatch/routing/mapper.rb:606:in `resources'
from /Users/Jonas/RailsProjects/betterspeakers/config/routes.rb:2:in `block in <top (required)>'
from /Users/Jonas/.rvm/gems/ruby-1.9.1-p378/gems/actionpack-3.0.0.beta4/lib/action_dispatch/routing/route_set.rb:213:in `instance_exec'
from /Users/Jonas/.rvm/gems/ruby-1.9.1-p378/gems/actionpack-3.0.0.beta4/lib/action_dispatch/routing/route_set.rb:213:in `draw'
from /Users/Jonas/RailsProjects/betterspeakers/config/routes.rb:1:in `<top (required)>'
from /Users/Jonas/.rvm/gems/ruby-1.9.1-p378/gems/activesupport-3.0.0.beta4/lib/active_support/dependencies.rb:208:in `load'
from /Users/Jonas/.rvm/gems/ruby-1.9.1-p378/gems/activesupport-3.0.0.beta4/lib/active_support/dependencies.rb:208:in `block in load'
from /Users/Jonas/.rvm/gems/ruby-1.9.1-p378/gems/activesupport-3.0.0.beta4/lib/active_support/dependencies.rb:198:in `block in load_dependency'
from /Users/Jonas/.rvm/gems/ruby-1.9.1-p378/gems/activesupport-3.0.0.beta4/lib/active_support/dependencies.rb:554:in `new_constants_in'
from /Users/Jonas/.rvm/gems/ruby-1.9.1-p378/gems/activesupport-3.0.0.beta4/lib/active_support/dependencies.rb:198:in `load_dependency'
from /Users/Jonas/.rvm/gems/ruby-1.9.1-p378/gems/activesupport-3.0.0.beta4/lib/active_support/dependencies.rb:208:in `load'
from /Users/Jonas/.rvm/gems/ruby-1.9.1-p378/gems/railties-3.0.0.beta4/lib/rails/application/routes_reloader.rb:29:in `block in reload!'
from /Users/Jonas/.rvm/gems/ruby-1.9.1-p378/gems/railties-3.0.0.beta4/lib/rails/application/routes_reloader.rb:29:in `each'
from /Users/Jonas/.rvm/gems/ruby-1.9.1-p378/gems/railties-3.0.0.beta4/lib/rails/application/routes_reloader.rb:29:in `reload!'
from /Users/Jonas/.rvm/gems/ruby-1.9.1-p378/gems/railties-3.0.0.beta4/lib/rails/application/routes_reloader.rb:41:in `reload_if_changed'
from /Users/Jonas/.rvm/gems/ruby-1.9.1-p378/gems/actionpack-3.0.0.beta4/lib/action_dispatch/railtie.rb:13:in `block (2 levels) in <class:Railtie>'
from /Users/Jonas/.rvm/gems/ruby-1.9.1-p378/gems/activesupport-3.0.0.beta4/lib/active_support/callbacks.rb:418:in `_run_prepare_callbacks'
from /Users/Jonas/.rvm/gems/ruby-1.9.1-p378/gems/activesupport-3.0.0.beta4/lib/active_support/callbacks.rb:88:in `run_callbacks'
from /Users/Jonas/.rvm/gems/ruby-1.9.1-p378/gems/actionpack-3.0.0.beta4/lib/action_dispatch/middleware/callbacks.rb:40:in `initialize'
from /Users/Jonas/.rvm/gems/ruby-1.9.1-p378/gems/actionpack-3.0.0.beta4/lib/action_dispatch/middleware/stack.rb:33:in `new'
from /Users/Jonas/.rvm/gems/ruby-1.9.1-p378/gems/actionpack-3.0.0.beta4/lib/action_dispatch/middleware/stack.rb:33:in `build'
from /Users/Jonas/.rvm/gems/ruby-1.9.1-p378/gems/actionpack-3.0.0.beta4/lib/action_dispatch/middleware/stack.rb:80:in `block in build'
from /Users/Jonas/.rvm/gems/ruby-1.9.1-p378/gems/actionpack-3.0.0.beta4/lib/action_dispatch/middleware/stack.rb:80:in `each'
from /Users/Jonas/.rvm/gems/ruby-1.9.1-p378/gems/actionpack-3.0.0.beta4/lib/action_dispatch/middleware/stack.rb:80:in `inject'
from /Users/Jonas/.rvm/gems/ruby-1.9.1-p378/gems/actionpack-3.0.0.beta4/lib/action_dispatch/middleware/stack.rb:80:in `build'
from /Users/Jonas/.rvm/gems/ruby-1.9.1-p378/gems/railties-3.0.0.beta4/lib/rails/application.rb:140:in `app'
from /Users/Jonas/.rvm/gems/ruby-1.9.1-p378/gems/railties-3.0.0.beta4/lib/rails/application/finisher.rb:35:in `block in <module:Finisher>'
from /Users/Jonas/.rvm/gems/ruby-1.9.1-p378/gems/railties-3.0.0.beta4/lib/rails/initializable.rb:25:in `instance_exec'
from /Users/Jonas/.rvm/gems/ruby-1.9.1-p378/gems/railties-3.0.0.beta4/lib/rails/initializable.rb:25:in `run'
from /Users/Jonas/.rvm/gems/ruby-1.9.1-p378/gems/railties-3.0.0.beta4/lib/rails/initializable.rb:55:in `block in run_initializers'
from /Users/Jonas/.rvm/gems/ruby-1.9.1-p378/gems/railties-3.0.0.beta4/lib/rails/initializable.rb:54:in `each'
from /Users/Jonas/.rvm/gems/ruby-1.9.1-p378/gems/railties-3.0.0.beta4/lib/rails/initializable.rb:54:in `run_initializers'
from /Users/Jonas/.rvm/gems/ruby-1.9.1-p378/gems/railties-3.0.0.beta4/lib/rails/application.rb:119:in `initialize!'
from /Users/Jonas/.rvm/gems/ruby-1.9.1-p378/gems/railties-3.0.0.beta4/lib/rails/application.rb:81:in `method_missing'
from /Users/Jonas/RailsProjects/betterspeakers/config/environment.rb:5:in `<top (required)>'
from /Users/Jonas/.rvm/gems/ruby-1.9.1-p378/gems/railties-3.0.0.beta4/lib/rails/application.rb:94:in `require'
from /Users/Jonas/.rvm/gems/ruby-1.9.1-p378/gems/railties-3.0.0.beta4/lib/rails/application.rb:94:in `require_environment!'
from /Users/Jonas/.rvm/gems/ruby-1.9.1-p378/gems/railties-3.0.0.beta4/lib/rails/application.rb:81:in `method_missing'
from /Users/Jonas/.rvm/gems/ruby-1.9.1-p378/gems/railties-3.0.0.beta4/lib/rails/commands.rb:16:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'

I'm no expert and the error is pretty dumb, but I'm sure other people eventually will do the same.

Oh, and I'm using Ryan's Nifty Generators http://github.com/ryanb/nifty-generators as well as psynix Rails 3 HAML Scaffold Generator http://github.com/mbleigh/haml-rails

Reported by Jonas Nielsen · June 26th, 2010 @ 09:17 AM

State: wontfix
Milestone: none
Assigned to: nobody
Importance: Low

Activity

  1. Rob Zolkos
    Rob Zolkos

    Rails built-in scaffold generator raieses an exception and won't run if using the same parameters as you tried with nifty_generators.

    The rails framework shouldn't be responsible for catching errors on parameters to 3rd party generators.

    I recommend adding this as an issue to Ryans github repo.

    October 14th, 2010 @ 03:04 PM

  2. Rohit Arondekar
    Rohit Arondekar
    • State changed from new to wontfix
    • Importance changed from to Low

    October 14th, 2010 @ 03:12 PM