HEROKUBUNDLER未定义的方法“存在?”,无法通过Bundler

问题描述 投票:0回答:2

试图将Rails App推到Heroku时遇到了一个奇怪的错误:

    remote: -----> Building on the Heroku-20 stack
    remote: -----> Using buildpack: heroku/ruby
    remote: -----> Ruby app detected
    remote: -----> Installing bundler 2.2.16
    remote: -----> Removing BUNDLED WITH version in the Gemfile.lock
    remote: -----> Compiling Ruby/Rails
    remote: -----> Using Ruby version: ruby-3.0.1
    remote: -----> Installing dependencies using bundler 2.2.16
    remote:        Running: BUNDLE_WITHOUT='development:test' BUNDLE_PATH=vendor/bundle BUNDLE_BIN=vendor/bundle/bin BUNDLE_DEPLOYMENT=1 bundle install -j4
    remote:        /tmp/build_ae8e646d/bin/bundle:42:in `gemfile': undefined method `present?' for "/tmp/build_ae8e646d/Gemfile":String (NoMethodError)
    remote:        Did you mean?  prepend
    remote:         from /tmp/build_ae8e646d/bin/bundle:49:in `lockfile'
    remote:         from /tmp/build_ae8e646d/bin/bundle:57:in `lockfile_version'
    remote:         from /tmp/build_ae8e646d/bin/bundle:68:in `bundler_version'
    remote:         from /tmp/build_ae8e646d/bin/bundle:72:in `bundler_requirement'
    remote:         from /tmp/build_ae8e646d/bin/bundle:100:in `activate_bundler'
    remote:         from /tmp/build_ae8e646d/bin/bundle:88:in `load_bundler!'
    remote:         from /tmp/build_ae8e646d/bin/bundle:116:in `<main>'
    remote:        Bundler Output: /tmp/build_ae8e646d/bin/bundle:42:in `gemfile': undefined method `present?' for "/tmp/build_ae8e646d/Gemfile":String (NoMethodError)
    remote:        Did you mean?  prepend
    remote:         from /tmp/build_ae8e646d/bin/bundle:49:in `lockfile'
    remote:         from /tmp/build_ae8e646d/bin/bundle:57:in `lockfile_version'
    remote:         from /tmp/build_ae8e646d/bin/bundle:68:in `bundler_version'
    remote:         from /tmp/build_ae8e646d/bin/bundle:72:in `bundler_requirement'
    remote:         from /tmp/build_ae8e646d/bin/bundle:100:in `activate_bundler'
    remote:         from /tmp/build_ae8e646d/bin/bundle:88:in `load_bundler!'
    remote:         from /tmp/build_ae8e646d/bin/bundle:116:in `<main>'
    remote: 
    remote:  !
    remote:  !     Failed to install gems via Bundler.
    remote:  !
    remote:  !     Push rejected, failed to compile Ruby app.

之前,我已经将应用程序的脚手架部署到了Heroku,一切都很好。但是在工作了一些时间并推动了出现错误的变化。

已经尝试了再生Gemlock.file和Bundle更新,但没有运气。在本地,一切都很好。 Ruby和Bundler版本在本地和Heroku上是相同的。现在,没有任何线索,那可能是什么。有人遇到这样的错误吗?

ruby-on-rails heroku bundler
2个回答
18
投票
我只是将其恢复到最初的and and,一切都起作用。

,这将帮助某人。


根本原因是由Rubocop的Rails/Praver Cop制造的自动框。 您可以通过更改bin/bundle Line 42(ish)来解决此问题并防止它返回:

return gemfile if gemfile.present?

到:
return gemfile if gemfile && !gemfile.empty?

or

0
投票
在.rubocop.yml文件中删除文件:

return gemfile if gemfile && !gemfile.empty?

	
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.