2012-03-29 8 views
7

acabo de crear un módulo de location.rb dentro carpeta/lib con los contenidos siguientes:Cómo utilizar módulos de aplicación Rails

module Location 
    def self.my_zipcode() 
    zip_code = "11215" 
    end 
end 

Y ahora en mi controlador Estoy intentando llamar "my_zipcode" método:

class DirectoryController < ApplicationController 
    def search 
    require 'location' 
    zip_code = Location.my_zipcode() 
    end 
end 

Pero genera un error:

undefined method `my_zipcode' for Location:Module

+0

Pruebe 'Location :: my_zipcode'. –

+0

Sigue el mismo error. –

+0

Funciona para mí (y eso es lo que debería). –

Respuesta

5

Es posible que tenga que reiniciar el servidor de rieles para que reconozca cosas en el directorio lib.

+1

¿sabes si tengo que reiniciar un servidor cada vez que actualizo un código de módulo? –

+0

eso es lo que generalmente tengo que hacer, no estoy seguro de cómo evitarlo –

+2

Por lo general, agrego una carpeta de aplicación/módulos para ponerlos mientras desarrollo. De esta forma, se vuelven a cargar en cada solicitud. –

13

También puede añadir lo siguiente a su config/application.rb

config.autoload_paths + =% W (# {config.root}/lib)

y debe cargar automáticamente el módulo sin tener para reiniciar los rieles.

+0

Gracias fuera2344, muy buena solución :) –

Cuestiones relacionadas