Как получить документацию Ruby из командной строки [duplicate]

17

Есть ли способ узнать, какая часть моей команды ri не отображает документацию Ruby:

 $ ruby --version
 ruby 1.9.3p392 (2013-02-22 revision 39386) [i686-linux]

 $ ri --version
 ri 3.12.2     

 $ ri String
 Nothing known about String

Когда я использую pry:

 $ pry --version
 Pry version 0.9.12 on Ruby 1.9.3

 $ pry 
 [1] pry(main)> ri String
 # shows String documentation
 [2] pry(main)> ri String.split
 error: 'String.split' not found
 [3] pry(main)> ri String.strip
 String.strip not found, maybe you meant:
 String#strip_heredoc

Что делать, чтобы сделать документацию?

    
задан Kokizzu 29.03.2013 в 05:12
источник

4 ответа

26

Если вы используете RVM для управления установками Ruby, вы можете сделать это:

rvm docs generate

Если нет, попробуйте сделать это:

gem install rdoc-data
rdoc-data --install

затем повторите команду ri .

    
ответ дан fmendez 29.03.2013 в 05:20
источник
  • нет, я использую ruby ​​из диспетчера пакетов archlinux –  Kokizzu 29.03.2013 в 05:22
  • нормально, я попробую второй: 3 спасибо –  Kokizzu 29.03.2013 в 05:22
  • да, он работает: 3 спасибо –  Kokizzu 29.03.2013 в 05:52
  • Как я заметил в своем ответе, при использовании pry предпочтительнее использовать жук pry-doc, а затем show-doc –  horseyguy 31.03.2013 в 23:01
11

С помощью pry лучше установить pry-doc gem, а затем использовать команду show-doc :

[17] pry(main)> show-doc String#inspect

From: string.c (C Method):
Owner: String
Visibility: public
Signature: inspect()
Number of lines: 6

Returns a printable version of _str_, surrounded by quote marks,
with special characters escaped.

   str = "hello"
   str[3] = "\b"
   str.inspect       #=> "\"hel\bo\""
[18] pry(main)> show-doc Array#pop

From: array.c (C Method):
Owner: Array
Visibility: public
Signature: pop(*arg1)
Number of lines: 11

Removes the last element from self and returns it, or
nil if the array is empty.

If a number n is given, returns an array of the last n elements
(or less) just like array.slice!(-n, n) does. See also
Array#push for the opposite effect.

   a = [ "a", "b", "c", "d" ]
   a.pop     #=> "d"
   a.pop(2)  #=> ["b", "c"]
   a         #=> ["a"]
[19] pry(main)> 

Примечание. Вы также можете использовать псевдоним ? для show-doc , если хотите.

    
ответ дан horseyguy 31.03.2013 в 23:00
источник
3

В комментарии вы упомянули, что используете пакет Ruby из диспетчера пакетов archlinux. Для ri необходимо установить пакет ruby-docs :

$ pacman -S ruby-docs

Я предполагаю, что они отделяют пакеты, чтобы люди, которые не хотят, чтобы документы могли сохранять на диске.

    
ответ дан Scott Olson 29.03.2013 в 07:02
источник
2
  

Когда я использую pry:

$ pry --version
Pry version 0.9.12 on Ruby 1.9.3

$ pry 
[1] pry(main)> ri String
# shows String documentation
[2] pry(main)> ri String.split
error: 'String.split' not found
[3] pry(main)> ri String.strip
String.strip not found, maybe you meant:
String#strip_heredoc
     

Что делать, чтобы сделать документацию?

Ну, нет методов String.split или String.strip . Существуют, однако, методы String#split и String#strip . Попробуйте попросить их, и вы, вероятно, получите их документацию.

    
ответ дан Jörg W Mittag 29.03.2013 в 12:07
источник
  • ах да, оба. и # не работают, когда они доступны, но оба работают в обычной линии ri comamnd –  Kokizzu 29.03.2013 в 12:09