Skip to content

undefined method `to_str' for 🆔Symbol (NoMethodError) in 2.8.2 #498

@johrstrom

Description

@johrstrom

Hi, I'm getting this error when I've updated to 2.8.2 from 2.8.1. Here's a very simple test case in irb that I've confirmed works in 2.8.1.

irb(main):004:0> uri = Addressable::Template.new("https://example/some/api/{?query*}")
=> #<Addressable::Template:0x104 PATTERN:https://example/some/api/{?query*}>
irb(main):005:0> uri.expand({'query' => {id: 'abc123' } })
/home/jeff/.gems/ruby-3.0.3/gems/addressable-2.8.2/lib/addressable/template.rb:900:in `normalize_value': undefined method `to_str' for :id:Symbol (NoMethodError)
Did you mean?  to_se-2.8.2.gem
               to_symx-5.0.1.gem
Successffrom /home/jeff/.gems/ruby-3.0.3/gems/addressable-2.8.2/lib/addressable/template.rb:908:in `block in normalize_value'
Successffrom /home/jeff/.gems/ruby-3.0.3/gems/addressable-2.8.2/lib/addressable/template.rb:907:in `each'
Parsing from /home/jeff/.gems/ruby-3.0.3/gems/addressable-2.8.2/lib/addressable/template.rb:907:in `inject'
Installifrom /home/jeff/.gems/ruby-3.0.3/gems/addressable-2.8.2/lib/addressable/template.rb:907:in `normalize_value'
Parsing from /home/jeff/.gems/ruby-3.0.3/gems/addressable-2.8.2/lib/addressable/template.rb:774:in `block in transform_capture'
Installifrom /home/jeff/.gems/ruby-3.0.3/gems/addressable-2.8.2/lib/addressable/template.rb:756:in `each'
Done insfrom /home/jeff/.gems/ruby-3.0.3/gems/addressable-2.8.2/lib/addressable/template.rb:756:in `inject'
2 gems ifrom /home/jeff/.gems/ruby-3.0.3/gems/addressable-2.8.2/lib/addressable/template.rb:756:in `transform_capture'
[dashboafrom /home/jeff/.gems/ruby-3.0.3/gems/addressable-2.8.2/lib/addressable/template.rb:595:in `block in expand'
irb(mainfrom /home/jeff/.gems/ruby-3.0.3/gems/addressable-2.8.2/lib/addressable/template.rb:594:in `gsub!'
=> true from /home/jeff/.gems/ruby-3.0.3/gems/addressable-2.8.2/lib/addressable/template.rb:594:in `expand'
irb(mainfrom (irb):5:in `<main>'mplate.new("#{server[:host]}{/segments*}/{?query*}")
        from /home/jeff/apps/ruby/3.0.3/lib/ruby/gems/3.0.0/gems/irb-1.3.5/exe/irb:11:in `<top (required)>'
        from /home/jeff/apps/ruby/3.0.3/bin/irb:23:in `load'
        from /home/jeff/apps/ruby/3.0.3/bin/irb:23:in `<main>'

Here's a simple snippet that you may be able to just copy paste easier.

require 'addressable'

uri = Addressable::Template.new("https://example/some/api/{?query*}")
uri.expand({'query' => { id: 'abc123' }})

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions