我正在嘗試使用Puppet在各種系統上設置RVM。一切工作正常,直到我嘗試指定使用哪個Ruby。如何在木偶上使用'rvm use'?
使用Puppet exec運行rvm use 1.9.3
會產生錯誤,因爲'rvm不是函數',因爲Puppet的exec會強制所有命令都是完全限定的。
我將如何使用Puppet通過RVM設置系統Ruby?這甚至有可能嗎?
我正在嘗試使用Puppet在各種系統上設置RVM。一切工作正常,直到我嘗試指定使用哪個Ruby。如何在木偶上使用'rvm use'?
使用Puppet exec運行rvm use 1.9.3
會產生錯誤,因爲'rvm不是函數',因爲Puppet的exec會強制所有命令都是完全限定的。
我將如何使用Puppet通過RVM設置系統Ruby?這甚至有可能嗎?
當您安裝rvm
時,您需要source rvm.sh
才能立即開始工作。該文件的確切路徑通常在安裝消息中公開。
您正在收到很好的錯誤消息,它告訴您RVM不能交互使用。這意味着即使RVM忽略了問題並設置了當前的ruby,它也沒有任何意義,因爲將RVM作爲二進制運行是單獨執行的shell,無法設置父進程(shell/puppet)環境。爲了能夠設置環境,RVM必須作爲shell的函數加載,以便它可以改變當前進程的環境。
因此,有幾種方法,使其工作:
子shell有多個命令:
bash -c "source ~/.rvm/scripts/rvm ; rvm ..."
RVM設置操作:
~/.rvm/bin/rvm {ruby-name} do {command}...
一些操作不需要以上技巧(如設置默認的紅寶石):
~/.rvm/bin/rvm alias create default {ruby-name}
一個額外的解釋 - 默認紅寶石是不是系統的紅寶石,它是,如果你的目標是爲紅寶石的可用性在多個地方使用別名和包裝,將加載當您源RVM,紅寶石:
rvm alias create {my_app} {ruby-version}
rvm wrapp {ruby-version} --no-links --all
PATH=~/.rvm/environments/{my_app}:$PATH
這將創建:
ruby
和gem
命令PATH=...
包裝。