web-dev-qa-db-ja.com

Ruby:ファイルをインタラクティブなRubyコンソール(IRB)に読み込む方法は?

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

77
nbonbon

1つのファイルのみをIRBにロードする必要がある場合は、irb -r ./your_file.rb同じディレクトリにある場合。

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

76
PhilG

Ubuntu 14.04でRuby 1.9.3を使用すると、次のコマンドラインで現在のディレクトリからirbにファイルをロードできます。

irb -I . -r foo.rb

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

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

irb -I foo/:bar/:baz/

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

最後の選択肢は、requireまたは-rを使用してファイルをロードするときに、ファイルへの相対パスまたは絶対パスを使用することです。

irb -r ./foo.rb

またはirb内から:

> require './foo.rb'
39
wachr

irbと入力します

その後

require './Ruby_file.rb'

これは、Ruby_file.rbが同じディレクトリにあることを前提としています。それに応じて調整します。

30
okysabeni

二つの方法:

  1. ソースを読み込むwithoutプログラムの実行-これにより、すべての変数と関数にアクセスできます。

source("filename.rb")

  1. プログラムを実行してから対話モードにドロップします-これにより、変数ではなく関数にのみアクセスできます。

require("filename.rb")

19
Assad Ebrahim

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

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

requireでは、ファイルの検索時にファイルのサフィックスを追加する必要はなく、ファイルは1回だけ含まれます。ほとんどの場合、requireの代わりにloadを使用する必要があります。

チェックアウト $ LOAD_PATH(Ruby)へのディレクトリの追加 Ruby 1.8を使用する場合

3
Michael

テキストエディタでRubyコードを入力します

拡張子。rbで保存します(例:demo.rb )。

Linuxでは、ターミナルを開いて、そのファイルの現在の場所にディレクトリを変更します(ディレクトリを変更するには、cdコマンドを使用します)。

その後、irbとファイル名を入力します(拡張子(.rb)を含めることを忘れないでください)。

click here to see loading a Ruby file using irb

その画像では、「Ruby」のみを出力するシンプルなRuby=ファイルをロードしました。

2
vinoth

別のディレクトリから.rbファイルをロードする場合。ディレクトリの文字列表現を$:変数に追加するだけです。

> $: << "/directory/to/the/required/rb/file"
> require "some_file"
0
tagaism

パスをirbにロードする別の方法は、単にrequireと入力してから、ファイルをターミナルにドラッグアンドドロップすることです。 -Linux Mintを使用してテスト済み。

0
Mike Kennedy