質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Capistrano

Rubyで書かれたサーバオーケストレーションで、複数のサーバでスクリプトを実行する際に用いられます。主な使用用途はWebアプリケーションのデプロイメントです。 アプリケーションのバージョンアップ自動化、およびデータベースの変更などもできます。

Q&A

1回答

1740閲覧

自動デプロイ(bundle exec cap production deploy)を行うと出る、WARN rbenv: 2.5.8 is not installedエラーを解決したい!

takutakuminmin

総合スコア0

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Capistrano

Rubyで書かれたサーバオーケストレーションで、複数のサーバでスクリプトを実行する際に用いられます。主な使用用途はWebアプリケーションのデプロイメントです。 アプリケーションのバージョンアップ自動化、およびデータベースの変更などもできます。

0グッド

0クリップ

投稿2020/11/02 10:50

自動デプロイ(bundle exec cap production deploy)を行うと出る、WARN rbenv: 2.5.8 is not installed or not found in /root/.rbenv/versions/2.5.8 on 【ElasticIP】

エンジニア転職するためにRailsでポートフォリオを作成し、Dockerを導入(ローカルのみ)した時にRubyのバージョンを2.5.1から2.5.8に変更してしまい、それ以来capistranoによる自動デプロイを行うと、以下のエラーメッセージが発生するようになりました。

発生している問題・エラーメッセージ

WARN rbenv: 2.5.8 is not installed or not found in /root/.rbenv/versions/2.5.8 on 【ElasticIP】

該当のソースコード

deploy.rb

deploy.rb

1 2# config valid only for current version of Capistrano 3# capistranoのバージョンを記載。固定のバージョンを利用し続け、バージョン変更によるトラブルを防止する 4lock '3.14.1' 5 6# Capistranoのログの表示に利用する 7set :application, 'myapp' 8 9# どのリポジトリからアプリをpullするかを指定する 10set :repo_url, 'git@github.com:username/myapp.git' 11 12# バージョンが変わっても共通で参照するディレクトリを指定 13set :linked_dirs, fetch(:linked_dirs, []).push('log', 'tmp/pids', 'tmp/cache', 'tmp/sockets', 'vendor/bundle', 'public/system', 'public/uploads') 14 15set :rbenv_type, :user 16set :rbenv_ruby, '2.5.8' 17set :rbenv_path, '/root/.rbenv' 18 19# どの公開鍵を利用してデプロイするか 20set :ssh_options, auth_methods: ['publickey'], 21 keys: ['~/.ssh/myapp.pem'] 22 23# プロセス番号を記載したファイルの場所 24set :unicorn_pid, -> { "#{shared_path}/tmp/pids/unicorn.pid" } 25 26# Unicornの設定ファイルの場所 27set :unicorn_config_path, -> { "#{current_path}/config/unicorn.rb" } 28set :keep_releases, 5 29 30# デプロイ処理が終わった後、Unicornを再起動するための記述 31after 'deploy:publishing', 'deploy:restart' 32namespace :deploy do 33 task :restart do 34 invoke 'unicorn:restart' 35 end 36end

試したこと

ローカル環境が2.5.8なのに本番環境が2.5.1になっているためエラーが出ていると考え、ec2userでもrubyとrbenvのバージョンを2.5.8に変更した。

// ローカル環境 [maedatakumi@maedatakumi myapp] % rbenv version 2.5.8 (set by /Users/maedatakumi/projects/books/.ruby-version) [maedatakumi@maedatakumi myapp] % ruby -v ruby 2.5.8p224 (2020-03-31 revision 67882) [x86_64-darwin19] // 本番環境 [ec2-user@ip-123-45-67-89 myapp]$ rbenv version 2.5.8 (set by /var/www/books/.ruby-version) [ec2-user@ip-123-45-67-89 myapp]$ ruby -v ruby 2.5.8p224 (2020-03-31 revision 67882) [x86_64-linux]

補足情報(FW/ツールのバージョンなど)

  • macOS Catalina バージョン10.15.6
  • MySQL 5.6.47
  • Rails 5.2.4.3

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

/root/.rbenv/versions/2.5.8

set :rbenv_path, '/root/.rbenv'

このあたりを見るに本番ではrootのユーザのrbenvを参照しようとしているので、ec2-userのローカルにあるrbenvでRubyのどのバージョンをインストールしても参照できない状態になっています。
デプロイするユーザとディレクトリがわからないので何とも言えませんが、とりあえずec2-userでデプロイするのであればec2-userの.rbenvを参照してください。

投稿2020/11/02 11:31

yu_1985

総合スコア7588

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takutakuminmin

2020/11/03 07:22

ご回答ありがとうございます! ``` /root/.rbenv/versions/2.5.8 set :rbenv_path, '/root/.rbenv' ``` の部分を、 ``` /ec2-user/.rbenv/versions/2.5.8 set :rbenv_path, '/ec2-user/.rbenv' ``` に変更するということでしょうか?
takutakuminmin

2020/11/03 07:28

変更してみたのですが、以下のようにrootからec2-userに変わったもののエラーをまた吐かれてしまいました。。 WARN rbenv: 2.5.8 is not installed or not found in /ec2-user/.rbenv/versions/2.5.8 on 【ElasticIP】
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問