2010-06-04 17 views
10

Tengo un proyecto de Rails 2.3.5 que usa las características de localización de Rails. También tengo instalado Rails 3 beta (que depende de la joya i18n). Rails 2.3.5 manejará felizmente la localización por sí mismo (sin i18n instalado), sin embargo, si la joya i18n está disponible, hace uso de ella.Haz que Rails 2.3.x ignore la gema i18n

Recientemente actualicé mis gemas y ahora tengo instaladas la versión 0.3.7 y 0.4.0 de i18n. Rails, por supuesto, quiere cargar y usar la última versión que está causando errores en mi proyecto. Intenté configurar la versión de la gema en 0.3.7, que soluciona los errores en la aplicación web. Sin embargo, estamos usando resque y resque_mailer para retrasar el envío de mensajes. Cuando el trabajador selecciona el trabajo de envío de la cola, ignora mi requisito de config.gem en environment.rb y usa la versión 0.4.0 de todos modos.

Idealmente, me gustaría decirle a Rails que no use la joya i18n en absoluto. ¿Cómo puedo hacer eso?

Actualización: A partir de la versión beta 4, Rails 3 ahora requiere i18n versión 0.4.1. No veo cómo muchas personas no se están metiendo en este problema, como parecería ahora si tiene ambos Rails 2 y Rails 3 instalados, se encontrará con esto.

Respuesta

5

que siguen las instrucciones como se define aquí:

http://gembundler.com/rails23.html

y funcionó.

+0

Votación por paquete. Desde que publiqué esto, el bundler pasó a la versión 1.0 y se volvió mucho mejor. Es muy fácil de configurar en los proyectos de Rails 2.3 y Rails 3. Es la solución que usaría en el futuro. – Jared

+0

Gracias ... realmente una gran solución solucionó mi problema. –

3

Puede usar Bundler o RVM Gemsets para hacer que la joya i18n no esté disponible desde su aplicación. O puede actualizar su aplicación Rails.

+0

Si bien esa es una respuesta válida, no es el tipo de respuesta que estoy buscando. Ya estoy usando RVM, pero muchas personas no lo están. Debería haber una manera de manejar esto completamente dentro de Rails si va a ser una característica de Rails. No debería tener que instalar y configurar RVM para administrar una característica de Rails. – Jared

+1

Esto es posible desde "dentro" de Rails 3 ya que se envía con Bundler. RubyGems no tiene opción de desactivar una gema por completo. Si bien podría activar explícitamente una versión anterior de i18n, la única manera de sacarlo de su ruta de carga sería no usar rubygems en absoluto. –

+1

Puede convertir un proyecto de rieles anterior para usar también el paquete de gemas. Gem bundler tiene la capacidad de desactivar las gemas del sistema, confiando únicamente en las gemas del paquete. También tiene una administración de dependencias muy superior. Tiempo de configuración: 15 minutos –

2
  1. congelar la versión rieles: rake VERSION=2.3.5 rails:freeze:gems
  2. Fijar la versión en el archivo de proveedor/rieles/ActiveSupport/lib/active_support/vendor.rb línea 24 a: gem 'i18n', '>= 0.1.3', '< 0.4.0'
+0

Se arregló el error así que descongele y actualice los rieles. actualización de gema; rake rails: descongelar – wingfire

2

O simplemente editar: /usr/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/vendor.rb

Y a su vez gem 'i18n', '>= 0.1.3'

En gem 'i18n', '0.1.3'

Cuestiones relacionadas