ruby Heroku库问题

hgtggwj0  于 2023-08-04  发布在  Ruby
关注(0)|答案(1)|浏览(128)

我有一个Ruby on Rails项目落在我身上。我根本不认识露比但不需要更改代码。问题是图书馆。我得到了一个错误,Heroku帮助我指向Heroku Removing Gemfile.lock because it was generated on Windows。这没有我希望的那么有用。Gemfile不包含对答案中提到的库的任何引用。我开始试图找出可能与Windows有关的东西。但是,我没有向文件中添加任何内容,只是更新了版本号。我使用的Gemfile直接来自Heroku的项目。我看不出如何添加任何与Windows相关的内容。总之,我真的不知道我在找什么。以下是Heroku不喜欢的Gemfile:

ruby '3.2.2'
source 'https://rubygems.org'
gem 'bundler', '>= 2.4.10'
gem 'rails', '7.0.5'
gem 'coffee-rails', '~> 5.0.0'
group :production, :staging do
  gem 'rails_12factor'
end
gem 'skylight', '~> 5.3.4'
gem 'newrelic_rpm'
gem 'puma'
gem 'pg'
gem 'sass-rails', '~> 6.0.0'
gem 'font-awesome-rails'
gem 'bootstrap-sass'
gem 'bootstrap-datepicker-rails'
gem 'bootstrap-will_paginate'
gem 'twitter-bootstrap-rails-confirm', '~> 2.0.2'
gem 'chartjs-ror', '~> 3.7.0' # git: 'git://github.com/paulstefanort/chartjs-ror.git', ref: '3b6184ac39'
gem 'jquery-datatables-rails', '~> 3.4.0'
gem 'jquery-ui-rails'
gem 'local_time'
gem 'devise'
gem 'jwt'
gem 'paperclip'
gem 'aws-sdk', '< 2.0'
gem 'foreman'
gem 'uglifier', '>= 4.2.0'
gem 'jquery-rails'
gem 'jbuilder', '~> 2.11.5'
group :development, :test do
  gem 'byebug'
  gem 'web-console', '~> 4.2.0'
  gem 'spring'
end
gem 'spring-commands-rspec', group: [:development, :test]
gem 'rspec-rails', group: [:development, :test]
group :development do
  gem 'sexp_processor'
  gem 'flog'
  gem 'better_errors'
end
group :test do
  gem 'shoulda-matchers', require: false
  gem 'guard-rspec'
  gem 'simplecov', require: false
  gem 'factory_girl_rails'
  gem 'faker'
  gem 'capybara'
  gem 'capybara-webkit'
  gem 'rspec-sidekiq'
  gem 'database_cleaner'
end
gem 'dotenv-deployment', group: [:development, :test]
gem 'date_validator'
gem 'country_select'
gem 'active_model_serializers'
gem 'mail'
gem 'zbase32', github: 'paulstefanort/zbase32-ruby'
gem 'lol_dba', group: :development
gem 'chosen-rails'
#gem 'chosen-sass-bootstrap-rails', github: 'caarlos0-graveyard/chosen-sass-bootstrap-rails'
gem 'mandrill-rails'
gem 'griddler', '1.5.2'
gem 'griddler-sendgrid', '1.2.0'
gem 'gcm'
gem 'pusher'
gem 'twilio-ruby'
gem 'sidekiq'
gem 'sidekiq-limit_fetch'
gem 'rack-mini-profiler', require: false
gem 'sinatra', require: false
#gem 'quarry', github: 'paulstefanort/quarry'
gem 'keen'
gem 'react-rails', '~> 2.7.1', github: 'reactjs/react-rails'
gem 'airbrake'
#gem 'rbtrace'
gem 'countries'
#gem 'rmagick', '5.2.0'
source 'https://rails-assets.org' do
  gem 'rails-assets-react-bootstrap'
end

字符串
谁能告诉我我在寻找什么,我可能会改变什么?

xv8emn3q

xv8emn3q1#

当你在Heroku上收到这样的警告

Removing `Gemfile.lock` because it was generated on Windows.
Bundler will do a full resolve so native gems are handled properly.
This may result in unexpected gem versions being used in your app.

字符串
那么问题可能不是仅在Windows上可用而不可用于任何其他平台的gem。但是一个有多个平台特定版本的gem,只安装了Windows版本。
例如,有一个nokogiri gem,它是Ruby on Rails的actiontext库的传递依赖项。这个gem的每个版本都有针对特定平台的不同版本,如x86-mingw32x86-linuxjava等。
为了允许Bundler在不同的平台上加载正确的版本,你必须告诉Bundler你想在什么平台上使用你的应用,以及在生成Gemfile.lock时保持哪些gem版本可用。
您可以检查当前使用bundle platform配置的平台可能会返回如下内容:

PLATFORMS
  ruby
  x86-mingw32


这意味着Bundler将只安装gem的ruby版本(这基本上是大多数gem的默认版本)和x86-mingw32版本(当不同平台有多个版本可用时)。
但是Heroku在Linux上运行他们的平台。因此,您必须告诉Bundler也添加x86_64-linux平台支持。完成后,再次运行bundle install,提交更改并将这些更改推送到Heroku:

bundle lock --add-platform ruby    # only if `ruby` is not returned by `bundle platform`
bundle lock --add-platform x86_64-linux
bundle install

# git commit and push to Heroku


当您不再使用Windows进行应用程序的未来开发时,我建议使用

bundle lock --remove-platform x86-mingw32


您可能需要将x86-mingw32更改为bundle platform命令返回的任何Windows特定平台字符串。
当您在Apple Silicon上开发时,您可能希望添加arm64-darwin,对于具有Intel CPU x86_64-darwin的Mac也是如此。

相关问题