ruby IRB内部ri的未定义方法

l5tcr1uw  于 2023-10-17  发布在  Ruby
关注(0)|答案(4)|浏览(146)

在交互式ruby控制台内部,如果我输入ri,那么我会得到一个未定义的方法错误,我必须显式地安装文档才能使其工作吗?

irb(main):015:0* ri --help
NoMethodError: undefined method `-@' for nil:NilClass
    from (irb):15
    from /usr/local/lib/ruby/site_ruby/1.8/rubygems.rb:295
irb(main):016:0> ri Array
NoMethodError: undefined method `ri' for main:Object
    from (irb):16
    from /usr/local/lib/ruby/site_ruby/1.8/rubygems.rb:295
lg40wkob

lg40wkob1#

你可能不想这么做。您应该做的是退出shell(或者最好打开一个新的终端选项卡或屏幕会话),并从那里单独运行ri,这是一个程序。如果你真的想做你正在做的事情,你总是可以使用反引号来运行ri --help,或者任何其他shell命令。
irb(main):015:0* ri --help

bgtovc5b

bgtovc5b2#

事实上,ORI gem可以将RI带到IRB控制台,并给予一些更简洁的类探索功能。
Watch intro screencast

设置(~/.irbrc

require "rubygems"
require "ori"

类请求RI

Array.ri
String.ri
[].ri
"".ri
5.ri

在方法上请求RI

String.ri :upcase
"".ri :upcase
[].ri :sort
Hash.ri :[]

请求交互方法列表

String.ri //
"".ri //
"".ri /case/
"".ri /^to_/
User.ri /^validates_/

bqucvtff

bqucvtff3#

只有--help

irb(main):040:0> --help

Enter the method name you want to look up.
You can use tab to autocomplete.
Enter a blank line to exit.

>> Array
←[0m←[1;32mArray < Object←[m

(from gem backports-1.18.2)
------------------------------------------

为了返回IRB,我按了Crtl+C,但可能有一些退出命令。

vnjpjtjt

vnjpjtjt4#

看起来ri命令已被弃用。irb建议使用show_doc,如下所示:

irb(main):009:0> show_doc String#upcase


= String#upcase

(from ruby core)
------------------------------------------------------------------------
  upcase(*options) -> string

------------------------------------------------------------------------

Returns a string containing the upcased characters in self:

  s = 'Hello World!' # => "Hello World!"
  s.upcase           # => "HELLO WORLD!"

The casing may be affected by the given options; see {Case
Mapping}[doc/case_mapping_rdoc.html].

Related: String#upcase!, String#downcase, String#downcase!.

相关问题