Gemfileの頭文字が小文字だったためかherokuへのデプロイに失敗した。
技術ネタ
Lastmod: 2019-06-23

Railsアプリ作成中にherokuへのデプロイで微妙にハマったのでメモ。

事象

git push heroku masterしたところ、buildpackとの互換性がないと激怒されてデプロイできない。

    $ git push heroku master
    Counting objects: 260, done.
    Delta compression using up to 8 threads.
    Compressing objects: 100% (237/237), done.
    Writing objects: 100% (260/260), 1.03 MiB | 22.54 MiB/s, done.
    Total 260 (delta 77), reused 0 (delta 0)
    remote: Compressing source files... done.
    remote: Building source:
    remote:
    
    remote: -----> App not compatible with buildpack: https://buildpack-registry.s3.amazonaws.com/buildpacks/heroku/ruby.tgz
    remote:        More info: https://devcenter.heroku.com/articles/buildpacks#detection-failure
    remote:
    remote:  !     Push failed
    remote: Verifying deploy...
    remote:
    remote: !       Push rejected to xxxxxxxxxxxxx.
    remote:
    To https://git.heroku.com/xxxxxxxxxxxxx.git
     ! [remote rejected] master -> master (pre-receive hook declined)
    error: failed to push some refs to 'https://git.heroku.com/xxxxxxxxxxxxx.git'

原因調査

More info:として記載されているURLを見に行ったところ、

「アプリケーションのルートフォルダにGemfileが存在する必要がある」との記載を発見。

Buildpacks | Heroku Dev Center

解決方法

ルートフォルダにあるGemfileの頭文字が小文字になっていたので、

gemfile -> Gemfile_rename -> Gemfile の順番で「名前を修正してコミット」したところ、正常にデプロイできるようになりました。

下記の順番でrails newした際にgemfileを小文字にしてしまったことが原因のようです。

bundle init でGemfileを生成しなかったのが悪い。

  1. 新規ディレクトリを作成
  2. vi gemfile (頭文字が小文字のgemfileを作成してしまう)
  3. bundle install –path vendor/bundle
  4. bundle exec rails new .
    $ git status
    On branch master
    Your branch is up to date with 'origin/master'.
    
    Changes not staged for commit:
      (use "git add/rm <file>..." to update what will be committed)
      (use "git checkout -- <file>..." to discard changes in working directory)
    
            deleted:    gemfile
    
    
    Untracked files:
      (use "git add <file>..." to include in what will be committed)
    
            Gemfile_rename
    
    no changes added to commit (use "git add" and/or "git commit -a")
    $ git add -A
    $ git commit -m "Rename Gemfile"
    [master 79e9bd7] Rename Gemfile
     1 file changed, 0 insertions(+), 0 deletions(-)
     rename gemfile => Gemfile_rename (100%)