ask ri for the other squeeze

M

matt neuburg

First off, may I say that ri, with its recent improvements, is now
useful to me for the first time since I started using ruby? With the
spaces after the commas, the listing of a class's superclass, the
ability to search up the class hierarchy, and so forth, I can now
usually find what I'm looking for and read the result.

That said, there remain a few edge cases on my machine where ri seems to
break down. An example is String#squeeze, which comes up with an empty
description:

--------------------------------------------------------- String#squeeze
squeeze(del=nil)

From /usr/local/share/ri/1.8/site/String/cdesc-String.yaml
------------------------------------------------------------------------
[no description]

There is, however, another String#squeeze that *does* have a
description. Where there's a choice like this, I'd like to see the one
with the description. I can say:

$ ri --no-site String#squeeze

and that does work, but it also causes a huge delay both now while the
cache is rebuilt and on the next ri search without --no-site while the
cache is rebuilt *again*. What I'd really like is syntax for choosing
between different String#squeeze. For example, maybe the -i interactive
option could give me the ability to enter numbers?

m.
 
B

badboy

matt said:
First off, may I say that ri, with its recent improvements, is now
useful to me for the first time since I started using ruby? With the
spaces after the commas, the listing of a class's superclass, the
ability to search up the class hierarchy, and so forth, I can now
usually find what I'm looking for and read the result.

That said, there remain a few edge cases on my machine where ri seems to
break down. An example is String#squeeze, which comes up with an empty
description:

--------------------------------------------------------- String#squeeze
squeeze(del=nil)

From /usr/local/share/ri/1.8/site/String/cdesc-String.yaml
------------------------------------------------------------------------
[no description]

There is, however, another String#squeeze that *does* have a
description. Where there's a choice like this, I'd like to see the one
with the description. I can say:

$ ri --no-site String#squeeze

and that does work, but it also causes a huge delay both now while the
cache is rebuilt and on the next ri search without --no-site while the
cache is rebuilt *again*. What I'd really like is syntax for choosing
between different String#squeeze. For example, maybe the -i interactive
option could give me the ability to enter numbers?

m.
hm...I have no problems with String#squeeze
not for ruby 1.8.7 nor for 1.9.1

but I prefer fastri over ri, because....it's *faster* =D
http://eigenclass.org/hiki/fastri
 
R

Roger Pack

but I prefer fastri over ri, because....it's *faster* =D
http://eigenclass.org/hiki/fastri

Note also that you can lookup things in irb

irb(main):002:0> help "String#chars"
----------------------------------------------------------- String#chars
str.chars => anEnumerator
str.chars {|substr| block } => str
------------------------------------------------------------------------
Returns an enumerator that gives each character in the string. If a
block is given, it iterates over each character in the string.

"foo".chars.to_a #=> ["f","o","o"]


=> nil
irb(main):003:0>
 
M

matt neuburg

badboy said:
matt said:
First off, may I say that ri, with its recent improvements, is now
useful to me for the first time since I started using ruby? With the
spaces after the commas, the listing of a class's superclass, the
ability to search up the class hierarchy, and so forth, I can now
usually find what I'm looking for and read the result.

That said, there remain a few edge cases on my machine where ri seems to
break down. An example is String#squeeze, which comes up with an empty
description:

--------------------------------------------------------- String#squeeze
squeeze(del=nil)

From /usr/local/share/ri/1.8/site/String/cdesc-String.yaml
------------------------------------------------------------------------
[no description]

There is, however, another String#squeeze that *does* have a
description. Where there's a choice like this, I'd like to see the one
with the description. I can say:

$ ri --no-site String#squeeze

and that does work, but it also causes a huge delay both now while the
cache is rebuilt and on the next ri search without --no-site while the
cache is rebuilt *again*. What I'd really like is syntax for choosing
between different String#squeeze. For example, maybe the -i interactive
option could give me the ability to enter numbers?

m.
hm...I have no problems with String#squeeze
not for ruby 1.8.7 nor for 1.9.1

but I prefer fastri over ri, because....it's *faster*

Faster, but long ago broken OMM. It stopped working one day (after a
rdoc update, I think) and just never worked again. It doesn't look very
supported and I assume it is no longer maintained...?

I am still back at 1.8.6.

$ qri String
/usr/local/lib/ruby/1.8/yaml.rb:133:in `transfer': invalid subclass
(TypeError)
from /usr/local/lib/ruby/1.8/yaml.rb:133:in `node_import'
from /usr/local/lib/ruby/1.8/yaml.rb:133:in `load'
from /usr/local/lib/ruby/1.8/yaml.rb:133:in `load'
from /usr/local/lib/ruby/1.8/rdoc/ri/ri_descriptions.rb:72:in
`deserialize'
from /usr/local/lib/ruby/site_ruby/1.8/fastri/ri_index.rb:354:in
`get_class'
from /usr/local/lib/ruby/site_ruby/1.8/fastri/ri_index.rb:354:in
`open'
from /usr/local/lib/ruby/site_ruby/1.8/fastri/ri_index.rb:354:in
`get_class'
from /usr/local/lib/ruby/site_ruby/1.8/fastri/ri_index.rb:352:in
`each'
from /usr/local/lib/ruby/site_ruby/1.8/fastri/ri_index.rb:352:in
`get_class'
from
/usr/local/lib/ruby/site_ruby/1.8/fastri/ri_service.rb:209:in `info'
from
/usr/local/lib/ruby/site_ruby/1.8/fastri/ri_service.rb:422:in
`capture_stdout'
from
/usr/local/lib/ruby/site_ruby/1.8/fastri/ri_service.rb:208:in `info'
from /usr/local/bin/qri:342
from /usr/local/bin/qri:337:in `each'
from /usr/local/bin/qri:337
 
M

matt neuburg

Roger Pack said:
but I prefer fastri over ri, because....it's *faster* =D
http://eigenclass.org/hiki/fastri

Note also that you can lookup things in irb

irb(main):002:0> help "String#chars"
----------------------------------------------------------- String#chars
str.chars => anEnumerator
str.chars {|substr| block } => str
------------------------------------------------------------------------
Returns an enumerator that gives each character in the string. If a
block is given, it iterates over each character in the string.

"foo".chars.to_a #=> ["f","o","o"]

But what I asked about was String.squeeze. Same problem:

irb(main):001:0> help "String#squeeze"
More than one method matched your request. You can refine
your search by asking for information on one of:

String#squeeze!, String#squeeze, String#squeeze!, String#squeeze

Now what? m.
 
R

Roger Pack

irb(main):001:0> help "String#squeeze"
More than one method matched your request. You can refine
your search by asking for information on one of:

String#squeeze!, String#squeeze, String#squeeze!, String#squeeze

Now what? m.

looks like a bug. repost to ruby core?
-=r
 
E

Eric Hodel

Roger Pack said:
but I prefer fastri over ri, because....it's *faster* =D
http://eigenclass.org/hiki/fastri

Note also that you can lookup things in irb

irb(main):002:0> help "String#chars"
-----------------------------------------------------------
String#chars
str.chars => anEnumerator
str.chars {|substr| block } => str
------------------------------------------------------------------------
Returns an enumerator that gives each character in the string.
If a
block is given, it iterates over each character in the string.

"foo".chars.to_a #=> ["f","o","o"]

But what I asked about was String.squeeze. Same problem:

irb(main):001:0> help "String#squeeze"
More than one method matched your request. You can refine
your search by asking for information on one of:

String#squeeze!, String#squeeze, String#squeeze!, String#squeeze

Now what? m.

You seem to have two sets of ri data installed. Try locate cdesc-
String.yaml to see where the two sets live, then delete the one
without documentation.
 
E

Eric Hodel

Faster, but long ago broken OMM. It stopped working one day (after a
rdoc update, I think) and just never worked again. It doesn't look
very
supported and I assume it is no longer maintained...?

RDoc 2 has a fast ri, from cache:

$ time ri String#squeeze > /dev/null

real 0m0.398s
user 0m0.339s
sys 0m0.054s
 
M

matt neuburg

Eric Hodel said:
You seem to have two sets of ri data installed. Try locate cdesc-
String.yaml to see where the two sets live, then delete the one
without documentation.

Good call! That worked. Thanks! m.
 
R

Ryan Davis

You seem to have two sets of ri data installed. Try locate cdesc-
String.yaml to see where the two sets live, then delete the one
without documentation.

maybe our next tweak on `gem check` should do this check too?
 
E

Eric Hodel

maybe our next tweak on `gem check` should do this check too?

This one seemed to be an artifact of ruby's `make install-doc`, I'm
unsure how to reproduce it.

RDoc now only looks in the latest gem dirs for documentation, so this
shouldn't happen for ri for gems even with multiple versions.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,763
Messages
2,569,563
Members
45,039
Latest member
CasimiraVa

Latest Threads

Top