As Sijo pointed out, calls to assert_recognizes should have
parentheses around the method parameters when the first parameter is a
hash. The error you're seeing is a syntax error in Ruby. The code
never gets executed because the Ruby parser barfs. The API docs are a
misleading in this case; assert_recognizes won't work with parentheses
omitted and a hash as the first parameter. Actually, as I poke around
through the routing_assertions.rb file, I see several examples of
omitted parentheses in the docs that may not work exactly as written.

The conventional Ruby wisdom, as far as I can tell is to omit
parentheses for single method calls that are command-like, such as
puts. also.omit.parentheses.when.method.chaining. :)

Ruby allows parentheses to be omitted whenever possible, but has some
internal parsing rules that check for ambiguity. I haven't run across
a really clear and detailed explanation of these rules, but here's an
example:

def my_method(arg)
  puts 'hello' # => non-ambiguous, no parentheses needed
end

my_method {:a => 'foo', :b => 'bar'} # => ambiguous. Is this a block
or a hash?

HTH.

-TJ

On Aug 11, 12:35 pm, cnk <[email protected]> wrote:
> On Aug 11, 2:11 am, Sijo Kg <[email protected]> wrote:
>
> >   This will work
>
> >assert_recognizes({:controller => 'birds', :action => "index"},"birds")
>
> Thanks. Adding parentheses fixed that test, and more importantly,
> fixed restful routes tests like:
>
>   test "should have some restful routes" do
>    assert_recognizes({:controller => 'birds', :action => "index"},
> "birds")
>    assert_recognizes({:controller => 'birds', :action => 'create'},
> {:path => 'birds', :method => :post})
>     assert_routing({:path => 'birds', :method => :post}, {:controller
> => 'birds', :action => 'create'})
>   end
>
> Thanks Sijo.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to