Forum: Ruby on Rails Ruby pack - TypeError: can't convert String into Integer

Posted by unknown (Guest)
on 2013-02-25 22:20
(Received via mailing list)
I am getting TypeError: can't convert String into Integer, I found
duplicate answer too, but I am facing this error for 'pack'.

Other confusion is, it is working fine with ruby 1.8.7, not with ruby
1.9.3, here is the code

irb(main):003:0> length=nil
=> nil
irb(main):004:0> token_string ||= ["A".."Z","a".."z","0".."9"].collect {
|r| r.to_a }.join + %q(!$:*)
=> "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!$:*"
irb(main):005:0> token =  (0..(length ? length : 60)).collect {
token_string[rand( token_string.size)]}.pack("c*")
TypeError: can't convert String into Integer
    from (irb):5:in `pack'
    from (irb):5
    from /home/appandya/.rvm/rubies/ruby-1.9.3-p374/bin/irb:13:in 
`<main>'
irb(main):006:0>

Ant Ideas?
Posted by Frederick Cheung (Guest)
on 2013-02-25 22:26
(Received via mailing list)
On Monday, February 25, 2013 6:47:20 PM UTC, onali...@gmail.com wrote:
>
> Other confusion is, it is working fine with ruby 1.8.7, not with ruby
> 1.9.3, here is the code
>
>
irb(main):003:0> length=nil
> irb(main):006:0>
>
>
>
I've no idea what you're trying to do here, but the underlying cause is
that on ruby 1.8.7:

'123'[0] #=> 49, the byte value of the first character

but on ruby 1.9.3

'123'[0] #=> '1', a string of length 1 beginning at the specified offset

Fred
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.