提问人:user3407688 提问时间:6/3/2020 更新时间:6/4/2020 访问量:219
Rails 3.2 应用程序的 heroku 推送突然失败并显示“无法检测到 rake 任务”(没有其他错误)
heroku push of Rails 3.2 app suddenly fails with "Could not detect rake tasks" (no other errors)
问:
我在配置中没有更改任何内容(没有新的宝石或版本更改);只有一行代码,但我现在无法推送到 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)
答:
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
并且能够再次部署!
评论
RAILS_ENV=production bundle exec rake -P
which ruby
/app/vendor/ruby-2.3.1/bin/ruby: bad interpreter