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などしてください。
また、これでもできないなどの問題が生じたら下のコメントへ質問を書いてください。
できるだけ早めに返信致します。
ではでは