You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

执行bundle update时安装Gemfile未声明的date gem失败

问题描述

我在修复并构建一个Rails应用时,执行bundle update遇到以下错误:

$ bundle update
/usr/share/rvm/gems/ruby-2.1.5@global/gems/bundler-1.7.6/lib/bundler.rb:302: warning: Insecure world writable dir /usr/share/rvm in PATH, mode 042777
Updating https://github.com/Compass/compass-rails
Updating https://github.com/DavyJonesLocker/client_side_validations-simple_form
Updating https://github.com/DavyJonesLocker/client_side_validations
Updating https://github.com/seyhunak/twitter-bootstrap-rails.git
Fetching source index from https://rubygems.org/
Resolving dependencies........
Using rake 12.0.0
Using i18n 0.7.0
Using json 1.8.0
Using minitest 5.10.3
Using thread_safe 0.3.6
Using tzinfo 1.2.10 (was 1.2.3)
Using activesupport 4.2.5
Using builder 3.2.4 (was 3.2.3)
Using erubis 2.7.0
Using mini_portile2 2.1.0
Using nokogiri 1.6.8.1
Using rails-deprecated_sanitizer 1.0.4 (was 1.0.3)
Using rails-dom-testing 1.0.9 (was 1.0.8)
Using crass 1.0.6
Using loofah 2.19.1 (was 2.0.3)
Using rails-html-sanitizer 1.4.4 (was 1.0.3)
Using actionview 4.2.5
Using rack 1.6.13 (was 1.6.8)
Using rack-test 0.6.3
Using actionpack 4.2.5
Using globalid 0.4.2 (was 0.3.6)
Using activejob 4.2.5
Using mini_mime 1.1.2

Gem::InstallError: date requires Ruby version >= 2.6.0.
An error occurred while installing date (3.3.3), and Bundler cannot continue.
Make sure that `gem install date -v '3.3.3'` succeeds before bundling.

排查情况:

  • 遍历Gemfile中所有gem,未找到直接依赖date的项
  • 用gem dependency {gem}循环排查30次,仍无结果
  • 执行gem dependency date --reverse-dependencies,也未找到相关依赖

我的Gemfile内容如下:

source 'https://rubygems.org'

gem 'rails', '4.2.5'
gem 'concurrent-ruby', '1.0.0'
gem 'minitest', "5.10.3"
gem 'connection_pool', "2.2.0"

#gem for facebook bot
gem 'facebook-messenger' , "0.11.1"
# Bundle edge Rails instead:
# gem 'rails',     :git => 'git://github.com/rails/rails.git'
gem 'mysql2', '0.3.20' #, '~> 0.3.13'
gem 'rack-ssl', '1.3.4', :require => 'rack/ssl'
gem 'execjs', '2.6.0'
#gem 'therubyracer'
#gem 'rack' , '1.4.5'
gem 'json', '1.8.0'
gem 'protected_attributes', '1.1.3'
gem 'gdata_19', '1.1.5'
gem 'foreverb', '0.3.3'
gem 'paper_trail', '3.0.1'
gem 'rack-cors', '0.4.0'
#gem 'exception_notification'
gem 'social-share-button', '0.8.0'
# gem 'contacts', :git => 'git@github.com:eofferma/contacts.git'
# Deploy with Capistrano

gem 'puma', '3.4.0'
gem 'noty-rails', '2.3.8'
#gem 'rvm-capistrano'
gem 'active_model_serializers', '0.9.3'
gem "font-awesome-rails", '4.6.3.0'
gem 'therubyracer', '0.12.2', platforms: :ruby
gem 'sunspot_rails','2.2.0'
gem 'sunspot_solr', '2.2.2'
gem 'capybara', '2.7.1'
gem 'poltergeist', '1.8.1'
gem 'simplecov', '0.8.2', :require => false, :group => :test

gem 'sidekiq', '4.1.1'

group :development do
  gem "better_errors", "2.1.1"
  gem "binding_of_caller", "0.7.2"
  gem 'quiet_assets', '1.1.0'
end

gem 'nokogiri', "1.6.8.1"
gem 'sprockets', "3.5.2"

gem 'sass-rails',"5.0.4"
gem 'compass-rails', git: "https://github.com/Compass/compass-rails", branch: "master"
#gem 'compass-rails', github: "Compass/compass-rails", branch: "master"
gem 'uglifier', "2.7.2"
gem 'compass', "1.0.3"
gem 'compass-h5bp', '0.1.1'

gem 'haml-rails', "0.9.0"  # Optional - to generate haml

gem 'jquery-rails' , "4.1.0" #must be fixed because current version of multiselect widget doesn't work with jquery version >= 1.8.0
gem 'fancybox-rails', "0.3.1"
gem 'jquery-ui-rails', "5.0.5"
gem 'html5-rails', '0.1.0'

# To use ActiveModel has_secure_password
# gem 'bcrypt-ruby', '~> 3.0.0'

# Use unicorn as the web server
# gem 'unicorn'

# Deploy with Capistrano
# gem 'capistrano'

# To use debugger
# gem 'ruby-debug'
gem 'slim-rails', "3.0.1"
gem 'devise', "4.3.0"
gem 'devise-encryptable', "0.1.2"
#gem 'devise-token_authenticatable'
gem 'coffee-rails', "4.1.0"

gem "omniauth-facebook", "4.0.0"
gem "omniauth-twitter", "1.4.0"
gem "omniauth-google-oauth2", "0.5.2"

gem "koala", "2.2.0"
gem "fb_graph", "2.7.17"
gem 'twitter', "5.15.0"


gem "ancestry", "2.1.0"
gem 'simple_form', "3.2.0"
gem 'client_side_validations-simple_form', git: 'https://github.com/DavyJonesLocker/client_side_validations-simple_form', :ref => 'e6b61d5a82537a4d1d6d5259b8fd07f865ef89c9'
#gem 'client_side_validations-simple_form', github: 'DavyJonesLocker/client_side_validations-simple_form'
gem 'paperclip', '4.2.0'
gem 'aws-sdk', '< 2.0'
#gem 'client_side_validations'
gem 'client_side_validations', git: 'https://github.com/DavyJonesLocker/client_side_validations', :ref => '4f000000a858a46d830a4b2aec1e8d6f41f58685'
#gem 'client_side_validations', github: 'DavyJonesLocker/client_side_validations'

gem 'will_paginate', "3.0.7"
gem 'browser', "1.0.1"
#gem 'twitter-bootstrap-rails', :git => 'git@github.com:seyhunak/twitter-bootstrap-rails.git', :branch => 'bootstrap3'
gem 'twitter-bootstrap-rails', :git => 'https://github.com/seyhunak/twitter-bootstrap-rails.git', :branch => 'bootstrap3'

# gem 'geokit-rails'

gem "recaptcha", '0.5.0', :require => "recaptcha/rails"

gem 'whenever', "0.9.4", :require => false
gem "activemerchant", "1.43.3"
gem "hpricot", "0.8.6"
gem 'money', "6.6.1"
gem 'contacts', "1.2.4"

gem "paypal-sdk-merchant", "1.116.0"
gem 'paypal-sdk-adaptivepayments', "1.117.0"


gem 'fastercsv', "1.5.5"

gem 'cmess', "0.5.0"

gem "grape", "0.13.0"
gem 'wine_bouncer', '0.5.0'

gem 'httparty', "0.13.7"
gem 'delayed_job_active_record', "4.1.0"
gem "daemons", "1.2.3"
gem "rake", "12.0.0"
gem "rake-progressbar", "0.0.5"
gem "httpclient", "2.7.0.1"

gem 'typhoeus', "0.8.0"
gem 'tire', "0.6.2"
gem 'roo', '1.10.3'
# gem 'rubyzip', '< 1.0.0', :require => false
gem 'google_places', "0.32.0"
gem 'foursquare2', "2.0.2"
gem 'twilio-ruby', "4.8.0"
gem 'mechanize', "2.7.3"
gem 'orm_adapter', "0.5.0"

# gem 'capybara'

# gem 'wombat'
# gem 'capybara-webkit'
#gem 'elasticsearch'
gem 'rails3-jquery-autocomplete', "1.0.15"
gem 'selenium-webdriver', '2.53.4'
# gem 'selenium-webdriver'
# gem 'poltergeist'

group :test do
        # gem 'phantomjs', :require => 'phantomjs/poltergeist'
        gem 'database_cleaner', "1.5.1"
        gem 'rspec-rails', "3.4.0"
        # gem 'selenium-webdriver'
        # gem 'poltergeist'
end

group :development, :test do
  gem 'thin', "1.7.0"
  #gem 'machinist'
  gem 'faker', "1.5.0"
  gem 'rails-dev-tweaks', "1.2.0"
  
  gem 'byebug', "8.2.1"
end

gem "paranoia", "2.1.4"

gem 'rails-observers', "0.1.2"
gem 'activerecord-session_store', "0.1.2"

gem 'useragent', "0.10.0"

gem 'acts_as_commentable', "4.0.2"
gem "iconv", "1.0.4"
gem "rails-erd", "1.4.1"
gem 'zeroclipboard-rails', "0.1.1"

#source 'https://rails-assets.org' do
  #gem 'rails-assets-reveal'
#end
解决方案

1. 锁定date gem兼容版本

date gem从3.x版本开始要求Ruby >=2.6.0,而你的Ruby版本是2.1.5,直接在Gemfile中添加版本限制:

gem 'date', '< 3.0'

添加后执行bundle install,Bundler会自动选择适配Ruby 2.1.5的date版本。

2. 升级Bundler版本

你当前使用的Bundler 1.7.6版本过旧,可能存在依赖解析逻辑缺陷。升级到支持Ruby 2.1的最新Bundler版本(如1.17.3):

gem install bundler -v 1.17.3

之后重新执行bundle update。

3. 清理Bundler缓存

缓存可能导致依赖解析异常,清理后重新安装:

bundle clean --force
bundle install

4. 排查间接依赖

部分gem更新后可能间接引入date 3.x,用以下命令查看完整依赖树,找到关联的gem并锁定其版本:

bundle show --tree

搜索输出中的date,定位到依赖它的上游gem,在Gemfile中限制该gem的版本范围,避免拉取依赖高版本date的版本。

内容的提问来源于stack exchange,提问作者Greg Borbonus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 16:05:25