Help us understand the problem. What is going on with this article?

【Rails】RailsアプリをAWSへデプロイする際に特定のgemがあることでCMake Errorになりデプロイできない場合

環境

  • Rails 6.0.3
  • ruby 2.6.6
  • AWS
  • EC2
  • nginx
  • Capistrano

内容

RailsアプリをAWSへデプロイする際に、特定のgemがあることで、CMake Error となり、デプロイに失敗したときのメモです。

今回の場合、特定のgemとはqiita-markdownになります。

説明

下記コマンドでデプロイを実施。

ローカル環境のターミナル(Railsアプリのルートディレクトリ)
$ bundle exec cap production deploy

その後途中まで順調に進みますが、bundler:install の部分でエラーがはかれ、デプロイに失敗しました。
エラー文が長いので割愛しますが、原因に直結する部分だけ載せます。

エラー文
----------- 略 -----------

bundler:install

----------- 略 -----------

  01 Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

----------- 略 -----------

  01 CMake Error at CMakeLists.txt:15 (CMAKE_MINIMUM_REQUIRED):
  01 CMake 3.5.1 or higher is required.  You are running version 2.8.12.2

----------- 略 -----------

In Gemfile:

  qiita-markdown was resolved to 0.27.0, which depends on

    github-linguist was resolved to 4.8.18, which depends on

      rugged

エラー文を見る限り、CMakeのバージョンが古いことが直接的な原因でした。

特別なgem(今回の場合はqiita-markdown)が入っている場合は先に依存関係のあるパッケージをEC2にインストールしておく必要があります。

こちらの記事を参考に、CMakeをアップデートすることにしました。
また、記事投稿時点でのCMakeの最新バージョンが3.19.0だったので、このバージョンでアップデートすることにしました。
CMakeの最新バージョンはCMakeのホームページで確認できます。

下記が一連のコマンドの流れです。

サーバー環境のターミナル
$ sudo yum remove cmake

$ wget https://cmake.org/files/v3.19/cmake-3.19.0.tar.gz

$ tar xvzf cmake-3.19.0.tar.gz

$ cd cmake-3.19.0

$ ./bootstrap      (少し時間がかかります)

$ make             (結構時間がかかります)

$ sudo make install

上記が完了後、再度下記コマンドでデプロイを実施。

ローカル環境のターミナル(Railsアプリのルートディレクトリ)
$ bundle exec cap production deploy

これで無事にデプロイが完了しました!


こちらの回答に導いてくれた@take18k_techさんに感謝します!

keisuke-333
メモとして残しています。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away