プログラミング初心者の勉強メモ。

あくまでメモなので、自分が忘れそうなことだけちょこちょこ書いてます。

Herokuにデプロイできない

デプロイ:webアプリケーション等をアップロードして起動し、ユーザーが利用可能な状態にすること

早速デプロイしようとしたら

error: failed to push some refs to 'https://git.heroku.com.....

(エラー:一部の参照を 'https://git.heroku.com .....にプッシュできませんでした)

とのこと。

rails環境(railsで使用する環境)がきちんと構築されていないことが原因のようで。

$ git push heroku masterをもう一度してみると

f:id:over54:20200617042512p:plain

Failed to install gems via Bundler.

(Bundler経由でのgemsのインストールに失敗しました)

とのこと。

なので、Heroku用の設定をもう一度確認することに。

 

・Gemfileの最後に追加

 group :production do  (←produciton環境で)
 gem 'pg', '>= 0.18', '< 2.0'  (←pgのgemを使用)
 end

 

・bundle installを実行

$ bundle install --without production

このGemfileはproduction環境(本番環境)において、pg(PostgreSQLRailsを連携するためのGem)というGemを使用すること表すらしいです。ただ、cloud9上では読み込む必要のないgemなので、スキップオプション(--without)をつけています。

※Cloud9環境では、基本development環境(開発環境)というモードで起動するので、production環境(本番環境)のgemは不要。

ちなみにdevelopment(開発)とproduction(本番)環境との違いですが、

開発はエラーの理由がわかりやすく表示され、本番は「エラー!」と出るだけだそうです。本番環境(実際に稼働している状況)でエラーの理由とかが詳細に表示されちゃうと、悪用される可能性もあるそうなので。

  

そして再度デプロイチャレンジ

$ git push heroku master

するとエラーではなくwarningが。

f:id:over54:20200617050235p:plain

warningその1

rails構成の検出に失敗しました。

HEROKU_DEBUG_RAILS_RUNNER=1を設定してデバッグ*1

 

warningその2

使用できる最新のRubyバージョンがあります。

2.5.8
最新バージョンにはセキュリティとバグ修正が含まれますので、常にお勧めします。

マイナーリリースの最新バージョンを実行します。
Rubyのバージョンをアップグレードしてください。
利用可能なすべてのRubyバージョンについては、以下を参照してください。
https:// ...

 

warningその3

デフォルトのWebサーバーを使用して、Procfile*2は検出されませんでした。
Procfileを介してサーバープロセスを起動する方法を明示的に宣言することをお勧めします。 https://devcenter.heroku...

 

「最新にしろ」ってことなんでしょうが、学習カリキュラムがこのバージョンを推奨しているので、そのままGo。

デプロイ自体はここまでで一応できました。後はHerokuを開く作業です。

*1:プログラムの誤り(=バグ)を見つけ、手直しをすること。

*2:Herokuのプラットフォーム上にあるWebアプリがどのようなコマンドで実行されるのかを記述するファイル