2011-07-06 3 views
4

한 줄의 예에 RVM을 설치합니다ruby는 원격 스크립트를 한 줄로 실행합니다. (같은 설치 RVM)

user$ bash < <(curl -s https://rvm.beginrescueend.com/install/rvm) 

을 지금, 나는 내 껍질이 그것을 달성하고자하는 내가 http://blah.com/helloworld.rb

puts "what's ur name?" 
name = gets.chomp 
puts "hello world from web, #{name}" 

에서이 같은 루비 스크립트가 있다고 가정 해 한 줄에 임시 파일을 만들거나 더 나은 한 명령을 만들지 않아도됩니다.

wget http://blah.com/helloworld.rb; ruby helloworld.rb; rm helloworld.rb 

나는 이것을 시도했지만 이전 파이프 때문에 사용자 프롬프트가 무시됩니다.

curl -s http://blah.com/helloworld.rb | ruby 

원격 루비 스크립트를 실행하는 올바른 방법은 무엇입니까? 감사! 이처럼

답변

6

:

ruby < <(curl -s http://blah.com/helloworld.rb) 

루비 bash는 쉘 코드를 평가하는 방법과 유사 루비 코드를 평가

+0

는 '<'불필요한 제이다. – cam

+0

여기가 작동하지 않는 것 같습니다. – c2h2

+0

<(업데이트 된 코드) –

5

구경에 따라 또 다른 루비 옵션 쉘 스크립트 설치 :

ruby -e "require 'open-uri'; system open('http:// or local file').read" 

의 동일 Ruby 스크립트 :

ruby -e "require 'open-uri'; eval open('http:// or local file').read" 

을 편집 : 견적없는 고정하고 루비 코드에서 루비 스크립트 실행

+0

을 추가해보십시오.이 코드는 작동하지 않을 것입니다. – c2h2

+0

당신 말이 맞아요. 따옴표를 잊어 버렸고 루비 스크립트로 작동하도록 변경했습니다. 나는 그것을 고치기 위해 편집 할 것이다. 감사 – rgo

0

을 추가, 당신은 표준 입력을 다시 열고 제어 터미널 장치 /dev/tty에 넥타이해야! http://brew.sh/ 가입일

rubyscript="$(cat <<-'EOF' 
puts "what's ur name?" 
name = gets.chomp 
puts "hello world from web, #{name}" 
EOF 
)" 

ruby <(echo '$stdin.reopen(File.open("/dev/tty", "r"))'; echo "$rubyscript") 
4

:

ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)" 
관련 문제