Rails 3.2 应用程序的 heroku 推送突然失败并显示“无法检测到 rake 任务”(没有其他错误)

heroku push of Rails 3.2 app suddenly fails with "Could not detect rake tasks" (no other errors)

提问人:user3407688 提问时间:6/3/2020 更新时间:6/4/2020 访问量:219

问:

我在配置中没有更改任何内容(没有新的宝石或版本更改);只有一行代码,但我现在无法推送到 heroku。heroku 一定有什么变化吗?

它是 Rails 3.2.22.5;红宝石 2.3.1.(是的,我正在升级到 Rails 5,但这是一项艰巨的工作,与此同时,我仍然需要维护现有的生产系统。

RAILS_ENV=生产捆绑包 exec rake -P 工作正常。我不认为这真的是一个耙子问题。我最好的猜测是 heroku 发生了一些变化,以至于我拥有的某些版本不再受支持,但我不知道是什么。而且我没有收到任何信息丰富的错误消息。

不知所措...我已经广泛地搜索了,但大多数帖子都是 4+ 年。我尝试在本地预编译并仅签入清单文件。我尝试升级 rake(从 13.0.0 升级到 13.0.1),并且由于没有任何效果,因此将所有内容都放回了原处。

remote:        Bundle complete! 54 Gemfile dependencies, 118 gems now installed.
remote:        Gems in the groups development and test were not installed.
remote:        Bundled gems are installed into `./vendor/bundle`
remote:        Bundle completed (0.51s)
remote:        Cleaning up the bundler cache.
remote: -----> Writing config/database.yml to read from DATABASE_URL
remote: -----> Installing node-v12.16.2-linux-x64
remote: -----> Detecting rake tasks
remote: 
remote:  !
remote:  !     Could not detect rake tasks
remote:  !     ensure you can run `$ bundle exec rake -P` against your app
remote:  !     and using the production group of your Gemfile.
remote:  !     bash: /tmp/build_785c3bf77f08cff81f442938e3386876/bin/rake: /app/vendor/ruby-2.3.1/bin/ruby: bad interpreter: No such file or directory
remote:  !
remote: /tmp/buildpackvv7B3/lib/language_pack/helpers/rake_runner.rb:106:in `load_rake_tasks!': Could not detect rake tasks (LanguagePack::Helpers::RakeRunner::CannotLoadRakefileError)
ruby-on-rails git heroku ruby-on-rails-3.2 耙子

评论

0赞 scilence 6/3/2020
我同意,我也不认为这是耙子问题。当你跑步时,那是在你的heroku dyno上还是在本地?如果没有,我会尝试在测功机上运行该命令。如果成功,请键入以查看 ruby 的安装路径。我猜它不应该指向您的供应商目录。如果它没有指向那条路径,那么有东西将 rake 指向那条路径。RAILS_ENV=production bundle exec rake -Pwhich ruby/app/vendor/ruby-2.3.1/bin/ruby: bad interpreter
0赞 user3407688 6/4/2020
感谢您的回复!我在两个地方都做了,而且效果很好。事实证明,我们关于它不是耙子是对的——这是一个构建包问题。我在下面回答我自己的问题和解决方案。

答:

0赞 user3407688 6/4/2020 #1

我问了heroku支持,他们发现了问题所在。正如预期的那样,与耙子或我的项目本身无关(因为我没有更改任何内容)。

这与构建包有关。我需要一个 PDF 生成器,所以我设置了一个“多构建包”(几年前完成),显然以一种不再受支持的方式。我相信近因指向的是“主”构建包,而不是稳定版本。所以有人在heroku检查了一些东西,它破坏了我的项目:)它可能只会影响那些几年前在旧雪松堆上设置它的人,就像我一样。

我跑了:

heroku buildpacks:remove https://github.com/heroku/heroku-buildpack-multi.git
heroku buildpacks:add heroku/ruby
heroku buildpacks:add https://github.com/dscout/wkhtmltopdf-buildpack.git

并且能够再次部署!