59

在遵循Michael Hartl 的Ruby on Rails 教程的 Rails 4 Beta版本时,我的应用程序无法在 Heroku 上启动,但在本地运行良好。检查显示以下错误:bundle exec rails serverheroku 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

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

4

8 回答 8

105

自从我升级到 rails 4.0.0 后我也遇到了这个问题

运行此命令

rake rails:update:bin

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

于 2013-07-20T00:41:39.377 回答
40

在为此苦苦挣扎之后,我注意到我的 Rails 4 项目有一个/bin目录,这与我克隆的一些旧 Rails 3 项目不同。 /bin包含 3 个文件,bundlerailsrake,但这些文件没有进入 Heroku,因为我bin在我的全局.gitignore文件中有。

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

  1. bin从中删除~/.gitignore
  2. bundle install
  3. git add .使用and提交您的更改git commit -m "Add bin back"
  4. 将您的更改推送到 Herokugit push heroku master
于 2013-07-11T01:04:07.103 回答
9

步骤

  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

于 2015-03-16T19:19:26.730 回答
3

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

于 2014-04-16T05:16:23.187 回答
1

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

我看了,我看了,然后又看了一遍,bin/文件夹的.gitignore文件里没有规则……

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

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

于 2015-01-31T09:42:11.007 回答
0

我们的 rails 4 应用程序中没有 myapp/bin 目录,所以我们创建了一个,然后复制到 my app/script/rails 文件中,加上 rvm/ruby/bin 下的 bundle 和 rake 文件,然后添加这些到 git 的 repo 并将其推送到 heroku,一切都很好。

于 2013-08-19T15:48:00.817 回答
0

在 Rails 5.2.6 上,rake app:update:bin 为我工作。现在部署到 heroku 正在工作。

于 2021-12-15T05:54:02.057 回答
-1

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

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

此外,在从 Windows 更改为 Linux 进行开发时,最好删除Gemfile.lock文件并运行bundle install以再次生成它,而不在那里列出 Windows 特定的 gem。

于 2015-01-28T12:24:06.103 回答