Ruby : 대화 형 Ruby 콘솔 (IRB)에 파일을로드하는 방법은 무엇입니까?


84

IRB (대화 형 루비 콘솔)를 사용하여 Ruby로 프로그래밍하는 방법을 배우고 있습니다. 먼저 텍스트 편집기에서 프로그램을 작성하는 경우 콘솔에 파일을로드하려면 어떻게합니까?


[this] [1] 당신이 이루고 싶은 것입니까? [1] : stackoverflow.com/a/2652558/919641
pjam 2010 년

1
source ( "filename.rb")
Assad Ebrahim

답변:


85

IRB에 하나의 파일 만로드해야하는 irb -r ./your_file.rb경우 동일한 디렉토리에있는 경우 해당 파일을 호출 할 수 있습니다 .

이렇게하면 파일이 자동으로 필요하며 즉시 작업 할 수 있습니다.


2
각 파일 사이에 -r 이상을 추가하려면 그게 제가하는 일이고 작동합니다. 모든 파일을 irb에로드하여 irb 내의 모든 앱에 액세스 할 수 있도록하는 방법입니다. 물론 rake 스크립트를 사용하여 irb에 부팅 파일을로드하므로 rake irb모든 작업을 수행 할 수 있습니다 .
Thermatix 2014

이것은 사람을 읽은 후 첫 번째 시도 였지만 -r some_file.rb를 사용합니다. 30 분 후 나는 이것을 발견하고 추가합니다 ./, 감사합니다 xd
Alexis

우분투 16.04에서 나는 점을 제거 :irb -r /foo/foo.rb
noobninja

이것은 파일의 변수에 대한 액세스 권한을 부여하지 않습니다.
Radon Rosborough

47

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/

이 명령은 디렉토리를 추가 할 것입니다 foo, bar그리고 baz루비의로드 경로.

마지막 대안은 파일을 사용 require하거나 -r로드 할 때 파일에 대한 상대 또는 절대 경로를 사용 하는 것입니다.

irb -r ./foo.rb

또는 내부에서 irb:

> require './foo.rb'

솔루션의 결과는 'ruby foo.rb'를 호출하는 것과 동일하지만 적어도 무슨 일이 일어나고 있는지 볼 수 있습니다. 하지만 콘솔을 열어두고 몇 가지 명령을 더 실행할 수 있습니다. 어떤 생각?
Paul Verschoor

32

입력 irb

그리고

require './ruby_file.rb'

이것은 ruby_file.rb가 같은 디렉토리에 있다고 가정합니다. 그에 따라 조정하십시오.


4
당신은 또한 사용할 수 있습니다 require_relative. 예를 들면 require "./lib/foo"다음과 같습니다require_relative "lib/foo"
Dennis

.rb선택 사항입니다. require './ruby_file'. I checked in 루비 1.9.3p551`을 작성할 수 있습니다.
AMIC MING

./는 무엇을합니까?
the12

1
@는 현재 디렉토리의 상대 경로입니다 the12
winklerrr

28

두 가지 방법:

  1. 프로그램 실행 하지 않고 소스를로드 하려면 모든 변수와 함수에 액세스 할 수 있습니다.

source("filename.rb")

  1. 프로그램을 실행 한 다음 대화 형 모드로 전환합니다. 이것은 변수가 아닌 함수에만 액세스 할 수 있도록합니다.

require("filename.rb")


1
이것은 스크립트를 다시로드하는 방법에 대한 질문에 답하는 것으로 보입니다. 내가 사용했던 require반면, 스크립트를 (원래 소스에 대한 수정이 세션에 반영되지 않습니다) 다시 나타나지 않는 source나타납니다 원래 스크립트에 변경 사항을 반영 할 수 있습니다.
Michael Welch

4

루비에 따라 다릅니다. Ruby 1.8에는 현재 경로가 포함되지만 Ruby 1.9에는 포함되지 않습니다. 평가 $:경로가 포함인지 아닌지 판단합니다. 따라서 루비 1.9에서는 전체 경로를 사용해야하며 이는 항상 안전한 방법입니다.

그런 다음 require또는 load을 사용 하여 파일을 포함 할 수 있습니다 .

require파일을 찾으려고 할 때 파일의 접미사를 추가 할 필요가 없으며 파일을 한 번만 포함합니다. 대부분의 시간 require대신 사용해야합니다 load.

Ruby 1.8을 사용하려는 경우 $ LOAD_PATH (Ruby)에 디렉토리 추가를 확인하십시오.


2

텍스트 편집기에 루비 코드를 입력하십시오.

.rb 확장자로 저장합니다 (예 : demo.rb ).

Linux에서 터미널을 열고 디렉토리를 해당 파일의 현재 위치로 변경합니다 (cd 명령은 디렉토리를 변경하는 데 사용됨).

그런 다음 irb와 파일 이름을 입력하십시오 (확장자 (.rb)를 포함하는 것을 잊지 마십시오).

irb를 사용하여 루비 파일을로드하려면 여기를 클릭하십시오.

그 이미지에는 "ruby"만 인쇄되는 간단한 ruby ​​파일을로드했습니다.


0

irb에 경로를로드하는 또 다른 방법은 require를 입력 한 다음 파일을 터미널로 드래그 앤 드롭하는 것입니다 .🙂 -Linux Mint를 사용하여 테스트되었습니다.


리눅스 민트. 추가 했어야해서 죄송합니다.
Mike Kennedy

0

다른 디렉토리에서 .rb 파일을로드하려는 경우. $ : 변수에 디렉토리의 문자열 표현자를 추가하기 만하면됩니다.

> $: << "/directory/to/the/required/rb/file"
> require "some_file"
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.