10

私は現在ファイルを編集しており、irb を使用して API をテストしています。

> require './file.rb'
> o = Object.new
> o.method

次に、file.rb を編集して、変更をすぐに確認できるようにしたいと考えています。例: 最初に file.rb を要求したときに new_method が存在しなかったと仮定します。

> o.new_method

これはエラーを返します。毎回ファイルをリロードせずに上記を達成できるサンドボックス/開発者モードまたは方法はありますか? Require は、最初の require の後は機能しません。最悪の場合、代わりに load を使用する必要があると思います。

4

3 に答える 3

20

私は通常、次のような単純な関数を作成します。

def reload
    load 'myscript.rb'
    # Load any other necessary files here ...
end

これで、単純なもので、reload作業中のすべてのスクリプトが再インポートされます。自動ではありませんが、私が思いついたものに最も近いものです。

method_missingオブジェクトが存在しないメソッドで呼び出されたときに、この関数を自動的に呼び出すようにオーバーライドできる場合があります。でも、自分で試したことがないので、具体的なアドバイスはできません。また、すでに存在しているが単に変更されたメソッドを呼び出す場合にも役立ちません。

私自身の怠惰で、マウスのプログラム可能なボタンの1つをキーシーケンス「reload<enter>」にマッピングするところまで行きました。私が使用しているときirb、必要なのはすべてをリロードするための小指のけいれんだけです。その結果、を使用していないirbと、意図せずにドキュメントに「reload」という文字列が挿入されてしまいます(ただし、これはまったく別の問題です)。

于 2012-06-13T18:25:08.783 に答える
9

これはすべてのコマンドを実行するわけではありませんが、すべての IRb セッションにファイルを含めることができます。~/.irbrcIRb セッションを開始するたびにロードされます。

~/.irbrc

require "~/somefile.rb"

~/somefile.rb

puts "somefile loaded"

ターミナル

> irb
somefile loaded
irb(main):001:0> 

~/.irbrcirb セッションを開始するたびに読み込まれます

于 2012-06-13T19:03:32.207 に答える