“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 个文件,bundle
、rails
和 rake
,但这些文件没有进入 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在单个字母上加一横一点两点三角