【问题标题】:Failed to install gems via Bundler in heroku with -gemfile.lock from windows无法通过来自 Windows 的 -gemfile.lock 在 heroku 中通过 Bundler 安装 gem
【发布时间】:2022-01-20 05:45:49
【问题描述】:

我的项目 ruby​​ 在 windows 的 rails 上。

source 'http://rubygems.org'
ruby '2.5.7'
gem 'rails', '~> 5.0.0'

当我执行 git push heroku master 时,heroku 会抛出以下错误

Compressing objects: 100% (140/140), done.
Writing objects: 100% (145/145), 843.56 KiB | 5.27 MiB/s, done.
Total 145 (delta 88), reused 0 (delta 0)
remote: Compressing source files... done.
remote: Building source:
remote:
remote: -----> Building on the Heroku-18 stack
remote: -----> Determining which buildpack to use for this app
remote: -----> Ruby app detected
remote: -----> Installing bundler 2.2.33
remote: -----> Removing BUNDLED WITH version in the Gemfile.lock
remote: -----> Compiling Ruby/Rails
remote:
remote: ###### WARNING:
remote:
remote:        Your app was upgraded to bundler 2.2.33.
remote:        Previously you had a successful deploy with bundler 2.2.21.
remote:
remote:        If you see problems related to the bundler version please refer to:
remote:        https://devcenter.heroku.com/articles/bundler-version#known-upgrade-issues
remote:
remote:
remote: -----> Using Ruby version: ruby-2.5.7
remote:
remote: ###### WARNING:
remote:
remote:        Removing `Gemfile.lock` because it was generated on Windows.
remote:        Bundler will do a full resolve so native gems are handled properly.
remote:        This may result in unexpected gem versions being used in your app.
remote:        In rare occasions Bundler may not be able to resolve your dependencies at all.

.....

remote:        Using uglifier 4.2.0
remote:        Using aws-sigv4 1.4.0
remote:        Using daru 0.1.6
remote:        Fetching bootsnap 1.10.1
remote:        --- ERROR REPORT TEMPLATE -------------------------------------------------------
remote:
remote:        ```
remote:        ArgumentError: wrong number of arguments (given 4, expected 1)
remote:          /tmp/build_e0d3fad0/vendor/bundle/ruby/2.5.0/gems/psych-4.0.3/lib/psych.rb:323:in `safe_load'
remote:          /tmp/build_e0d3fad0/vendor/ruby-2.5.7/lib/ruby/2.5.0/rubygems/safe_yaml.rb:31:in `safe_load'
remote:          /tmp/build_e0d3fad0/vendor/ruby-2.5.7/lib/ruby/2.5.0/rubygems/package.rb:496:in `block (2 levels) in read_checksums'
remote:          /tmp/build_e0d3fad0/vendor/ruby-2.5.7/lib/ruby/2.5.0/rubygems/package.rb:495:in `wrap'
remote:          /tmp/build_e0d3fad0/vendor/ruby-2.5.7/lib/ruby/2.5.0/rubygems/package.rb:495:in `block in read_checksums'
remote:          /tmp/build_e0d3fad0/vendor/ruby-2.5.7/lib/ruby/2.5.0/rubygems/package/tar_reader.rb:116:in `seek'
remote:          /tmp/build_e0d3fad0/vendor/ruby-2.5.7/lib/ruby/2.5.0/rubygems/package.rb:494:in `read_checksums'
remote:          /tmp/build_e0d3fad0/vendor/ruby-2.5.7/lib/ruby/2.5.0/rubygems/package.rb:547:in `block (2 levels) in verify'
remote:          /tmp/build_e0d3fad0/vendor/ruby-2.5.7/lib/ruby/2.5.0/rubygems/package/tar_reader.rb:29:in `new'
remote:          /tmp/build_e0d3fad0/vendor/ruby-2.5.7/lib/ruby/2.5.0/rubygems/package.rb:546:in `block in verify'
remote:          /tmp/build_e0d3fad0/vendor/ruby-2.5.7/lib/ruby/2.5.0/rubygems/package/file_source.rb:30:in `open'
remote:          /tmp/build_e0d3fad0/vendor/ruby-2.5.7/lib/ruby/2.5.0/rubygems/package/file_source.rb:30:in `with_read_io'
remote:          /tmp/build_e0d3fad0/vendor/ruby-2.5.7/lib/ruby/2.5.0/rubygems/package.rb:545:in `verify'
remote:          /tmp/build_e0d3fad0/vendor/ruby-2.5.7/lib/ruby/2.5.0/rubygems/package.rb:526:in `spec'
remote:          /tmp/build_e0d3fad0/vendor/bundle/ruby/2.5.0/gems/bundler-2.2.33/lib/bundler/rubygems_integration.rb:250:in `spec_from_gem'

...

remote:        <No /tmp/build_e0d3fad0/Gemfile.lock found>
remote:        ```
remote:
remote:        --- TEMPLATE END ----------------------------------------------------------------
remote:
remote:        Unfortunately, an unexpected error occurred, and Bundler cannot continue.
remote:
remote:        First, try this link to see if there are any existing issue reports for this error:
remote:        https://github.com/rubygems/rubygems/search?q=wrong+number+of+arguments+%28given+4%2C+expected+1%29&type=Issues
remote:
remote:        If there aren't any reports for this error yet, please fill in the new issue form located at https://github.com/rubygems/rubygems/issues/new?labels=Bundler&template=bundler-related-issue.md, and copy and paste the report template above in there.
remote:
remote:  !
remote:  !     Failed to install gems via Bundler.
remote:  !
remote:  !     Push rejected, failed to compile Ruby app.
remote:
remote:  !     Push failed
remote: Verifying deploy...
remote:
remote: !       Push rejected to tksoft.
remote:
To https://git.heroku.com/tksoft.git
 ! [remote rejected] fran -> master (pre-receive hook declined)
error: failed to push some refs to 'https://git.heroku.com/tksoft.git'

我已经做了很多事情,但是一切都没有用,例如:

  1. 创建了一个新分支并从这里推送
  2. 修改 Gemfile 以将相同版本的捆绑器放入 heroku 和 PLATFORMS 红宝石 x64-mingw32 x86_64-linux
  3. 将 heroku 中的 buildpacks 设置为 deploy 的最新版本

感谢您的帮助

【问题讨论】:

    标签: ruby-on-rails ruby heroku deployment bundler


    【解决方案1】:

    看起来psych gem 中存在问题,特别是在safe_load 方法中发生了一些重大更改。 Windows 不是这里的问题。

    在以下问题中进行了讨论:herethere 以及 issue

    在问题未解决之前,我建议在 Gemfile 中手动将 psych 的版本设置为较旧的 3.3.2

    【讨论】:

      猜你喜欢
      • 2015-09-23
      • 2019-01-07
      • 2021-08-27
      • 1970-01-01
      • 1970-01-01
      • 2021-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多