【发布时间】:2013-01-15 20:08:52
【问题描述】:
我正在努力将在 Ubuntu 上运行 Rails 2.3.2 的旧 Rails 应用程序升级到最新的 Rails 2.3.15。该应用程序最初在vendor/rails 中有一个供应商版本的rails,但我已经删除了它,安装了rails 2.3.15 gem,并将config/environment.rb 中的版本号更改为:
RAILS_GEM_VERSION = '2.3.15' unless defined? RAILS_GEM_VERSION
重新启动应用程序后,我在 mongrel 日志中收到此错误消息(这会阻止应用程序启动):
/usr/local/lib/site_ruby/1.8/rubygems/version.rb:53:in `initialize': Malformed version number string (ArgumentError)
from /usr/lib/ruby/gems/1.8/gems/rails-2.3.15/lib/rails/vendor_gem_source_index.rb:105:in `new'
from /usr/lib/ruby/gems/1.8/gems/rails-2.3.15/lib/rails/vendor_gem_source_index.rb:105:in `version_for_dir'
from /usr/lib/ruby/gems/1.8/gems/rails-2.3.15/lib/rails/vendor_gem_source_index.rb:47:in `refresh!'
from /usr/lib/ruby/gems/1.8/gems/rails-2.3.15/lib/rails/vendor_gem_source_index.rb:45:in `each'
from /usr/lib/ruby/gems/1.8/gems/rails-2.3.15/lib/rails/vendor_gem_source_index.rb:45:in `refresh!'
from /usr/lib/ruby/gems/1.8/gems/rails-2.3.15/lib/rails/vendor_gem_source_index.rb:29:in `initialize'
from /usr/lib/ruby/gems/1.8/gems/rails-2.3.15/lib/rails/gem_dependency.rb:21:in `new'
from /usr/lib/ruby/gems/1.8/gems/rails-2.3.15/lib/rails/gem_dependency.rb:21:in `add_frozen_gem_path'
... 17 levels...
from /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel/command.rb:212:in `run'
from /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/mongrel_rails:281
from /usr/bin/mongrel_rails:19:in `load'
from /usr/bin/mongrel_rails:19
我需要做什么才能克服这个错误?
【问题讨论】:
-
能否打印一下
RAILS_GEM_VERSION,以便我们查看正在使用的版本号? -
您希望我何时/何地这样做?
-
由于错误的来源(
rubygems/version.rb- 即rubygems的version模块),我猜rubygems是说它自己的版本号是格式错误,或者它尝试加载的 gem 具有格式错误的版本号。嗯。 -
还要注意错误信息末尾的两个空格。 Google 上此错误的大多数版本似乎都是
Malformed version number string SOMETHING的形式。听起来它试图报告它看到一个空白的版本号字符串,它期望它是非空白的。 -
可能是因为您已经删除了 Rails 的销售副本,它仍在尝试读取销售副本但没有找到它?因此报告一个空白版本号?只是猜测:/
标签: ruby ruby-on-rails-2