web-dev-qa-db-ja.com

"bin / Rails:そのようなファイルやディレクトリはありません" w / Ruby 2&Rails 4 on Heroku

Rails 4BetaMichael Hartl's Ruby on Rails =チュートリアル、Herokuでアプリを起動できませんが、bundle exec Rails serverでローカルに正常に実行されます。heroku logs -tを確認すると、次のエラーが明らかになります。

$ heroku[web.1]: State changed from crashed to starting
$ heroku[web.1]: Starting process with command `bin/Rails server 
-p 33847 -e $Rails_ENV`
$ app[web.1]: bash: bin/Rails: No such file or directory
$ heroku[web.1]: Process exited with status 127
$ heroku[web.1]: State changed from starting to crashed
$ heroku[web.1]: Error R99 (Platform error) -> Failed to launch the 
dyno within 10 seconds
$ heroku[web.1]: Stopping process with SIGKILL

heroku run bashbinディレクトリを確認すると、実行可能なRailsnotあることがわかります。

~$ ls bin
erb  gem  irb  node rdoc  ri  Ruby  testrb

私は何を間違えましたか?チュートリアルに正確に従いました。

57
Justin Garrick

これに少し苦労した後、クローンした以前のRails 3プロジェクトとは異なり、Rails 4プロジェクトには/binディレクトリがあることに気付きました。 /binにはbundleRails、およびrakeの3つのファイルが含まれていますが、グローバル.gitignoreファイルにbinが含まれていたため、Herokuには届きませんでした。

これは、Gitや他の言語(Javaなど)で作業する場合の非常に一般的な無視ルールであるため、これを修正するには:

  1. ~/.gitignoreからbinを削除します
  2. bundle installを実行します
  3. git add .およびgit commit -m "Add bin back"を使用して変更をコミットします
  4. git Push heroku masterを使用してHerokuに変更をプッシュします
39
Justin Garrick

Rails 4.0.0にアップグレードしたので、この問題もありました。

このコマンドを実行する

rake Rails:update:bin

詳細についてはこちらをご覧ください https://devcenter.heroku.com/articles/Rails4

102
JanuskaE

ステップ

  1. bundle config --delete bin#Bundlerのスタブジェネレーターをオフにする

  2. rake Rails:update:bin#新しいRails 4つの実行可能ファイルを使用

  3. git add bin or git add bin -f#bin /をソース管理に追加

  4. git commit -a -m "you commit message"

  5. git Push heroku master

  6. heroku open

9
Kirit Vaghela

この問題は、~/binディレクトリは644 の代わりに 755。ランニング rake Rails:update:binローカル(Mac/* nix)で変更をプッシュすると、問題が修正されました。

3
Ryan Taylor

Rails 4アプリにmyapp/binディレクトリがなかったので、アプリを作成し、my app/script/Railsファイルに加えて、下からのバンドルおよびレーキファイルをコピーしました。 rvm/Ruby/binを使用して、これらをgitのリポジトリに追加し、herokuにプッシュしましたが、すべてうまくいきました。

0
user2697012

あなたと同じ問題がありました。問題は、binフォルダーがherokuリポジトリーにプッシュされないという事実にありました。

見た、見た、そしてもう一度見た、bin /フォルダの.gitignoreファイルにはルールがなかった...

その後、多くの苦痛と苦悩の末、私はすべてのリポジトリのすべてのbinフォルダーを無視するグローバル.gitignoreを作成する数か月前に気付きました(なぜ、主よ、なぜですか?)。

グローバルな.gitignoreを削除しましたが、すべて正常に機能しました。

0
TheSir