Почему Rails не нравится эта спецификация gem? - PullRequest
0 голосов
/ 13 октября 2010

Я скопировал свой сайт Rails 2 на свой рабочий сервер, и когда я запускаю скрипт / сервер на рабочем сервере, я получаю следующее:

-bash-3.2$ script/server
=> Booting Mongrel
=> Rails 2.3.8 application starting on http://0.0.0.0:3000
/home/nwa36a/vhosts/aromapersona.localhost/config/../vendor/rails/railties/lib/rails/vendor_gem_source_index.rb:50:in `refresh!': undefined method `full_name' for #<String:0x2aca6af0b4a0> (NoMethodError)
    from /home/nwa36a/vhosts/aromapersona.localhost/config/../vendor/rails/railties/lib/rails/vendor_gem_source_index.rb:45:in `each'
    from /home/nwa36a/vhosts/aromapersona.localhost/config/../vendor/rails/railties/lib/rails/vendor_gem_source_index.rb:45:in `refresh!'
    from /home/nwa36a/vhosts/aromapersona.localhost/config/../vendor/rails/railties/lib/rails/vendor_gem_source_index.rb:29:in `initialize'
    from /home/nwa36a/vhosts/aromapersona.localhost/config/../vendor/rails/railties/lib/rails/gem_dependency.rb:21:in `new'
    from /home/nwa36a/vhosts/aromapersona.localhost/config/../vendor/rails/railties/lib/rails/gem_dependency.rb:21:in `add_frozen_gem_path'
    from /home/nwa36a/vhosts/aromapersona.localhost/config/../vendor/rails/railties/lib/initializer.rb:298:in `add_gem_load_paths'
    from /home/nwa36a/vhosts/aromapersona.localhost/config/../vendor/rails/railties/lib/initializer.rb:132:in `process'
    from /home/nwa36a/vhosts/aromapersona.localhost/config/../vendor/rails/railties/lib/initializer.rb:113:in `send'
    from /home/nwa36a/vhosts/aromapersona.localhost/config/../vendor/rails/railties/lib/initializer.rb:113:in `run'
    from /home/nwa36a/vhosts/aromapersona.localhost/config/../vendor/spree/lib/spree/initializer.rb:90:in `run'
    from /home/nwa36a/vhosts/aromapersona.localhost/config/environment.rb:13
    from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
    from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
    from /home/nwa36a/vhosts/aromapersona.localhost/vendor/rails/activesupport/lib/active_support/dependencies.rb:156:in `require'
    from /home/nwa36a/vhosts/aromapersona.localhost/vendor/rails/activesupport/lib/active_support/dependencies.rb:521:in `new_constants_in'
    from /home/nwa36a/vhosts/aromapersona.localhost/vendor/rails/activesupport/lib/active_support/dependencies.rb:156:in `require'
    from /home/nwa36a/vhosts/aromapersona.localhost/vendor/rails/railties/lib/commands/server.rb:84
    from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
    from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
    from script/server:3

Я заморозил все свои драгоценные камни, включаязависимости, в мою базу кода.

Мне пришлось заморозить rack-1.0.1 в базу кода и изменить vendor / rails / actionpack / lib / action_controller.rb, как описано здесь .Когда я это сделал, я скопировал rack-1.0.1 / rack.gemspec в rack-1.0.1 / .specification.Я заметил, что этот файл спецификации имеет немного другой формат, чем другие .specification файлы для других драгоценных камней, которые я заморозил.Вот пример нормального:

--- !ruby/object:Gem::Specification
name: hoe
version: !ruby/object:Gem::Version
  prerelease: false
  segments:
  - 2
  - 6
  - 1
  version: 2.6.1
platform: ruby
authors:
- Ryan Davis
autorequire:
bindir: bin
cert_chain:

и один для rack-1.0.1:

# -*- encoding: utf-8 -*-

Gem::Specification.new do |s|
  s.name = %q{rack}
  s.version = "1.0.1"

  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
  s.authors = ["Christian Neukirchen"]
  s.date = %q{2009-10-18}
  s.default_executable = %q{rackup}
  s.description = %q{Rack provides minimal, modular and adaptable interface for developing web applications in Ruby.  By wrapping HTTP requests and responses in the simplest way $
  s.email = %q{chneukirchen@gmail.com}
  s.executables = ["rackup"]
  s.extra_rdoc_files = ["README", "SPEC", "RDOX", "KNOWN-ISSUES"]
  s.files = ["COPYING", "KNOWN-ISSUES", "README", "Rakefile", "bin/rackup", "contrib/rack_logo.svg", "example/lobster.ru", "example/protectedlobster.rb", "example/protectedlobste$
  s.has_rdoc = true
  s.homepage = %q{http://rack.rubyforge.org}
  s.require_paths = ["lib"]
  s.rubyforge_project = %q{rack}
  s.rubygems_version = %q{1.3.1}
  s.summary = %q{a modular Ruby webserver interface}
  s.test_files = ["test/spec_rack_auth_basic.rb", "test/spec_rack_auth_digest.rb", "test/spec_rack_auth_openid.rb", "test/spec_rack_builder.rb", "test/spec_rack_camping.rb", "tes$

  if s.respond_to? :specification_version then
    current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION

1 Ответ

1 голос
/ 14 октября 2010

Я нашел решение. Я не осознавал, что у меня есть root-доступ к машине, поэтому, войдя в систему как root, я обнаружил, что gem-1.0.1 установлен на машине. Я удалил это и установил 1.1.0, а затем сервер запустился просто отлично. Затем я удалил rack-1.0.1 из моего проекта.

Реальная проблема заключалась в том, что я получал

RubyGem version error: rack(1.0.0 not ~> 1.0.1) (RuntimeError)

и необходимая стойка-1.1.0. В моей ограниченной учетной записи был установлен 1.1.0, но по какой-то причине система пыталась использовать все, что было установлено глобально. Как раздражает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...