2013-03-24 71 views
4

我想在ubuntu服務器上首次部署我的應用程序。Capistrano RVM和Ubuntu RVM不是一項功能,選擇使用'rvm use ...'的紅寶石將不起作用

我一直在打這個錯誤:

2013-03-24 15:13:36 executing `deploy:run_migrations' 
    * executing "rvm gemset use vapin" 
    servers: ["111.111.111.11"] 
    [111.111.111.11] executing command 
** [out :: 111.111.111.11] 
** [out :: 111.111.111.11] 
** [out :: 111.111.111.11] RVM is not a function, selecting rubies with 'rvm use ...' will not work. 
** [out :: 111.111.111.11] 
** [out :: 111.111.111.11] 
** [out :: 111.111.111.11] 
** [out :: 111.111.111.11] You need to change your terminal emulator preferences to allow login shell. 
** [out :: 111.111.111.11] 
** [out :: 111.111.111.11] Sometimes it is required to use `/bin/bash --login` as the command. 
** [out :: 111.111.111.11] 
** [out :: 111.111.111.11] Please visit https://rvm.io/integration/gnome-terminal/ for a example. 

下面是我的一些deploy.rb文件:

require 'bundler/capistrano' 
    require 'rvm/capistrano' 
    # set the ruby version 
    #set :rvm_ruby_string, 'ruby-1.9.3-p392' 
    #set :rvm_type, :system 

    # set the rvm gemset to use 
    set :rvm_gemset, 'vapin' 
... 
    task :install do 
     run "rvm gemset use #{rvm_gemset}" 
     run "cd #{current_path} && bundle install --without=test" 
    end 

RVM安裝在我的服務器上。

$ which rvm 
/usr/local/rvm/bin/rvm 
$ which ruby 
/usr/local/rvm/rubies/ruby-1.9.3-p392/bin/ruby 

任何幫助表示讚賞。我一直在Google上搜索這幾天。

編輯

我已經卸載了我的RVM的多用戶安裝和重新安裝了單用戶版本。

我加入這一行我deploy.rb腳本: 集:default_shell,「/斌/慶典--login」爲RVM腳本需要#正常工作

,現在我沒有得到「RVM不是一個函數....「錯誤。

問題是,當捆綁安裝運行時,gem沒有安裝在我的rvm gemset中。

+0

返回是什麼'type rvm |頭-n 1'? – Pigueiras 2013-03-24 20:25:31

+0

它返回'rvm是一個函數' – Catfish 2013-03-24 20:26:11

+0

看起來像RVM PATH沒有在你的服務器111.111.111.11正確設置..你可以嘗試在這個問題的步驟爲你的服務器(111.111.111.11)http:// stackoverflow。 com/questions/8663936/how-do-i-change-my-ruby-version-using-rvm – AnkitG 2013-03-24 20:29:52

回答

2

在我deploy.rb文件,設置這一行:

set :bundle_dir, "/usr/local/rvm/gems/ruby-1.9.3-p392" 

此行之前:

require 'bundler/capistrano' 

似乎幫助打包者知道在哪裏安裝寶石。不知道爲什麼這是必要的。我以前從未需要它。

0

也許你需要的RVM bin目錄添加到您的$PATH的腳本:

PATH=$PATH:$HOME/.rvm/bin 
+0

雖然我的主目錄中實際上沒有.rvm目錄。這是典型的多用戶rvm安裝嗎? – Catfish 2013-03-24 23:09:20

+0

試試'echo $ rvm_bin_path' – 2013-03-24 23:13:24

+0

好的,我已經卸載了RVM的多用戶安裝,現在安裝爲單個用戶。 '$ echo $ rvm_bin_path /home/toymachiner62/.rvm/bin''$ echo $ HOME /home/toymachiner62 ' – Catfish 2013-03-24 23:23:02

0

雖然看起來你已經回答了你自己的問題,我會扔我的帽子環,以及...
我試圖創建一個Rails模板時,曾與整​​個RVM is not a function錯誤類似的問題,通過在特定的Ruby版本上獲取rvm環境實例,然後直接在其上設置gemset/running bundle安裝來解決此問題。根據你的情況,可能是這樣的:

require 'bundler/capistrano' 
require 'rvm/capistrano' 
# set the ruby version 
set :rvm_ruby_string, 'ruby-1.9.3-p392' 

# set the rvm gemset to use 
set :rvm_gemset, 'vapin' 
... 
task :install do 
    require 'rvm' 
    env = RVM::Environment.new(rvm_ruby_string) 
    # If you need to create a new app-specific gemset 
    # env.gemset_create(rvm_gemset) 
    env.gemset_use!(rvm_gemset) 
    # If you need to install bundler in a new gemset 
    # env.system("gem", "install", "bundler") 
    env.system("bundle", "install", "--without=test") 
end 

顯然,上面的代碼沒有進行測試,但我創建類似的代碼,我已經在this Rails template file過成功與有望作爲如果一些參考你上述代碼完全失敗。

+0

我實際上也設置了':rvm_ruby_string',我看到我的問題已經註釋掉了,但是我確實設置了它。 – Catfish 2013-03-26 13:38:34

+0

使用了'RVM :: Environment'嗎? – 2013-03-26 14:05:17

+0

我不熟悉RVM :: Environment。請問您能詳細說明一下嗎? – Catfish 2013-03-26 14:33:24

1
  1. 不要使用rvm1/capistrano3或RVM/Capistrano的; 不要設置:pty。

  2. 變化~/.rvmrc獲得亞軍的用戶,在服務器上,這 - 請注意,它有它會殺死自己前行來到當不以交互方式運行:

# get rvm for non-interactive shells (eg capistrano) too 
source /etc/profile.d/rvm.sh 
export BASH_ENV=$HOME/.bashrc 
export rvm_is_not_a_shell_function=0 

# If not running interactively, don't do anything 
[ -z "$PS1" ] && return 
1

我我剛剛一直在努力解決這個問題。試過上面列出的一切,沒有任何工作。從osx部署到Ubuntu。

最後,在ubuntu上,作爲我的部署用戶「su-ed」,我做了「rvm get head」(我一直在使用「rvm get stable」)。 (我將它設置在單用​​戶環境中,rvm位於「/home/deploy/.rvm」下)。

就像魔術一樣,它開始工作!唷。所以我想也許在最新的rvm中有一些修復,那不是穩定的呢?