Webrick Failing with Illegal Instruction

I've just started a new rails project (3.0.1, ruby 1.9.2 on Mac OS X), and have a few parts of it built out. I've just created new controller/views using rails g scaffold_controller Lesson, and then added a route to routes.rb with "resources :lessons"

Now, when i go to /lessons, Webrick fails with "Illegal instruction"

The controller function getting hit is lessons#index, and looks like this:

# GET /lessons # GET /lessons.xml def index   @lessons = Lesson.all

  respond_to do |format|     format.html index.html.erb     format.xml { render :xml => @lessons }   end end

If i comment out the respond_to section, the index page renders fine with no crashing. I have no idea what I could have done to make it begin to crash with respond_to? This is the first time i've used "resources" in my app. What can I do to even start to debug this issue? Thanks!

With additional testing I've found that anywhere i put format.html in a respond_to block, I get the same error. Any thoughts on how I can start to track this down?

Ben Porterfield wrote in post #960026:

Just drop the index.html.erb part so your block looks like this:

respond_to do |format|    format.html    format.xml { render :xml => @lessons } end

index.html.erb will already be inferred from the action name, and if you do want to set it to something different, you would say

respond_to do |format|    format.html { render :template => '/foo/bar' }    format.xml { render :xml => @lessons } end

Walter

Awesome, this did indeed fix the problem!

However, I didn't write the format code - this code was generated with:

rails g scaffold_controller Lessons

Which leads me to believe that this is the proper format code....3.0.1 generates "format.html {filename}.html.erb" for each controller function - is this a generator bug, or do I have a problem with my system?

Walter Davis wrote in post #960032:

That may indeed be the new Rails 3 syntax, I haven't spent any time with that yet, so sorry if I led you astray. But I suspect your problems began when you used the plural name for your scaffold argument. Try again, using rails g scaffold_controller Lesson and see if there is a different output.

Walter

It's even simpler than that. Chalk it up to a rails newbie - sorry for the bother. Here's what I did:

Rails generated this:

# GET /appointments/1   # GET /appointments/1.xml   def show     @appointment = Appointment.find(params[:id])

    respond_to do |format|       format.html # show.html.erb       format.xml { render :xml => @appointment }     end   end

I had made a few changes, but then was undoing them - I must have thought that I had made those comments after format.html and uncommented them myself.Bah!

Walter Davis wrote in post #960107:

I’ve just started a new rails project (3.0.1, ruby 1.9.2 on Mac OS X),

and have a few parts of it built out. I’ve just created new

controller/views using rails g scaffold_controller Lesson, and then

added a route to routes.rb with “resources :lessons”

Now, when i go to /lessons, Webrick fails with “Illegal instruction”

The controller function getting hit is lessons#index, and looks like

this:

GET /lessons

GET /lessons.xml

def index

@lessons = Lesson.all

respond_to do |format|

format.html index.html.erb

format.xml { render :xml => @lessons }

end

I think you need to comment out index.html.erb… should not be there, or if you want to specify it, it should be a string or something like { render :action => “index” }:

respond_to do |format|

format.html  #index.html.erb

format.xml { render :xml => @lessons }

end

I’ve just started a new rails project (3.0.1, ruby 1.9.2 on Mac OS X),

and have a few parts of it built out. I’ve just created new

controller/views using rails g scaffold_controller Lesson, and then

added a route to routes.rb with “resources :lessons”

Now, when i go to /lessons, Webrick fails with “Illegal instruction”

The controller function getting hit is lessons#index, and looks like

this:

GET /lessons

GET /lessons.xml

def index

@lessons = Lesson.all

respond_to do |format|

format.html index.html.erb

format.xml { render :xml => @lessons }

end

I think you need to comment out index.html.erb… should not be there, or if you want to specify it, it should be a string or something like { render :action => “index” }:

respond_to do |format|

format.html  #index.html.erb

format.xml { render :xml => @lessons }

end

Oops… did not see that this already got responses.