Как создавать и хранить методы и классы в irb? - PullRequest
3 голосов
/ 20 января 2012

Я изучаю Руби.Я знаю, что на Руби сильно повлиял Smalltalk.Среды Smalltalk IDE обеспечивают постоянство на основе изображений, что означает, что можно добавлять методы и классы из рабочего образа.

Возможно ли то же самое в irb?

в Ruby

Ответы [ 2 ]

3 голосов
/ 20 января 2012

@ ТАСС немного ошибается. Используя Pry , вы действительно можете редактировать методы, написанные на консоли, но только методы. Например:

pry(main)> def foo
pry(main)*   "bar"
pry(main)* end  
=> nil
pry(main)> edit-method foo
=> nil
## launches editor

pry(main)> class Foo
pry(main)*   def bar
pry(main)*     "qux"
pry(main)*   end  
pry(main)* end  
=> nil
pry(main)> edit-method Foo#bar
=> nil
## launches editor

Оба случая работают, после чего вы можете сохранить и изменить метод в вашем редакторе. Однако вы не можете сделать, например, edit-class Foo.

У него есть хотя бы одно ограничение:

pry(main)> class Foo; def bar; "baz" end end
=> nil
pry(main)> edit-method Foo#bar
Error: Pry can only patch methods created with the `def` keyword.

Weird.

3 голосов
/ 20 января 2012

Нет, это только разговоры.Но вы можете использовать maglev ruby ​​, чтобы вернуть виртуальную машину smalltalk.Вы можете использовать pry и его команду edit для редактирования кода на диске, а оболочка позаботится о перезагрузке.Но вы не можете сохранить сеанс, только код, который вы записали на диск.

...