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

Posted

技术标签:

【中文标题】“bin/rails:没有这样的文件或目录”在 Heroku 上使用 Ruby 2 和 Rails 4【英文标题】:"bin/rails: No such file or directory" w/ Ruby 2 & Rails 4 on Heroku 【发布时间】:2013-07-09 03:19:07 【问题描述】:

虽然遵循 Michael Hartl 的 Ruby on Rails Tutorial 的 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

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

【参考方案2】:

步骤

    bundle config --delete bin # 关闭 Bundler 的存根生成器

    rake rails:update:bin # 使用新的 Rails 4 可执行文件

    git add bin or git add bin -f # 添加 bin/ 到源代码管理

    git commit -a -m "you commit message"

    git push heroku master

    heroku open

【讨论】:

【参考方案3】:

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

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

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

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

【讨论】:

【参考方案4】:

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

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

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

【讨论】:

【参考方案5】:

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

【讨论】:

【参考方案6】:

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

【讨论】:

【参考方案7】:

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

运行此命令

rake rails:update:bin

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

【讨论】:

对于那些从 Rails 3 升级等的人来说是个好信息,但是问题中的问题发生在一个新的应用程序中。此外,如果您将这些目录 gitignored,这对您没有帮助,因为它们仍然不会被 git 推送到 Heroku。 迁移到 Rails 4.0.0,这绝对是问题所在。 发出这个命令帮助我让我的 heroku 应用程序再次运行。非常感谢。 rake app:update:bin 在撰写本文时适用于 Rails 6+【参考方案8】:

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

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

    ~/.gitignore 中删除bin 运行bundle install 提交您的 随 git add .git commit -m "Add bin back" 变化 使用 git push heroku master 将您的更改推送到 Heroku

【讨论】:

有一个关于在 Heroku 上运行 Rails4 应用程序的 Heroku 指南 - devcenter.heroku.com/articles/rails4 是的,它提到你的 .gitignore 中没有 bin,但教程没有。只是想我会创建这个以防其他人遇到类似问题。 @justingarrick 你真的需要运行bundle install吗?似乎是一个额外的步骤。 确保它不在你的全局 gitignore 中。这就是我的痛处。 我对 Dokku 也有同样的问题:502 bad gateway。感谢您的帮助。

以上是关于“bin/rails:没有这样的文件或目录”在 Heroku 上使用 Ruby 2 和 Rails 4的主要内容,如果未能解决你的问题,请参考以下文章

h:commandButton 在 h:dataTable 中不起作用

Latex 格式Markdown或者LaTeX在单个字母上加一横一点两点三角

Latex 格式Markdown或者LaTeX在单个字母上加一横一点两点三角

在 stdafx.h 中声明 <afxdb.h> 时出错

如何在 Unix 上包含 «pty.h» 头文件/将 «pty.h» 添加到标准库 C / C++

如何在 h:dataTable 中使用 h:selectOneRadio 来选择单行?