Ruby: Làm thế nào để tải một tệp vào bảng điều khiển ruby ​​tương tác (IRB)?


84

Tôi đang sử dụng IRB (bảng điều khiển ruby ​​tương tác) để tìm hiểu cách lập trình với Ruby. Làm cách nào để tải tệp vào bảng điều khiển nếu trước tiên tôi viết chương trình của mình trong trình soạn thảo văn bản?


[Đây] [1] có phải là điều bạn muốn đạt được không? [1]: stackoverflow.com/a/2652558/919641
pjam

1
nguồn ("filename.rb")
Assad Ebrahim

Câu trả lời:


85

Nếu bạn chỉ cần tải một tệp vào IRB, bạn có thể gọi tệp đó irb -r ./your_file.rbnếu nó nằm trong cùng một thư mục.

Điều này tự động yêu cầu tệp và cho phép bạn làm việc với nó ngay lập tức.


2
Nếu bạn muốn thêm nhiều hơn chỉ -r giữa mỗi tệp, đó là những gì tôi làm và nó hoạt động. Đó là cách tôi tải tất cả các tệp của mình vào irb để tôi có thể truy cập tất cả nội dung của ứng dụng của mình trong irb, tất nhiên tôi sử dụng một tập lệnh rake để tải tệp khởi động vào irb để tôi có thể rake irbvà nó làm tất cả cho tôi.
Thermatix

này là nỗ lực đầu tiên của tôi sau khi đọc người đàn ông, nhưng tôi sử dụng some_file.rb -r, 30 phút sau tôi thấy điều này và add ./, nhờ xD
Alexis

Trong Ubuntu 16.04, tôi loại bỏ các dấu chấm:irb -r /foo/foo.rb
noobninja

Điều này không cấp quyền truy cập vào các biến từ tệp.
Radon Rosborough

47

Sử dụng ruby ​​1.9.3 trên Ubuntu 14.04, tôi có thể tải các tệp từ thư mục hiện tại vào irbbằng dòng lệnh sau:

irb -I . -r foo.rb

đâu foo.rblà tệp tôi muốn tải từ thư mục hiện tại của mình. Các -Itùy chọn là cần thiết để thêm thư mục hiện hành ( .) vào đường dẫn tải ruby, như được giải thích trong trang ruby người đàn ông. Điều này làm cho nó có thể truy cập requirecác tệp từ thư mục hiện tại, đó là những gì -rtùy chọn để irbthực hiện.

Điều quan trọng mà tôi không rõ ràng khi tôi gặp vấn đề này là -Itùy chọn. Khi bạn làm điều đó, bạn có thể gọi require 'foo.rb'từ bên trong irbcho bất kỳ tệp nào trong thư mục hiện tại. Và tất nhiên, bạn có thể chỉ định bất kỳ thư mục nào bạn muốn, không chỉ .với -Itùy chọn. Để bao gồm nhiều thư mục trên đường dẫn tải, hãy phân tách chúng bằng dấu hai chấm (:), ví dụ:

irb -I foo/:bar/:baz/

Lệnh này sẽ bổ sung thêm các thư mục foo, barbazvào đường dẫn tải ruby của.

Giải pháp thay thế cuối cùng là sử dụng đường dẫn tương đối hoặc tuyệt đối đến tệp khi sử dụng requirehoặc -rtải tệp:

irb -r ./foo.rb

hoặc từ bên trong irb:

> require './foo.rb'

Kết quả của giải pháp của bạn giống như cách gọi 'ruby foo.rb', nhưng ít nhất bạn cũng thấy được điều gì đang xảy ra. Nhưng tôi muốn để giao diện điều khiển đang mở để có thể thực hiện thêm một số lệnh. Bất kỳ ý tưởng?
Paul Verschoor

32

Gõ vào irb

Và sau đó

require './ruby_file.rb'

Điều này giả sử rằng ruby_file.rb nằm trong cùng một thư mục. Điều chỉnh phù hợp.


4
Bạn cũng có thể sử dụng require_relative. Ví dụ như require "./lib/foo"hoạt động tương tự nhưrequire_relative "lib/foo"
Dennis

.rblà tùy chọn, bạn có thể viết require './ruby_file'. I checked in ruby 1.9.3p551 '
AMIC MING

./ làm gì?
12

1
@ the12 đó là một đường dẫn tương đối đến thư mục hiện hành
winklerrr

28

Hai lối:

  1. để tải nguồn mà không cần chạy chương trình - điều này cho phép truy cập vào tất cả các biến và hàm:

source("filename.rb")

  1. để chạy chương trình và sau đó thả vào chế độ tương tác - điều này chỉ cấp quyền truy cập vào các hàm chứ không phải các biến:

require("filename.rb")


1
Điều này dường như để trả lời câu hỏi, làm thế nào để tải lại một tập lệnh. Tôi đã sử dụng requiremà dường như không tải lại tập lệnh (bất kỳ sửa đổi nào đối với nguồn gốc không được phản ánh trong phiên của bạn), trong khi sourcedường như phản ánh các thay đổi đối với tập lệnh gốc.
Michael Welch

4

Nó phụ thuộc vào ruby ​​của bạn. Ruby 1.8 bao gồm đường dẫn hiện tại của bạn, trong khi ruby ​​1.9 thì không. Đánh giá $:để xác định xem con đường của bạn có được bao gồm hay không. Vì vậy, trong ruby ​​1.9, bạn phải sử dụng toàn bộ đường đi, đây luôn là cách đặt cược an toàn.

Sau đó, bạn có thể sử dụng requirehoặc loadbao gồm tệp.

requirekhông yêu cầu bạn thêm hậu tố của tệp khi cố gắng tìm nó và sẽ chỉ bao gồm tệp một lần. requirenên được sử dụng thay vì loadhầu hết thời gian.

Kiểm tra Thêm thư mục vào $ LOAD_PATH (Ruby) nếu bạn đang sử dụng ruby ​​1.8


2

Nhập mã ruby ​​vào trình soạn thảo văn bản

Lưu nó với phần mở rộng .rb (ví dụ: demo.rb ).

Trong linux, hãy mở terminal của bạn sau đó thay đổi thư mục thành vị trí hiện tại của tệp đó (lệnh cd được sử dụng để thay đổi thư mục).

Sau đó, nhập irb và tên tệp của bạn (đừng quên bao gồm phần mở rộng của bạn (.rb)).

bấm vào đây để xem tải tệp ruby ​​bằng irb

Trong hình ảnh đó, tôi đã tải một tệp ruby ​​đơn giản chỉ in "ruby".


0

Một cách khác để tải đường dẫn vào irb là chỉ cần gõ lệnh request sau đó kéo và thả tệp tin vào terminal.🙂 -được kiểm tra bằng Linux Mint.


Linux Mint. Xin lỗi, tôi nên thêm điều đó.
Mike Kennedy

0

Đối với những người muốn tải tệp .rb từ thư mục khác. Chỉ cần thêm một trình đại diện chuỗi của thư mục vào biến $:.

> $: << "/directory/to/the/required/rb/file"
> require "some_file"
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.