首页 > 解决方案 > gawd awesomel rails 3.0.0 bundler 无法加载此类文件 ruby​​gems install insanity

问题描述

我有一个(脏兮兮的)旧 Rails 应用程序(版本 3.0.0)我正在尝试加载。我已经安装了 rbenv。

我不知所措

fonso@mybox:~/my-dev$ rails -v
Rails 3.0.0
fonso@mybox:~/my-dev$ bundler --version
Bundler version 2.2.7
fonso@mybox:~/my-dev$ gem list

*** LOCAL GEMS ***

abstract (1.0.0)
actioncable (6.1.3.1, 5.0.7.2)
actionmailbox (6.1.3.1)
actionmailer (6.1.3.1, 5.0.7.2, 3.0.0)
actionpack (6.1.3.1, 5.0.7.2, 3.0.0)
actiontext (6.1.3.1)
actionview (6.1.3.1, 5.0.7.2)
activejob (6.1.3.1, 5.0.7.2)
activemodel (6.1.3.1, 5.0.7.2, 3.0.0)
activerecord (6.1.3.1, 5.0.7.2, 3.0.0)
activeresource (3.0.0)
activestorage (6.1.3.1)
activesupport (6.1.3.1, 5.0.7.2, 3.0.0)
arel (7.1.4, 1.0.1)
bigdecimal (default: 1.3.4)
bindex (0.8.1)
builder (3.2.4, 2.1.2)
bundler (2.2.7, 1.0.22)     <----- Note: the two versions
byebug (11.1.1)
cmath (default: 1.0.0)
concurrent-ruby (1.1.8, 1.1.6)
crass (1.0.6)
csv (default: 1.0.0)
date (default: 1.0.0)
dbm (default: 1.0.0)
did_you_mean (1.2.0)
erubi (1.10.0)
erubis (2.7.0, 2.6.6)
etc (default: 1.0.0)
execjs (2.7.0)
fcntl (default: 1.0.0)
ffi (1.12.2)
fiddle (default: 1.0.0)
fileutils (default: 1.0.2)
gdbm (default: 2.0.0)
globalid (0.4.2)
i18n (1.8.7, 1.8.2, 0.4.2)
io-console (default: 0.4.6)
ipaddr (default: 1.2.0)
jbuilder (2.10.0)
jquery-rails (4.3.5)
json (default: 2.1.0)
libv8 (3.16.14.19 x86_64-linux)
listen (3.0.8)
loofah (2.9.0, 2.4.0)
mail (2.7.1, 2.2.20)
marcel (1.0.1)
method_source (1.0.0, 0.9.2)
mime-types (1.25.1)
mini_mime (1.0.2)
mini_portile2 (2.4.0)
minitest (5.14.0, 5.10.3)
net-telnet (0.1.1)
nio4r (2.5.4, 2.5.2)
nokogiri (1.11.1 x86_64-linux, 1.10.9)
openssl (default: 2.1.2)
pg (0.21.0)
polyglot (0.3.5)
power_assert (1.1.1)
psych (default: 3.0.2)
puma (3.12.4)
racc (1.5.2)
rack (2.2.3, 2.2.2, 1.2.8)
rack-mount (0.6.14)
rack-test (0.6.3, 0.5.7)
rails (3.0.0)
rails-dom-testing (2.0.3)
rails-html-sanitizer (1.3.0)
railties (3.0.0)
rake (13.0.1, 12.3.3)
rb-fsevent (0.10.3)
rb-inotify (0.10.1)
rdoc (default: 6.0.1.1)
ref (2.0.0)
sass (3.7.4)
sass-listen (4.0.0)
sass-rails (5.0.7)
scanf (default: 1.0.0)
sdbm (default: 1.0.0)
spring (2.1.0)
spring-watcher-listen (2.0.1)
sprockets (4.0.2, 3.7.2)
sprockets-rails (3.2.2, 3.2.1)
stringio (default: 0.0.1)
strscan (default: 1.0.0)
test-unit (3.2.7)
therubyracer (0.12.3)
thor (1.1.0, 1.0.1, 0.14.6)
thread_safe (0.3.6)
tilt (2.0.10)
treetop (1.4.15)
turbolinks (5.2.1)
turbolinks-source (5.2.0)
tzinfo (2.0.4, 1.2.9, 1.2.6, 0.3.60)
uglifier (4.2.0)
web-console (3.7.0)
webrick (default: 1.4.2)
websocket-driver (0.6.5)
websocket-extensions (0.1.5, 0.1.4)
xmlrpc (0.3.0)
zeitwerk (2.4.2)
zlib (default: 1.0.0)
fonso@mybox:~/my-dev$ bundle _1.0.22_ install

当我捆绑...并且我必须使用捆绑 1 或者它对我尖叫...当我捆绑时出现此错误

fonso@mybox:~/my-dev$ bundle _1.0.22_ install
Traceback (most recent call last):
    17: from /home/fonso/.rbenv/versions/2.5.8/bin/bundle:23:in `<main>'
    16: from /home/fonso/.rbenv/versions/2.5.8/bin/bundle:23:in `load'
    15: from /home/fonso/.rbenv/versions/2.5.8/lib/ruby/gems/2.5.0/gems/bundler-1.0.22/bin/bundle:13:in `<top (required)>'
    14: from /home/fonso/.rbenv/versions/2.5.8/lib/ruby/gems/2.5.0/gems/bundler-1.0.22/lib/bundler/vendor/thor/base.rb:386:in `start'
    13: from /home/fonso/.rbenv/versions/2.5.8/lib/ruby/gems/2.5.0/gems/bundler-1.0.22/lib/bundler/vendor/thor.rb:263:in `dispatch'
    12: from /home/fonso/.rbenv/versions/2.5.8/lib/ruby/gems/2.5.0/gems/bundler-1.0.22/lib/bundler/vendor/thor/invocation.rb:118:in `invoke_task'
    11: from /home/fonso/.rbenv/versions/2.5.8/lib/ruby/gems/2.5.0/gems/bundler-1.0.22/lib/bundler/vendor/thor/task.rb:22:in `run'
    10: from /home/fonso/.rbenv/versions/2.5.8/lib/ruby/gems/2.5.0/gems/bundler-1.0.22/lib/bundler/cli.rb:219:in `install'
     9: from /home/fonso/.rbenv/versions/2.5.8/lib/ruby/gems/2.5.0/gems/bundler-1.0.22/lib/bundler.rb:138:in `definition'
     8: from /home/fonso/.rbenv/versions/2.5.8/lib/ruby/gems/2.5.0/gems/bundler-1.0.22/lib/bundler/definition.rb:17:in `build'
     7: from /home/fonso/.rbenv/versions/2.5.8/lib/ruby/gems/2.5.0/gems/bundler-1.0.22/lib/bundler/dsl.rb:6:in `evaluate'
     6: from /home/fonso/.rbenv/versions/2.5.8/lib/ruby/gems/2.5.0/gems/bundler-1.0.22/lib/bundler/dsl.rb:6:in `new'
     5: from /home/fonso/.rbenv/versions/2.5.8/lib/ruby/gems/2.5.0/gems/bundler-1.0.22/lib/bundler/dsl.rb:14:in `initialize'
     4: from /home/fonso/.rbenv/versions/2.5.8/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'
     3: from /home/fonso/.rbenv/versions/2.5.8/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'
     2: from /home/fonso/.rbenv/versions/2.5.8/lib/ruby/gems/2.5.0/gems/bundler-1.0.22/lib/bundler/source.rb:5:in `<top (required)>'
     1: from /home/fonso/.rbenv/versions/2.5.8/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'
/home/fonso/.rbenv/versions/2.5.8/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require': cannot load such file -- rubygems/format (LoadError)

还有我的 Gemfile..

source 'http://rubygems.org'

gem 'rails', '3.0.0'

# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'

gem 'pg'


gem 'will_paginate', '~> 2.3.17'
gem 'soap4r-middleware', '~> 0.8.6'
gem 'soap4r',  '~> 1.5.6'
gem 'prawn-labels', '~> 0.11.3.0'
gem 'nokogiri-plist', '~> 0.3.0'
gem 'rails_sql_views', '~> 0.8.0'
gem 'prototype_legacy_helper', '0.0.0', :git => 'https://github.com/rails/prototype_legacy_helper.git'

所以我需要 Rails 3.0 和 bundle 1.0.22,因为当我只使用 bundle install 时,我得到了这个混乱......

fonso@mybox:~/my-dev$ bundle
Fetching gem metadata from http://rubygems.org/.............
Resolving dependencies...
Bundler could not find compatible versions for gem "bundler":
  In Gemfile:
    rails (= 3.0.0) was resolved to 3.0.0, which depends on
      bundler (~> 1.0.0)

  Current Bundler version:
    bundler (2.2.7)

Your bundle requires a different version of Bundler than the one you're running.
Install the necessary version with `gem install bundler:1.0.22` and rerun bundler using `bundle _1.0.22_`

我该如何解决这个问题。我要疯了,失眠了,所以感谢您的帮助。

更新:

我用 1.9.3-p484 ruby​​ 尝试了这个并得到了这个错误......


fonso@mybox:~/my-dev$ bundle install Fetching source index for
 rubygems.org Installing rake (13.0.3) Gem::InstallError: rake requires Ruby version >= 2.2. An error occured while installing rake (13.0.3), 
and Bundler cannot continue. Make sure that gem install rake -v '13.0.3' 
succeeds before bundling. 

这没有任何意义... bundler 1.0.22 和 rake 0.9.2.2 已安装

fonso@mybox:~/my-dev$ gem list

*** LOCAL GEMS ***

abstract (1.0.0)
actionmailer (3.0.0)
actionpack (3.0.0)
activemodel (3.0.0)
activerecord (3.0.0)
activeresource (3.0.0)
activesupport (3.0.0)
arel (1.0.1)
bigdecimal (1.1.0)
builder (2.1.2)
bundler (1.0.22)
erubis (2.6.6)
i18n (0.4.2)
io-console (0.3)
json (1.5.5)
mail (2.2.20)
mime-types (1.25.1)
minitest (2.5.1)
polyglot (0.3.5)
rack (1.2.8)
rack-mount (0.6.14)
rack-test (0.5.7)
rails (3.0.0)
railties (3.0.0)
rake (0.9.2.2)
rdoc (3.9.5)
thor (0.14.6)
treetop (1.4.15)
tzinfo (0.3.60)

标签: ruby-on-rails

解决方案


尝试为该版本的 rails 推荐的 ruby​​ 版本。Ruby 2.5.8 远远超过了 rails 3.0 中使用的。

Ruby 1.9.3 或 2.0 是 Rails 3 的最佳选择。

兼容性表

其中之一

rbenv install 1.9.3-p484
rbenv install 2.0.0-p648

rbenv 中有很多 1.9.3 和 2.0.0 版本,我建议这里列出的版本


推荐阅读