我的紅寶石程式:
#echoHW.rb
while 1 < 2
sleep(10)
puts "hey!"
end
呼叫它的 bash(?) 腳本:
#echoHW.sh
ruby -v
ruby echoHW.rb "$@" &
我安裝了rvm,嘗試了「單一使用者」和「多使用者」模式;我的預設為 1.9.3p125,但無論我做什麼,當我運行它時,它都會運行 1.8.7,這顯然是 ruby 的「系統」版本。
我猜這是一個簡單的解決辦法——我希望腳本調用我使用 RVM 設定為預設值的 ruby——但我被難住了。
TIA
編輯:rvm資訊的輸出:
qe2user@qe2server:~/Ruby/query_engine$ rvm 訊息
紅寶石-1.9.3-p125:
系統:uname:「Linux qe2server 2.6.32-33-server #70-Ubuntu SMP Thu Jul 7 22:28:30 UTC 2011 x86_64 GNU/Linux」bash:「/bin/bash => GNU bash,版本4.1. (1)-release (x86_64-pc-linux-gnu)" zsh: " => 未安裝"
rvm:版本:“rvm 1.12.3(穩定),由 Wayne E. Seguin、Michal Papis [htps://rvm.io/]”更新:“13 小時 39 分 42 秒前”
ruby:解釋器:「ruby」版本:「1.9.3p125」日期:「2012-02-16」平台:「x86_64-linux」補丁等級:「2012-02-16修訂版34643」full_version:「ruby 1.9. 3p125(2012) -02-16 修訂版 34643) [x86_64-linux]"
家: 寶石:“/usr/local/rvm/gems/ruby-1.9.3-p125” 紅寶石:“/usr/local/rvm/rubies/ruby-1.9.3-p125”
二進位檔案: ruby:"/usr/local/rvm/rubies/ruby-1.9.3-p125/bin/ruby」 irb:"/usr/local/rvm/rubies/ruby-1.9.3-p125/bin /irb” gem:“/usr/local/rvm/rubies/ruby-1.9.3-p125/bin/gem” rake:“/usr/local/rvm/gems/ruby-1.9.3-p125@global/bin /rake”
環境: 路徑:「/usr/local/rvm/gems/ruby-1.9.3-p125/bin:/usr/local/rvm/gems/ruby-1.9.3-p125@global/bin:/usr/local/ rv /rubies/ruby-1.9.3-p125/bin:/usr/local/rvm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin: /bin:/usr/games" GEM_HOME: "/usr/local/rvm/gems/ruby-1.9.3-p125" GEM_PATH: "/usr/local/rvm/gems/ruby-1.9.3-p125:/usr /local/rvm/gems/ruby-1.9.3-p125@global" MY_RUBY_HOME: "/usr/local/rvm/rubies/ruby-1.9.3-p125" IRBRC: "/usr/local/rvm/rubies/ruby -1.9.3-p125/.irbrc" RUBYOPT: "" 寶石集: ""
答案1
聽起來您沒有在 RVM 下正確設定預設的 Ruby 解釋器。例如,對於正確安裝的 RVM:
# Assumes that 1.9.3-p125 is already fully-installed under RVM.
rvm --default use ruby-1.9.3-p125
這將確保使用指定的 Ruby,而不是系統預設值。您可以隨時rvm use
在 shell 提示字元下變更目前的 Ruby。
不過,如果您想在腳本中使用預設值以外的其他內容,您可以使用另一個使用 RVM 設定目前 Ruby 的 shell 腳本來包裝您的腳本。如果這不是一個選項,您也可以直接在 shebang 行上呼叫特定的解釋器:
#!/home/user/.rvm/rubies/ruby-1.9.3-p125/bin/ruby
但這可能還需要您修改一些環境變量,例如 MY_RUBY_HOME 和 RUBY_VERSION(請參閱 參考資料rvm info
以取得完整清單),以便使各種程式庫和 gem 正常運作。
修改環境對您來說可能有必要,也可能沒有——很大程度上取決於您的 Ruby 腳本正在做什麼——但如果它是必要時,您可以在命令列上使用各種選項,直到所有內容都能協同工作。例如:
$ MY_RUBY_HOME=~/.rvm/rubies/ruby-1.9.3-p125 \
~/.rvm/rubies/ruby-1.9.3-p125/bin/ruby -e 'puts("hello")'
hello
另外,請閱讀項目.rvmrc文件。這是確保您的工作環境使用特定應用程式所需的 Ruby 和 gemset 的另一種方式。