2012-01-20 5 views
3

私はRubyを勉強しています。私はRubyがSmalltalkの影響を強く受けていることを知っています。 Smalltalk IDEはイメージベースの永続性を提供します。つまり、実行中のイメージからメソッドやクラスを追加できます。irbでメソッドとクラスを作成して保存する方法は?

ルビーのirbでも同じですか?

答えて

3

ナー、それは小さなトークだけです。しかし、maglev rubyを使用して、smalltalk VMを取得することができます。 pryとそのeditコマンドを使用してディスク上のコードを編集することができ、シェルはリロードを処理します。しかし、セッションを保存することはできず、ディスクに書き込んだコードだけを保存することができます。

+1

"MagLev 1.0.0は2011年10月31日にリリースされました。 - http://maglev.github.com/ –

+0

宝石のサーバーライセンスなしでMaglevを使用できますか? – Eonil

+0

GemStone/SでMagLevを使用するためのサーバーライセンスは必要ありません。私が知る限り、GemStoneサーバーの制限事項はGLASSと同じです - http://seaside.gemstone.com/docs/GLASS-Announcement.htm – martineg

3

@Tassは少し誤っています。 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. 

奇妙に。

+1

これは、従来のファイルベース開発モデル:) –

+0

本当に、あなたがそれを見逃したらSmalltalkに切り替えるべきときは、Rubyは貧弱な代替品です。 –

関連する問題