2012-10-28 30 views
63

我使用IRB(交互式ruby控制檯)來學習如何使用Ruby進行編程。如果我先在文本編輯器中編寫程序,如何將文件加載到控制檯?Ruby:如何將文件加載到交互式ruby控制檯(IRB)?

+0

Is this [this] [1]你想達到什麼目的? [1]:http://stackoverflow.com/a/2652558/919641 – pjam

+1

源如果你想添加除每個文件之間只是-r以上( 「filename.rb」) –

回答

3

這取決於你的紅寶石。 Ruby 1.8包含你當前的路徑,而Ruby 1.9不包含。評估$:以確定您的路徑是否包含在內。所以在Ruby 1.9中,你必須使用整個路徑,這總是一個安全的選擇。

然後您可以使用requireload來包含該文件。

require不需要您在嘗試查找文件時添加該文件的後綴,並且只會包含該文件一次。大部分時間應該使用require而不是load

退房Adding a directory to $LOAD_PATH (Ruby)如果你將要使用Ruby 1.8

63

如果你只需要一個文件加載到IRB你可以用irb -r ./your_file.rb調用它,如果它是在同一目錄下。

這會自動需要該文件,並允許您立即使用該文件。

+1

,以及那是什麼我做,它的工作。這就是我將所有文件加載到irb中的方式,因此我可以在irb中訪問所有應用程序的內容,當然,我使用rake腳本將啓動文件加載到irb中,因此我只需「耙irb」,它就可以完成這一切。 – Thermatix

+0

這是我讀完man後的第一次嘗試,但是我使用了-r some_file.rb,30分鐘後我發現了這個並添加了./,謝謝xd – Alexis

+0

在Ubuntu 16.04中,我刪除了點:'irb -r/foo/foo .rb' – noobninja

23

鍵入irb

然後

require './ruby_file.rb' 

這是假設ruby_file.rb是在同一個目錄。相應地調整。

+3

你也可以使用'require_relative'。例如。 'require「./lib/foo」'和'require_relative'lib/foo''一樣'' – Dennis

+0

'.rb'是可選的,你可以寫'require'./ruby_file'。我檢查了'ruby 1.9.3p551' –

+0

./做什麼? – the12

33

在Ubuntu 14.04使用Ruby 1.9.3,我能夠從當前目錄加載文件到irb使用以下命令行:

irb -I . -r foo.rb 

其中foo.rb是我想從我目前的加載文件目錄。按照ruby手冊頁中的說明,需要-I選項來將當前目錄(.)添加到ruby的加載路徑。這使得可以從當前目錄輸入require文件,irb可以完成-r選項。

當我遇到這個問題時,我不明顯的關鍵部分是-I選項。一旦你這樣做了,你可以在irb之內調用require 'foo.rb'來獲取當前目錄中的任何文件。當然,你可以指定你想要的任何目錄,而不僅僅是.-I選項。包括負載路徑上的多個目錄,請用冒號分隔(:),例如:

irb -I foo/:bar/:baz/ 

該命令將目錄添加foobarbaz Ruby的負載路徑。

的最後一種選擇是使用require-r時加載一個文件中使用的相對或絕對文件路徑:

irb -r ./foo.rb 
irb

或從:

> require './foo.rb' 
10

兩種方法:

  1. 加載源機智豪特運行程序 - 這可訪問所有的變量和函數:

source("filename.rb")

  • 運行程序,然後拖放到交互模式 - 此僅給出訪問功能,不變量:
  • require("filename.rb")

    0

    另一種方式來加載路徑進入IRB被直接輸入需要然後拖放在F回到終端。 - 使用Linux Mint進行測試。

    +0

    這是否適用於哪些操作系統? – Adam

    +0

    Linux Mint。對不起,我應該補充說。 –

    1

    在文本編輯器

    保存擴展名爲.RB紅寶石代碼(例如:demo.rb)。

    在linux中,打開您的終端,然後將目錄切換到該文件的當前位置(cd命令用於更改目錄)。

    然後,輸入irb和您的文件名(不要忘記包含您的擴展名(.rb))。

    click here to see loading a ruby file using irb

    在該圖像,我裝一個簡單的紅寶石文件僅打印「紅寶石」。

    相關問題