Una ayuda con librerías


#1

¡Buenas! Para cogerle el gusto a ruby, estoy haciéndome un motorcillo
para mi blog, siguiendo básicamente los tutoriales de Vincent Gozalbes.
Como en esto de ruby es tan fácil empezar, tienes el doble filo de que
al final acabas teniendo una web funcionando y sin tener ni idea de qué
has hecho :slight_smile:

Voy con mi duda: quiero tener algunas funciones para parsear las cadenas
de texto de las noticias y los comentarios, para convertir las URLs en
enlaces automáticamente, etc.

He probado tanto a crear métodos en el application_helper.rb como a
crearlos como librería.

Para esto último, me he creado un fichero en /lib/parseo.rb con este
contenido (el código está fusilado de Vincent, pero sólo es para
probar):

class String
def prueba_parseo
result = self.downcase
result.gsub!(/[’"]/, ‘’)
result.gsub!(/W/, ’ ')
result.gsub!(/ +/, ‘-’)
result.gsub!(/(-)$/, ‘’)
result.gsub!(/^(-)/, ‘’)
result
end
end

Luego, he añadido esta línea al enviroment.rb:

require ‘parseo’

Y por último, lo he usado en la cabecera del blog así:

<%= “esto es una prueba”.prueba_parseo %>

Cuando cargo el blog, me da un casque de “Application error (Rails)”, y
en los logs me aparece esto:

ActionView::TemplateError (undefined method `prueba_parseo’ for “esto
es una prueba”:String) on line #19 of app/views/layouts/blog.rhtml:

¿Alguna idea de por dónde puedo tirar? Graciaaaaaas :slight_smile:


#2

On Feb 10, 2007, at 12:12 PM, Ganso Ganso wrote:

He probado tanto a crear métodos en el application_helper.rb como a
crearlos como librería.

Si es un metodo para ser usado solo en vistas, es un helper. En ese
caso seria un metodo que recibe la cadena y devuelve el resultado del
parseo. Si es de uso mas general entonces esta OK sacarlo a una
libreria y ya meterlo en String o no va a gusto del consumidor. Mi
criterio personal es no tocar demasiado las clases estandares y crear
una libreria de utilidades de la aplicacion que recoge un puñado de
metodos.

Para esto último, me he creado un fichero en /lib/parseo.rb con este
contenido (el código está fusilado de Vincent, pero sólo es para
probar):

class String
def prueba_parseo
result = self.downcase
result.gsub!(/[’"]/, ‘’)
result.gsub!(/W/, ’ ')

Aqui seguramente queria decir \W.

  result.gsub!(/ +/, '-')
  result.gsub!(/(-)$/, '')
  result.gsub!(/^(-)/, '')

En estos dos ultimos los parentesis no se usan, por lo que se quitarian.

“esto
es una prueba”:String) on line #19 of app/views/layouts/blog.rhtml:

¿Alguna idea de por dónde puedo tirar? Graciaaaaaas :slight_smile:

Tal como lo explicas deberia funcionar. Rebotaste el servidor?

– fxn