95

IRB (インタラクティブ Ruby コンソール) を使用して、Ruby でプログラミングする方法を学習しています。最初にテキスト エディタでプログラムを作成した場合、ファイルをコンソールにロードするにはどうすればよいですか?

4

8 に答える 8

95

IRB にファイルを 1 つだけロードする必要があるirb -r ./your_file.rb場合は、それが同じディレクトリにある場合に呼び出すことができます。

これにより、ファイルが自動的に必要になり、すぐに作業できるようになります。

于 2013-01-09T17:41:30.250 に答える
53

Ubuntu 14.04 で ruby​​ 1.9.3 を使用するirbと、次のコマンド ラインで現在のディレクトリからファイルを読み込むことができます。

irb -I . -r foo.rb

foo.rb現在のディレクトリからロードするファイルはどこにありますか。この-Iオプションは.、ruby の man ページで説明されているように、現在のディレクトリ ( ) を ruby​​ のロード パスに追加するために必要です。これによりrequire、現在のディレクトリからファイルを取得できるようになります。これは、-rオプションがirb達成するものです。

この問題を抱えていたとき、私にとって明らかではなかった重要な部分は-Iオプションです。require 'foo.rb'これを行うと、現在のディレクトリ内irbの任意のファイルに対して内部から呼び出すことができます。もちろん、オプションだけ.でなく、任意のディレクトリを指定でき-Iます。ロード パスに複数のディレクトリを含めるには、コロン (:) で区切ります。次に例を示します。

irb -I foo/:bar/:baz/

このコマンドは、ディレクトリ、、およびを ruby​​ のロード パスに追加foobarますbaz

最後の代替手段は、ファイルを使用requireまたは-rロードするときに、ファイルへの相対パスまたは絶対パスを使用することです。

irb -r ./foo.rb

または内からirb

> require './foo.rb'
于 2015-01-09T22:46:36.280 に答える
31

ふたつのやり方:

  1. プログラムを実行せずにソースをロードする - これにより、すべての変数と関数にアクセスできます。

source("filename.rb")

  1. プログラムを実行してからインタラクティブモードにドロップします-これにより、変数ではなく関数へのアクセスのみが許可されます。

require("filename.rb")

于 2016-07-22T18:42:11.257 に答える
4

それはあなたのルビーに依存します。Ruby 1.8 には現在のパスが含まれていますが、Ruby 1.9 には含まれていません。$:パスが含まれているかどうかを判断するために評価します。したがって、Ruby 1.9 ではパス全体を使用する必要がありますが、これは常に安全な方法です。

次に、requireまたはを使用loadしてファイルを含めることができます。

requireファイルを検索しようとするときにファイルの接尾辞を追加する必要はなく、ファイルは一度だけ含まれます。 ほとんどの場合ではrequireなく使用する必要があります。load

ruby 1.8 を使用する場合は、「$LOAD_PATH (Ruby) にディレクトリを追加する」を参照してください。

于 2012-10-28T19:37:53.220 に答える