4

初めてubuntuサーバーにアプリをデプロイしようとしています。

私はこのエラーを押し続けます:

 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

どんな助けでも大歓迎です。私はこれを何日もグーグルしてきました。

編集

RVMのマルチユーザーインストールをアンインストールし、シングルユーザーバージョンを再インストールしました。

次の行をdeploy.rbスクリプトに追加しました:set:default_shell、 "/ bin / bash --login"#rvmスクリプトが正しく機能するために必要

そして今、私は「RVMは機能ではありません....」というエラーを受け取りません。

問題は、バンドルインストールを実行すると、gemがrvmgemsetにインストールされないことです。

4

5 に答える 5

2

私のdeploy.rbファイルで、次の行を設定します。

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

この行の前:

require 'bundler/capistrano'

バンドラーが宝石をインストールする場所を知るのに役立つようでした。なぜこれが必要なのかわからない。今まで必要なかった。

于 2013-03-26T04:56:44.083 に答える
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 
于 2014-03-12T20:04:15.013 に答える
1

私はこの問題に苦労しています。上記のすべてを試しましたが、何も機能しませんでした。osxからubuntuへのデプロイ。

最後に、ubuntuで、デプロイユーザーとして「su-ed」を実行しました。「rvmgethead」(「rvmgetstable」を使用していた場所)を実行しました。(「/home/deploy/.rvm」の下にrvmを使用して、シングルユーザー環境でセットアップしました。)

魔法のように、それは働き始めました!ふぅ。だから私はおそらく最新のrvmにいくつかの修正があると思いますが、それはまだ安定していませんか?

于 2014-03-20T15:59:56.693 に答える
0

$PATHスクリプトを作成するために、RVMbinディレクトリをに追加する必要があるかもしれません。

PATH=$PATH:$HOME/.rvm/bin
于 2013-03-24T23:08:06.567 に答える
0

あなたはあなた自身の質問に答えたようですが、私も帽子をリングに投げます... Railsテンプレートを作成しようとしたときにエラー
全体で同様の問題が発生し、環境RVM is not a functionを取得することでそれを回避しましたrvm特定のRubyバージョンでインスタンスを作成し、gemset/runningバンドルを直接そのバージョンにインストールします。あなたの場合、それは次のようなものかもしれません:

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

明らかに、上記のコードはテストされていませんが、このRailsテンプレートファイルで成功した同様のコードを作成しました。これは、上記のコードが完全に失敗した場合の参照として役立つことを願っています。

于 2013-03-26T07:14:05.557 に答える