質問: Railsアプリをcapistrano3でデプロイしようとトライしています。 VPSの環境は以下のように設定しています。 VPS=さくらのVPS ruby2.3.1-p112 ($ ruby -v で 2.3.1p112と表示) rails 5.1.3 ($ rails -v で 5.3.1と表示) Apache passenger MariaDB 鍵認証でのログイン可能 firewallの設定完了 SSHの設定変更完了 SSL証明書Let's Encryptのインストール完了(httpsアクセス確認完了) postfixのインストール完了 DNSの設定完了 追記 VPSにRubyをインストールする際、「$ rvm install 2.3.1」 でインストールしています。 [vagrant@localhost chibi]$ bundle exec cap production deploy:check を 実行しデプロイのチェックをしましたが以下のようにWARNが表示されてしまいます。 ``` [vagrant@localhost chibi]$ bundle exec cap production deploy:check DEBUG [298c0a92] Running [ -d /usr/local/rbenv/versions/2.3.1-p112 ] as panda@XXXX-XXXX.com DEBUG [298c0a92] Command: [ -d /usr/local/rbenv/versions/2.3.1-p112 ] Enter passphrase for /home/vagrant/.ssh/id_rsa: (#パスフレーズを入力) DEBUG [ac41f77b] Finished in 75.550 seconds with exit status 1 (failed). WARN rbenv: 2.3.1-p112 is not installed or not found in /usr/local/rbenv/versions/2.3.1-p112 on panda@XXXX-XXXX.com ``` capistrano3のrbenvに関するコードはconfig/deploy.rbに記述しています。 ``` config/deploy.rb set :rbenv_type, :user set :rbenv_path, '/usr/local/rbenv' set :rbenv_ruby, '2.3.1p112' set :chruby_ruby, 'ruby-2.3.1p112' set :rbenv_prefix, "RBENV_ROOT=#{fetch(:rbenv_path)} RBENV_VERSION=#{fetch(:rbenv_ruby)} #{fetch(:rbenv_path)}/bin/rbenv exec" set :rbenv_map_bins, %w{rake gem bundle ruby rails} set :rbenv_roles, :all ``` ``` config/deploy/production.rb server 'XXXX-XXXX.com', user: 'panda', roles: %w{app web db} (#VPSの設定) set :ssh_options, { port: 60354, (#VPSのポート番号) keys: %w(/home/vagrant/.ssh/id_rsa), (#仮想マシンの秘密鍵を指定) forward_agent: true, auth_methods: %w(publickey) } ``` WARNでnot installedとなっているのでインストールできなかったというのはなんとなくわかります。 config/deploy.rbのset :rbenv_ruby, '2.3.1p112'の部分でWARNになっているみたいなのです。 1自分のVPSにすでにruby2.3.1p112はインストールされているからinstallできません。という警告なのか? 2それともVPSにインストールされていませんという警告なのか? 3VPSにrvmでインストールしているのでdeploy.rbの記述が違っているのか? もし1の場合はconfig/deploy.rbのコードを削除すれば解決するものなのでしょうか? 2の場合はproduction.rbの設定が間違っているのでしょうか? たとえば'XXXX-XXXX.com'の部分はIPアドレスを記入しなければいけない。 user: 'panda'はVPSのログインユーザー名ではないのか? 3の場合どのように記述すればいいのか? などデプロイは初めてで的外れな質問をしているかもしれませんが宜しくお願いします。
回答: deploy.rbのset :rvenvに関するコードを全てコメントアウトしset :rvm_ruby_version, "ruby-2.3.1" を追記して解決しました。 原因はVPS側にrubyをインストールする際にrvenvではなくrvmでインストールしていたのでrvenvは ありませんということが原因だったのでしょう。