解析 `Gemfile` 时出错:`windows` 不是有效平台

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

将 Ruby 3.2.2、Rails 7.1.3 应用程序部署到 dokku 时,我在构建过程的早期就收到此错误:

   !
   !     [!] There was an error parsing `Gemfile`: `windows` is not a valid platform. The available options are: [:ruby, :ruby_18, :ruby_19, :ruby_20, :ruby_21, :ruby_22, :ruby_23, :ruby_24, :ruby_25, :ruby_26, :mri, :mri_18, :mri_19, :mri_20, :mri_21, :mri_22, :mri_23, :mri_24, :mri_25, :mri_26, :rbx, :truffleruby, :jruby, :jruby_18, :jruby_19, :mswin, :mswin_18, :mswin_19, :mswin_20, :mswin_21, :mswin_22, :mswin_23, :mswin_24, :mswin_25, :mswin_26, :mswin64, :mswin64_19, :mswin64_20, :mswin64_21, :mswin64_22, :mswin64_23, :mswin64_24, :mswin64_25, :mswin64_26, :mingw, :mingw_18, :mingw_19, :mingw_20, :mingw_21, :mingw_22, :mingw_23, :mingw_24, :mingw_25, :mingw_26, :x64_mingw, :x64_mingw_20, :x64_mingw_21, :x64_mingw_22, :x64_mingw_23, :x64_mingw_24, :x64_mingw_25, :x64_mingw_26]. Bundler cannot continue.
   !
   !     #  from /tmp/build/Gemfile:39
   !     #  -------------------------------------------
   !     #  # Windows does not include zoneinfo files, so bundle the tzinfo-data gem
   !     >  gem "tzinfo-data", platforms: %i[ windows jruby ]
   !     #
   !     #  -------------------------------------------
ruby-on-rails rubygems bundler dokku
1个回答
0
投票

在 dokku 上检查您的 rubygems 版本。

Gemfile 是从Template 创建的,该模板包含这一行

gem "tzinfo-data", platforms: %i[ <%= bundler_windows_platforms %> jruby ]

您的问题是这里

def bundler_windows_platforms
  Gem.rubygems_version >= Gem::Version.new("3.3.22") ? "windows" : "mswin mswin64 mingw x64_mingw"
end

该错误似乎表明您本地的 rubygems 版本 >= 3.3.22,但 dokku 中的 rubygems 版本不是。

要解决此问题:

  • 更新 dokku 中的 rubygems 版本
    gem update --system
    (如果可能的话);或
  • 将 Gemfile 中的该行切换为:
    gem "tzinfo-data", platforms: %i[mswin mswin64 mingw x64_mingw jruby ]
© www.soinside.com 2019 - 2024. All rights reserved.