2010-11-21 15 views
81

Tengo Active Support 3.0.3 instalado y Rails 3.0.3 con Ruby 1.8.7.¿Cómo uso las extensiones principales de soporte activo?

Cuando intento utilizar 1.week.ago me sale

NoMethodError: undefined method 'week' for 1:Fixnum 
from (irb):2 

Las otras extensiones centrales parecen funcionar. Lo probé en la computadora de un amigo (las mismas especificaciones de instalación y versiones heredadas están en él) con los mismos resultados.

¿Qué ofrece?

Todo esto está en IRB.

+0

No dice si su código se ejecuta dentro de una aplicación de Rails, o en una aplicación de Ruby en la que desea usar algunas extensiones de Rails. –

+0

Duplicado de las extensiones del núcleo ActiveSupport de [Use Rails 3 fuera de los rieles] (http://stackoverflow.com/questions/3053119/use-rails-3s-activesupport-core-extensions-outside-rails). –

Respuesta

119

Desde utilizando rieles deben manejar esto automáticamente Voy a asumir que usted está intentando añadir un apoyo activo a una escritura no-carriles.

Lea "How to Load Core Extensions".

Los métodos de soporte activo se dividieron en grupos más pequeños en Rails 3, por lo que no terminamos cargando muchas cosas innecesarias con un simple require 'activesupport'. Ahora tenemos que hacer cosas como require 'active_support/core_ext/object/blank'

Si no le importa la granularidad, puede optar por cargar trozos más grandes. Si quieres todo en un solo uso trago ...

Para 1.9.2:

rvm 1.9.2 
irb -f 
irb(main):001:0> require 'active_support/all' 
=> true 
irb(main):002:0> 1.week.ago 
=> 2010-11-14 17:56:16 -0700 
irb(main):003:0> 

Para 1.8.7:

rvm 1.8.7 
irb -f 
irb(main):001:0> require 'rubygems' 
=> true 
irb(main):002:0> require 'active_support/all' 
=> true 
irb(main):003:0> 1.week.ago 
=> Sun Nov 14 17:54:19 -0700 2010 
irb(main):004:0> 
+0

tengo que requerir rubygems y active_record primero, pero esta corrección funcionó en IRB después de eso. – griotspeak

+0

Todo lo que hice fue lo que está en el ejemplo. Agregaré lo que hice para ejecutarlo en 1.8.7 también. –

+1

si necesita esto todo el tiempo - digamos que está jugando con algún código o algo así, puede agregar o modificar el archivo .irbrc para requerir todas las librerías que usa todo el tiempo. Los cargará automáticamente al inicio. ES DECIR. Uso awesome_print, hirb y algunos métodos personalizados todo el tiempo, así que simplemente los coloco allí y no tengo que pensar dos veces para cosas como 1.hour.ago o ap {: a => 3,: b => "nick "} trabajar. – konung

-2

Funciona desde la consola? Esto es trabajo para mí:

$ sw_vers 
ProductName: Mac OS X 
ProductVersion: 10.6.5 
BuildVersion: 10H574 

$ rails c 
Loading development environment (Rails 3.0.3) 
>> 1.week.ago 
=> Sun, 14 Nov 2010 16:57:18 UTC +00:00 
-4

Puede:
requerir 'active_support/core_ext '
o:
requieren 'active_support/all'

+3

el Hombre de Hojalata ya mencionó ésos, el año pasado. –

22

Se pueden añadir de forma granular bibliotecas a través de la ya mencionada

require 'active_support/core_ext/some_class/some_file' 

También hay otro nivel hasta donde se puede

require 'active_support/core_ext/some_class' 

Pero, por el momento, esto lamentablemente no está disponible para Time, Date y DateTime .

Una forma de evitar esto es require 'active_support/time' que le dará Time, Date y DateTime que resolvería el PO estaba pidiendo sin requerir todo.


My Rails patch, que añade active_support/core_ext/date y date_time, lo hizo en rieles v4.0.0, por lo que ahora se puede requerir estos de forma individual. ¡HURRA!

Cuestiones relacionadas