Ruby:ファイルをInteractive Ruby Console(IRB)にロードする方法は?


84

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


[これ] [1]はあなたが達成したいことですか?[1]:stackoverflow.com/a/2652558/919641
pjam 2012年

1
source( "filename.rb")
Assad Ebrahim 2016

回答:


85

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

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


2
各ファイルの間に-r以外のものを追加したい場合は、それが私が行うことであり、機能します。これが、すべてのファイルをirbにロードして、irb内のすべてのアプリにアクセスできるようにする方法です。もちろん、rakeスクリプトを使用してブートファイルをirbにロードするのでrake irb、すべてを実行できます。
Thermatix 2014年

これはmanを読んだ後の最初の試みでしたが、-r some_file.rbを使用し、30分後にこれを見つけて./を追加しました。xdに感謝します
Alexis

Ubuntuの16.04で、私は、ドットを削除しますirb -r /foo/foo.rb
noobninja

これは、ファイルから変数へのアクセスを許可しません。
ラドンロスボロー

47

Ubuntu14.04でruby1.9.3を使用するirbと、次のコマンドラインで現在のディレクトリからファイルをロードできます。

irb -I . -r foo.rb

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

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

irb -I foo/:bar/:baz/

このコマンドは、ディレクトリを追加しますfoobarbazRubyのロードパスに。

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

irb -r ./foo.rb

または内部からirb

> require './foo.rb'

ソリューションの結果は「rubyfoo.rb」を呼び出すのと同じですが、少なくとも何が起こっているかがわかります。ただし、コンソールを開いたままにして、さらにいくつかのコマンドを実行できるようにします。何か案が?
Paul Verschoor 2018

32

入力します irb

その後

require './ruby_file.rb'

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


4
を使用することもできますrequire_relative。例require "./lib/foo"は同じことをしますrequire_relative "lib/foo"
デニス

.rbオプションで、require './ruby_file'. I checked in ruby 1.9.3p551`を書くことができます
AMIC MING

./は何をしますか?
2016年

1
@ the12これは現在のディレクトリへの相対パスです
winklerrr 2016年

28

二通り:

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

source("filename.rb")

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

require("filename.rb")


1
これは、スクリプトをリロードする方法についての質問にも答えているようです。requireスクリプトをリロードしていないように見える(元のソースへの変更はセッションに反映されていない)が、source元のスクリプトへの変更を反映しているように見えるものを使用していました。
マイケルウェルチ

4

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

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

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

ruby 1.8を使用する場合は、$ LOAD_PATH(Ruby)へのディレクトリの追加を確認してください。


2

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

拡張子.rbを付けて保存します(例:demo.rb)。

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

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

irbを使用したrubyファイルのロードを確認するには、ここをクリックしてください

その画像では、「ルビー」のみを印刷する単純なルビーファイルをロードしました。


0

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


LinuxMint。申し訳ありませんが、それを追加する必要がありました。
マイクケネディ

0

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

> $: << "/directory/to/the/required/rb/file"
> require "some_file"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.