本番環境Passengerで複数のRubyバージョンを扱う

背景

新しくRailsアプリを作って、Webサーバ(CentOS + Apache)のバーチャルホストとしてデプロイすると「We’re sorry, but something went wrong.」のエラーが発生。

エラー画面

Railsのエラー画面っぽいけど、いつもと見た目がちょっと違う。

エラー内容

アパッチのエラーログを確認する。

$ vim /var/log/httpd/error_log

Message from application: Your Ruby version is 2.3.1, but your Gemfile specified 2.5.1 (Bundler::RubyVersionMismatch)

Gemfileで指定されているRubyのバージョンと、サーバのバージョンが違うというエラー。

解決方法

ますは rvm で該当する Ruby バージョンをインストールして、Railsアプリに適用する。

$ rvm list known # インストール可能なバージョンを確認
$ rvm install 2.5.1
$ rvm use 2.5.1

そして、バーチャルホストで使う「PassengerRuby」のバージョンも指定する。

# etc/httpd/conf/httpd.conf
<VirtualHost *:80>
    PassengerRuby /home/usr/.rvm/gems/ruby-2.5.1/wrappers/ruby
    ServerName [your_domain]
    DocumentRoot /var/www/html/[your_domain]/public
    <Directory "/var/www/html/[your_domain]/public">
       Options -MultiViews
       AllowOverride All
       Order allow,deny
       Allow from all
    </Directory>
</VirtualHost>

サーバを再起動させれば、完了。

$ sudo service httpd restart

兵庫県西宮市生まれのフリーランスRailsエンジニア。海外を拠点にデジタルノマド生活中。/ 前職・資格:公認会計士 / プログラミング言語:Ruby, JavaScript, HTML, CSS / 日本語・英語
コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です