Como instanciar una clase ruby en el controlador?


#1

Hola, estoy desarrollando una aplicación Ruby, pero me he encontrado
con un problema, quiero instanciar una clase de Ruby normal sin que esta
herede de ActiveRecord::Base, en principio podría intentar meter la
funcionalidad dentro del controlador, pero son 500 líneas o más que lo
único que harían es ensuciar el controlador y este no quedaría muy
limpio.

Veo lógico que esta clase no este bajo el directorio models, ya que no
forma parte del modelo, mi primer instinto ha sido meter la clase en
model, y aunque la encontraba no podía llamar a los métodos de la clase
que he creado. ¿Donde debería de meterlo? ¿Y como puedo luego crear una
instancia de la clase?

Gracias!


#2

El 01/02/2009, a las 23:40, Javier E. escribió:

Veo lógico que esta clase no este bajo el directorio models, ya que no
forma parte del modelo, mi primer instinto ha sido meter la clase en
model, y aunque la encontraba no podía llamar a los métodos de la
clase
que he creado. ¿Donde debería de meterlo? ¿Y como puedo luego crear
una
instancia de la clase?

Gracias!

Normalmente este código se mete en lib.
Si este código lo usas en varios projectos, te recomiendo vendor/plugin.
Si lo usas en varios sistemas, en vendor gems y haces una gema.

si lo que quieres añadir son funciones debes de hacer un módulo.

module Feature
def my_func
end
end

class PersonController < ApplicationController
include MyFeature

end

Si estas seguro de hacer una clase.

class A
end

y en el controllador
A.new


Guillermo Álvarez Fernández
removed_email_address@domain.invalid
http://cientifico.net


#3

Guillermo Álvarez Fernández wrote:

Normalmente este código se mete en lib.
Si este código lo usas en varios projectos, te recomiendo vendor/plugin.
Si lo usas en varios sistemas, en vendor gems y haces una gema.

si lo que quieres añadir son funciones debes de hacer un módulo.

module Feature
def my_func
end
end

class PersonController < ApplicationController
include MyFeature

end

Si estas seguro de hacer una clase.

class A
end

y en el controllador
A.new

Gracias, Guillermo. Si creo que la idea es que sea una clase ya que
esta va a contener también variables y no sólo métodos.

Esta noche lo pruebo y a ver si lo saco en claro.

Gracias de nuevo.