2010-10-23 9 views
5

Empecé a usar bundler y tengo algunos problemas para hacerlo funcionar. Tengo el siguiente Gemfile:Rieles: error del paquete al utilizar thin

source "http://rubygems.org" 
gem "rack", "~>1.1" 
gem 'pg','>= 0.8.0' 
gem 'rails','2.3.8' 
gem 'authlogic','2.1.3' 
gem 'ajaxful_rating','2.2.3' 
gem 'will_paginate','2.3.12' 
gem 'right_aws','1.10.0' 
gem 'aws-s3','0.6.2' 
gem 'declarative_authorization','0.4.1' 
gem 'timeline_fu','0.3.0' 
gem 'friendly_id','>= 3.1' 

Aviso que definir en los que yo quiero usar acumular 1.1 (1.1.0).

me sale el siguiente error cuando corro con finas (WEBrick funciona bien):

thin start 
>> Using rails adapter 
/usr/lib/ruby/gems/1.8/gems/bundler-1.0.3/lib/bundler/runtime.rb:27:in `setup': You have already activated rack 1.2.1, but your Gemfile requires rack 1.1.0. Consider using bundle exec. (Gem::LoadError) 
from /usr/lib/ruby/gems/1.8/gems/bundler-1.0.3/lib/bundler/spec_set.rb:12:in `each' 
from /usr/lib/ruby/gems/1.8/gems/bundler-1.0.3/lib/bundler/spec_set.rb:12:in `each' 
from /usr/lib/ruby/gems/1.8/gems/bundler-1.0.3/lib/bundler/runtime.rb:17:in `setup' 
from /usr/lib/ruby/gems/1.8/gems/bundler-1.0.3/lib/bundler.rb:100:in `setup' 
from /home/vmplanet/Documents/maga/config/../config/preinitializer.rb:16 
from /home/vmplanet/Documents/maga/config/boot.rb:28:in `load' 
from /home/vmplanet/Documents/maga/config/boot.rb:28:in `preinitialize' 
from /home/vmplanet/Documents/maga/config/boot.rb:10:in `boot!' 
from /home/vmplanet/Documents/maga/config/boot.rb:126 
from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require' 
from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `require' 
from /home/vmplanet/Documents/maga/config/environment.rb:7 
from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require' 
from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:31:in `require' 
from /home/vmplanet/.gem/ruby/1.8/gems/thin-1.2.7/lib/rack/adapter/rails.rb:42:in `load_application' 
from /home/vmplanet/.gem/ruby/1.8/gems/thin-1.2.7/lib/rack/adapter/rails.rb:23:in `initialize' 
from /home/vmplanet/.gem/ruby/1.8/gems/thin-1.2.7/lib/rack/adapter/loader.rb:48:in `new' 
from /home/vmplanet/.gem/ruby/1.8/gems/thin-1.2.7/lib/rack/adapter/loader.rb:48:in `for' 
from /home/vmplanet/.gem/ruby/1.8/gems/thin-1.2.7/lib/thin/controllers/controller.rb:163:in `load_adapter' 
from /home/vmplanet/.gem/ruby/1.8/gems/thin-1.2.7/lib/thin/controllers/controller.rb:67:in `start' 
from /home/vmplanet/.gem/ruby/1.8/gems/thin-1.2.7/lib/thin/runner.rb:177:in `send' 
from /home/vmplanet/.gem/ruby/1.8/gems/thin-1.2.7/lib/thin/runner.rb:177:in `run_command' 
from /home/vmplanet/.gem/ruby/1.8/gems/thin-1.2.7/lib/thin/runner.rb:143:in `run!' 

Así que básicamente se queja de que estoy usando estante 1.2.1 (que no es el caso, no puedo Pienso en cualquier cosa que lo use).

¿Alguna idea?

Respuesta

6

Thin itself depends on Rack. Y debido a que Thin se cargará antes de que cargue su aplicación, la versión más reciente de Rack ya estará cargada cuando el paquete entre por primera vez en la imagen.

Debe forzar la versión correcta de Rack a Thin. En teoría, solo puedes tener Rack 1.1.0 en las gemas de tu sistema, pero eso es difícil de mantener o portátil. El mensaje de error ya contiene la respuesta; use bundle exec.

bundle exec thin start 
+0

Hola, gracias esto funciona, por cierto: bundle exec thin start. – user296489

+0

Entonces, ¿cómo puedo hacer que funcione en Heroku? – user296489

+0

No puedo ayudarte con Heroku, quizás la documentación de su paquete ayude: http://docs.heroku.com/bundler – molf

2

Así que básicamente se queja de que estoy usando estante 1.2.1 (que es no es el caso, no puedo pensar en nada de usarlo).

Pensé lo mismo, pero es el caso. Rubygems está usando la última versión. Bundler le permite anular este valor predeterminado mediante el uso de

bundle exec foo 

Al instalar una joya al sistema, Rubygems crea contenedores para cada ejecutable que la gema pone a disposición. Cuando ejecuta un ejecutable desde la línea de comandos sin bundle exec, este contenedor invoca Rubygems, que luego usa el mecanismo normal de activación de Rubygems para invocar el ejecutable de la gema. Esto ha cambiado en el pasado varios meses, pero Rubygems invocará la última versión de la gema instalada en su sistema, incluso si su Gemfile.lock especifica una versión diferente de . Además, activará la versión instalada de las (compatible) más reciente de las dependencias de esa gema, incluso si se especifica una versión diferente de en Gemfile.lock. source

Cuestiones relacionadas