“bin / rails:没有这样的文件或目录”在Heroku上有ruby2和Rails 4

在遵循Michael Hartl的Ruby on Rails教程的Rails 4 Beta版本的同时,我的应用程序无法在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 bash并检查bin目录,我可以看到没有一个rails可执行文件:

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

我做错了什么? 我完全按照教程。

自从我升级到rails 4.0.0以来,我也遇到了这个问题

运行这个命令

 rake rails:update:bin 

你可以去这里获取更多信息https://devcenter.heroku.com/articles/rails4

经过一段时间的努力之后,我注意到我的Rails 4项目有一个/bin目录,这与我克隆的一些旧的Rails 3项目不同。 /bin包含3个文件, bundlerailsrake ,但是这些文件并没有到Heroku,因为我的全局.gitignore文件中有bin

如果您使用Git和其他语言(Java等),这是一个非常常见的忽略规则,所以要解决这个问题:

  1. ~/.gitignore删除bin
  2. 运行bundle install
  3. git add .提交你的修改git add .git commit -m "Add bin back"
  4. git push heroku master你的修改推送到Heroku

步骤

  1. bundle config --delete bin #closuresBundler的存根生成器

  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

我有这个问题,因为我的~/bin目录的权限是644而不是755 。 运行rake rails:update:bin在本地rake rails:update:bin (在Mac / * nix上),然后推送修改解决了问题。

我们在rails 4应用程序中没有myapp / bin目录,所以我们创build了一个,然后复制到我的app / script / rails文件中,再加上rvm / ruby​​ / bin下的bundle和rake文件,然后添加到git的回购,推到heroku,一切都很好。

我可以确认运行rake rails:update:bin works,正如@Ryan Taylor所说的。

我想我有这个问题,因为我最初在Windows上创build了这个Rails应用程序。 在Linux上运行上面的命令解决了我。

此外,从Windows更改为Linux进行开发,删除Gemfile.lock文件并运行bundle install生成它是一个好主意,没有列出Windows特定的gem。

我有和你一样的问题。 这个问题在于bin文件夹从未被推送到heroku存储库。

我看着,我看了看,然后再次看了一眼,bin /文件夹的.gitignore文件中没有规则。

然后,在经历了很多痛苦和痛苦之后,我意识到在创build一个全局.gitignore几个月之前,我将忽略所有存储库的所有bin文件夹(为什么是主为什么?)。

我删除了全局的.gitignore,一切正常。