herokuを使ってrailsアプリをデプロイ(公開)する方法

プログラミング

Webアプリを作ったはいいがデプロイ(公開)が難しくて諦めるなんて事が

あってはいけません!

 

herokuを使ってrailsアプリをデプロイする方法

 

herokuとはどういうものなのかはまた後日書きます。

ここではherokuを知っている人向けに書いていきますね。

herokuを使ってrailsアプリをデプロイする方法

シラバスというサイトのRailsアプリをHerokuにデプロイするというページを参考にしていただければ

git push heroku master

一番わかりやすいと思います。

しかし、この通りにするとエラーが起きる事があります。

なので、これには補足すべき事を書いていきます!

 

git push heroku masterでエラーが出たら

私は $ git push heroku master を行ってもエラーが出ました。

エラーの内容は

remote: Compressing source files… done.

remote: Building source:

remote:

remote: —–> Ruby app detected

remote: —–> Compiling Ruby/Rails

remote: —–> Using Ruby version: ruby-2.2.6

remote: —–> Installing dependencies using bundler 1.13.7

remote:        Running: bundle install –without development:test –path vendor/bundle –binstubs vendor/bundle/bin -j4 –deployment

remote:        Warning: the running version of Bundler (1.13.7) is older than the version that created the lockfile (1.14.4). We suggest you upgrade to the latest version of Bundler by running `gem install bundler`.

remote:        Fetching gem metadata from https://rubygems.org/………

remote:        Fetching version metadata from https://rubygems.org/..

remote:        Fetching dependency metadata from https://rubygems.org/.

remote:        openssl-2.0.3 requires ruby version >= 2.3.0, which is incompatible with the

remote:        current version, ruby 2.2.6p396

remote:        Bundler Output: Warning: the running version of Bundler (1.13.7) is older than the version that created the lockfile (1.14.4). We suggest you upgrade to the latest version of Bundler by running `gem install bundler`.

remote:        Fetching gem metadata from https://rubygems.org/………

remote:        Fetching version metadata from https://rubygems.org/..

remote:        Fetching dependency metadata from https://rubygems.org/.

remote:        openssl-2.0.3 requires ruby version >= 2.3.0, which is incompatible with the

remote:        current version, ruby 2.2.6p396

remote:  !

remote:  !     Failed to install gems via Bundler.

remote:  !

remote:  !     Push rejected, failed to compile Ruby app.

remote:

remote:  !     Push failed

remote: Verifying deploy….

remote:

remote: ! Push rejected to sleepy-wave-80873.

remote:

To https://git.heroku.com/sleepy-wave-80873.git

! [remote rejected] master -> master (pre-receive hook declined)

error: failed to push some refs to ‘https://git.heroku.com/sleepy-wave-80873.git’

これでした。

 

この中の

Warning: the running version of Bundler (1.13.7) is older than the version that created the lockfile (1.14.4). We suggest you upgrade to the latest version of Bundler by running `gem install bundler`.

この文章がエラーの正体です。

この文は「herokuで公開するには1.13.7のバージョンのBundlerが必要です。

あなたのBundlerは1.14.4だからターミナルで$gem install bundlerしてバージョンを変えてください。」

と言っています。

私はこの文を読んで$gem install bundlerをしたりしてなんとかバージョンを書き換えようとしましたが

何を行ってもバージョンが書き変わりません。

ですので、色々調べた結果答えがわかったので、おしらせします。

railsをインストールした際に勝手に入ってくる

Gemfile.lockというファイルの一番下にある

BUNDLED WITH

の下にある

1.14.4という数字を要求してきている1.13.7に変更してください。

そしてGemfile.lockを保存します。

そのあと(括弧の中はターミナルに記述しません)

$ bundle install

(ここではGemfile.lockを書き換えたので、「書き換えたよ」とお知らせしています)

$git add .

(ここではGemfile.lockを書き換えたので、githubに書き換えたファイルを加えています)

$git commit -m “specify ruby 2.3.0 on gemfile”

(ここではgithubに加えたファイルをクラウド上のファイルにも反映させます。””←ここに入る言葉は更新の名前ですのでなんでもいいです。)

$ git push heroku master

(再度githubの内容をherokuにpushします)

openssl-2.0.3 requires ruby version >= 2.3.0, which is incompatible with theの対処

 

このエラーにはもう一つ問題が潜んでいます。
openssl-2.0.3 requires ruby version >= 2.3.0, which is incompatible with the

current version, ruby 2.2.6p396

この文言もエラーです。

この文書は「あなたのrubyのバージョンは2.2.6p396ですが、

git push heroku masterするには2.3.0へ変更する必要があります」と言っています。

なので私はターミナルでバージョンを変更しようとしましたが無理でした。

そもそもrubyは何も指定しなければ、勝手に2.2.6p396になってしまいます。

これを変更するには

Gemfileの一番上にある

source ‘https://rubygems.org’の下に

ruby “2.3.0”

こう記述してください。

そして、

$ bundle install

$git add .

$git commit -m “specify ruby 2.3.0 on gemfile”

$ git push heroku master

これは先ほどと同じですね。

すると、$git push heroku masterは成功します。

heroku run rake db:migrateでエラーが出たら

$heroku run rake db:create
$heroku run rake db:schema:load
↓
$heroku run rake db:migrate

この時もしrunができなかったとしたら

$ heroku run:detached rake db:migrate

という形でrunのあとに毎回:detachedを加えます。

つまり

$heroku run:detached rake db:create
$heroku run:detached rake db:schema:load
↓
$heroku run:detached rake db:migrate

これをするとなぜか

$git push heroku masterが成功します!

まとめ

その後はもう一度

シラバスというサイトのRailsアプリをHerokuにデプロイするというページに戻って$heroku openなどしてください。

また、これでもできないなどの問題が生じたら下のコメントへ質問を書いてください。

できるだけ早めに返信致します。

ではでは