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を生成しなかったのが悪い。
- 新規ディレクトリを作成
- vi gemfile (頭文字が小文字のgemfileを作成してしまう)
- bundle install –path vendor/bundle
- 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%)