Rails

【Railsチュートリアル】第6版の1章でHerokuにデプロイできなかった時の対応方法

お久しぶりです。Jyu2です。

最近はブログの更新もままなっていませんが、以前挫折したRailsチュートリアルを再度1からチャレンジしています。

以前は「挫折しないRailsチュートリアル」って感じでブログ記事にしてましたが、完全に挫折してしまいました。

挫折しないRailsチュートリアルまとめ【第1章】30DAYSトライアル4th(Rails)が完了したので、Railsチュートリアルに入っています。 しょっぱなの第1章からつまずき...

目標は今年中に何かWebアプリ、Webサービスを作ること。

理想はそれを元にマネタイズしたいところです。

そうでなくても転職活動のポートフォリオとなればと思っています。(本当に転職するかは分からない)

それで意気揚々と第1章を始めたわけですが、1章の最後であるHerokuへのデプロイに失敗して四苦八苦したので、今回はその対処方法をご紹介します。

Railsチュートリアルってなんぞやって方は以前記事にしてるので、そちら参照してみてください。

Railsの登竜門。Railsチュートリアルの始め方Progate、ドットインストールでのRailsコースを終えたためここからはRailsを学習するための定番で避けては通れないRailsチ...

ちなみに僕は今回Web版の第6版で学習を初めています。(980円+税)

過去版だと無料で学習できますが、Railsなどのバージョンが古いので最新版でやるをオススメします。

Herokuとは

Web系プログラミングの初学者の方は、そもそもHerokuって何?というところから始まると思います。

僕もそうでした。

しかもRailsチュートリアルの1章を終えた今でもHerokuって何だよって思ってますw

Herokuとはアプリの構築、提供、監視、スケールに役立つクラウドプラットフォームで、アイデアをだしてから運用を開始するまでのプロセスを迅速に進めることが可能です。また、インフラストラクチャの管理も問題からも開放されます。

引用元:Herokuホームページ

これだけ見ても良く分かりませんね…。

IT業界によくある、分からないからググっても、その結果が難しすぎて良く分からないの典型だと思います。

Herokuとはアプリケーションを実行するための環境

Herokuとはアプリケーションを実行するための環境のことになります。

アプリケーションを実行するためには、データを登録するデータベースや、画面操作した処理を動かすためのサーバー環境が必要になりますが、それを簡単に利用することができます。

自分で1からアプリケーションサーバーを開発作成しようとすると、サーバー用のパソコンを用意して、そこにデータベースをインストールして・・・などと手間や時間がかかってしまいます。

また、アプリの利用者が増えて「サーバー用のパソコンを増強したい」と思った時も、自作の環境だとサーバーのスペックを増強するのは簡単ではないです。

それを解決してくれるのが、HerokuのようなPaaS(Platform as a Service)になります。

Paasとは

Herokuのことを調べてたら、PasSという新たな言葉が出てきましたね…。

PasSとは前述した通りPlatform as aServiceの略になります。

インターネット上でアプリケーションを公開しようとおもった場合、次のような手順を踏まないとアプリケーションを作り始めることするできませんでした。

  • サーバーPCやルータなどのハードウェア購入
  • インターネットに接続し、ネットワークを構築
  • サーバーの仮想化環境を整備
  • LinuxやWindowsサーバーなどのOSをインストール
  • Oracle、MySQL、PostreSQLなどのデータベースをセットアップ
  • Java、Ruby、PHPなどのアプリケーションをセットアップ

いや〜多いです_。

PaaSは上に挙げた作業を代行してくれるサービスになります。

う〜ん。便利ですねぇ。

Herokuの3つのメリット

今回はHerokuの回ではないので、サラッと。

拡張機能が豊富

拡張機能を使うだけでメール配信用の環境が利用できるようになるなど、さまざまな拡張機能が用意されています。

スケールアウトが簡単

スケールアウトとは、システムを構成するサーバーの台数を増やし、システムの処理能力を高めることです。

Herokuではこれを設定画面からの操作や簡単なコマンドで実行できます。

運用をサポートする標準機能が揃っている

アプリ開発が終わったら、それで作業が終わるわけではありません。

アプリをリリースした後、それが正しく迅速に動作するように運用していく必要があります。

それをサポートするための「ログ」や「パフォーマンス」をチェックして、状況を早くする技術が必要になりますが、Herokuでは、「ログ」や「パフォーマンス」を確認する機能も備わっており、それらを利用するために別途費用がかかるということもありません。

Railsチュートリアル第6版 1章で発生した問題点

長々とHerokuの説明をしてしまいましたが、本題は2021年2月の段階でRailsチュートリアル第6版の1章を進めていくとHerokuへのデプロイ(プログラムをHerokuへ配備する)作業でエラーとなってしまうことの解決方法になります。

HerokuというかPasSやSasSなどについてはいつかはまとめておきたいですね。

と、また話しがそれてしまいそうでした…

問題の箇所は「1.5.2 Herokuにデプロイする(1)」になります。

Herokuにでデプロイするために以下のコマンドを実行します。

すると以下のようなメッセージが表示されます。

英語で全然分かりませんが、

Ruby2.6.3は最新のHeroku-20には入ってませんよ。Ruby2.6.3が使えるのはCedar-14、Heroku-16、Heroku-18ですよ。的なことを言われてHerokuへのデプロイは失敗します。

ここで僕はRubyのバージョンを上げようと思ったのですが、中々Heroku-20がサポートしているRubyのバージョンに辿り着けず、HerokuをHeroku-18にすることにしました。

HerokuをHeroku-18に切り替える

HerokuをHeroku-18に切り替えるにはターミナルで以下を実行します。

真ん中のコマンドが実際にHerokuをstack18に下げるコマンドになります。

これをやれば問題なくHerokuへのデプロイが完了します。

それでもうまくいかない方

それでもうまくいかない方は、自分の以前の記事も参考になるかもしれません。

Railsチュートリアル1章でHerokuにデプロイできない時の対処方法Railsチュートリアルの第1章でHerokuにデプロイできずに早速挫折しかけました。 今後、Railsチュートリアルを行う方が同...

是非見てみてください。

まとめ

いかがだったでしょうか?

2020年2月時点でRailsチュートリアルを始めた方は、必ず躓くポイントにです。

Railsでのアプリ開発をできるようにということに注力するのであれば、Herokuへのデプロイはとばして進めても良いですが、エラーにぶち当たったときは自分自信を成長させるチャンスと思ってエラー解消にトライしてみましょう!

Railsチュートリアルの1章で挫折する方が1人でも減ればと幸いです。

Railsの中で使用されるRubyの本になります。

Railsチュートリアルをやる前にRubyはProgateなどで学習している方も多いかと思いますが、Progateからさらに発展したRubyの入門書になります。

RailsはRubyで記載するとはいえ、Rubyの文法にはあまり触れられないので、Railsチュートリアルを受けるための相棒としてオススメです。

ABOUT ME
Jyu2
ソフトウェア会社(SIer)で10年以上勤務のシステムエンジニア|ポケットWiFi使用歴2年以上|ポケットWiFi+αで快適でお得なインターネット環境を構築するための情報を発信|その他、IT情報やWebサービス、アプリ、ガジェットなどの情報を発信|自分と他の人のカバンの中身を紹介するメディア「カバンの中身ラボ(https://kaban-no-nakami-labo.com/)」も運営しています。 ポケットWiFi選びに迷ったらTwitter、お問合せフォームからご連絡ください。