Ruby question, max length of strings

Am I correct in assuming that the max length of a string is 65,535 on a 32 bit platform? Anyway around this, other classes, 64 bit platform?

TIA,   Jeffrey

Jeffrey L. Taylor wrote:

Am I correct in assuming that the max length of a string is 65,535 on a 32 bit platform? Anyway around this, other classes, 64 bit platform?

TIA,   Jeffrey

What would make you assume this? Simplest demonstration:

irb(main):004:0> s = "a"*70000;nil => nil irb(main):005:0> s.size => 70000 irb(main):006:0>

Also, keep in mind Ruby has no separate representation for raw 8bit data. Only Strings. How would it be able to store a 65KB+ file in memory?

The only limit to Ruby string is is available memory.

Paul Harrington wrote:

Jeffrey L. Taylor wrote:

Am I correct in assuming that the max length of a string is 65,535 on a 32 bit platform? Anyway around this, other classes, 64 bit platform?

TIA,   Jeffrey

What would make you assume this? Simplest demonstration:

irb(main):004:0> s = "a"*70000;nil => nil irb(main):005:0> s.size => 70000 irb(main):006:0>

Also, keep in mind Ruby has no separate representation for raw 8bit data. Only Strings. How would it be able to store a 65KB+ file in memory?

The only limit to Ruby string is is available memory.

btw that irb session was irb(main):001:0> RUBY_VERSION => "1.9.1" irb(main):002:0> RUBY_PLATFORM => "i386-mingw32"

Quoting Paul Harrington <lists@ruby-forum.com>:

Paul Harrington wrote: > Jeffrey L. Taylor wrote: >> Am I correct in assuming that the max length of a string is 65,535 on a >> 32 bit >> platform? Anyway around this, other classes, 64 bit platform? >> >> TIA, >> Jeffrey > > What would make you assume this? Simplest demonstration: > > irb(main):004:0> s = "a"*70000;nil > => nil > irb(main):005:0> s.size > => 70000 > irb(main):006:0> > > Also, keep in mind Ruby has no separate representation for raw 8bit > data. Only Strings. How would it be able to store a 65KB+ file in > memory? > > The only limit to Ruby string is is available memory.

btw that irb session was irb(main):001:0> RUBY_VERSION => "1.9.1" irb(main):002:0> RUBY_PLATFORM => "i386-mingw32"

I find the same results. Checking further, I find that it's MySQL TEXT column that is limited to 65,535 bytes.

Thank you,   Jeffrey

irb(main):001:0> s = "a"*70000;nil => nil irb(main):002:0> s.size => 70000 irb(main):003:0> RUBY_VERSION => "1.8.7" irb(main):004:0> RUBY_PLATFORM => "i586-linux" irb(main):005:0>

Indeed. However, if you specify a :limit value higher than 65535 in the migration that creates the text column Rails will promote it to a 'mediumtext', which has a limit of (I think) 16M. Pushing the limit past *that* will again promote the column to 'longtext', which has a limit >2G.

--Matt Jones