2010-10-13 5 views
0

J'ai copié mes Rails 2 sites à mon serveur de production, et quand je script/serveur exécuté sur le serveur de production, je reçois les éléments suivants:Pourquoi Rails n'aime pas cette spécification de gemme?

-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 

Je gelait tous mes bijoux, y compris les dépendances, en ma base de code.

J'ai dû geler rack-1.0.1 dans la base de code et modifier fournisseur/rails/actionpack/lib/action_controller.rb comme décrit here. Quand je l'ai fait, j'ai copié rack-1.0.1/rack.gemspec sur rack-1.0.1/.specification. J'ai remarqué que ce fichier de spécifications est dans un format légèrement différent que les autres fichiers .specification pour les autres gems que j'ai gelé. Voici un exemple d'une normale:

--- !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: 

et celui pour 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{[email protected]} 
    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 

Répondre

1

je trouve une solution. Je n'avais pas réalisé que j'avais un accès root à la machine, donc, après m'être connecté en tant que root, j'ai trouvé que gem-1.0.1 était installé sur la machine. J'ai enlevé cela et installé 1.1.0, puis le serveur a très bien démarré. J'ai ensuite retiré rack-1.0.1 de mon projet.

Le vrai problème est que je recevais

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

et porte-1.1.0 besoin. Mon compte d'utilisateur limité avait 1.1.0 installé, mais pour une raison quelconque, le système essayait d'utiliser tout ce qui était installé globalement. Comme c'est ennuyeux.

Questions connexes