2011-03-04 3 views

답변

4

#!/usr/bin/env /usr/local/bin/[email protected] 
+0

흠, 내 시스템의 아무도/usr/local/bin에 symlinked ruby를 가지고 있지 않습니다. – Kevin

+0

어쩌면 그들은 시스템의 다른 곳에서 있을까요? – tcurdt

0
+0

덕분에 ... 불행히도 정말 더 통찰력 – tcurdt

+0

를 제공하지 않습니다

마지막으로 여기에 내가 CGI-bin 디렉토리에 실행 내가 함께 넣어 예제 스크립트입니다 죄송합니다 귀하의 질문을 잘못 읽었습니다 ... – macarthy

5

tcurdt의 게시물 약간 오해의 소지가 ... 그것을 할 수있는 방법입니다. 내 시스템에서 나는 root로 시스템에 rvm (ree, 1.8.7, & 1.9.2 루비)을 설정했다. 내/usr/지방/빈은 다음과 같이 보았다 : 나는 tcurdt의 예에서와 같이 gemset라는 시스템을 가지고하지 않았다

lrwxrwxrwx 1 root rvm 46 Mar 13 06:50 ree-1.8.7-2011.03 -> /usr/local/rvm/wrappers/ree-1.8.7-2011.03/ruby 
lrwxrwxrwx 1 root rvm 44 Mar 13 06:42 ruby-1.8.7-p334 -> /usr/local/rvm/wrappers/ruby-1.8.7-p334/ruby 
lrwxrwxrwx 1 root rvm 44 Mar 11 22:42 ruby-1.9.2-p180 -> /usr/local/rvm/wrappers/ruby-1.9.2-p180/ruby 

. 그래서 난 당신과 같이 될 것이다 계신 달성하기 위해 적절한 방법을 생각 :

#!/usr/bin/env /usr/local/bin/ruby-1.9.2-p180 

무엇 RVM의 일부 설명은 여기하고있다 : RVM은 래퍼 스크립트를 생성 (/ usr/지방/RVM/래퍼/*) GEM_PATH & GEM_HOME과 같은 것을 설정합니다. 보석이 특정 버전의 루비의 일부로 올바르게로드 될 수 있도록하기 위해 필요합니다. 이러한 래퍼 스크립트에 대한 링크는 rvm의 시스템 설치를 수행 할 때 /usr/local/bin 아래에 만들어집니다. 자신이 rvm을 설치했다면 여기에 있습니다 : $HOME/.rvm/bin.

세번 줄 (#!/....) 앞에 /usr/bin/env을 붙이는 것이 중요합니다. 루비 (예 : #!/usr/local/bin/ruby-1.9.2-p180)에 직접 연결하려고하면 충분하지 않습니다.

source "/usr/local/rvm/environments/ruby-1.9.2-p180" 
exec ruby "[email protected]" 

[email protected]이 쉘입니다 :이 래퍼 실제로 루비 인터프리터하지 않기 때문에 이것은 그들이과 같이, 이전의 루비 인터프리터에 인수로 스크립트를 호출하는 환경 설정을 소싱하는 쉘 스크립트입니다입니다 루비에 전달되는 스크립트 이름. 링크에 대한

#!/usr/bin/env /usr/local/bin/ruby-1.9.2-p180 

puts "Content-Type: text/html" 
puts 
puts "<html>" 
puts "<body>" 
puts "<h1>Hello Ruby!</h1>" 
puts "<p>shebang: #!/usr/bin/env /usr/local/bin/ruby-1.9.2-p180</p>" 
puts "<p>RUBY_VERSION: " + RUBY_VERSION + "</p>" 
puts "<p>RUBY_PLATFORM: " + RUBY_PLATFORM + "</p>" 
puts "<p>RUBY_RELEASE_DATE: " + RUBY_RELEASE_DATE + "</p>" 
puts "</body>" 
puts "</html>" 
+0

매우 정교하면서 질문에 대한 정답이 아닙니다. 특정 루비 버전뿐만 아니라 gemset도 선택하고 싶지 않습니다! 다행스럽게도 rvm은 루비 버전뿐만 아니라 보석 세트를위한 래퍼 스크립트를 생성합니다. 물론 "시스템"보석을 가지고 있지 않다면 선택하려고하는 것이 아닙니다.) BTW : 루비 버전을 선택하기 만하면 rvm-shell도 사용할 수 있습니다 – tcurdt

+0

rvm-shell을 발견하지 못했습니다.따라서 다음을 사용할 수 있습니다 : #!/usr/bin/env/usr/local/bin/rvm-shell? 어떤 루비와 보석 세트로 끝낼까요? – slm

5

#!/usr/bin/env rvm [email protected] do ruby

+0

이것은 이것을 달성하는 가장 깨끗한 방법처럼 보입니다. –

+0

이것은 나를 위해 작동하지 않습니다. RVM 1.26.11, 우분투 15.04 –