Forum: Rails-ES Constantes en Plugins

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Ceritium (Guest)
on 2008-11-20 20:01
(Received via mailing list)
Hola a todos ante todo.

Hacía tiempo quería probar a crear un plugin y al final me decidí por
encapsular unas librerías y métodos en java y ruby que usaba para
generar
PDFs a partir de una plantilla ERB, HAML o lo que fuera de mi
aplicación.

No he inventado nada, solo he probado a encapsularlo, aún no está listo
pues
para funcionar es necesário declarar dos constantes, veo dos formas,
desde
el propio plugin (que no se como) o haciendo una tarea rake
pdf_on_rails:setup (por ejemplo) que me mueva cree en
app/config/initializrs/java.rb un archivo con:

 TMP_DIR = File.expand_path(File.join(RAILS_ROOT, "tmp"))

JAVA_OPTIONS = {
  :bin => "/usr/bin/java",
  :cp_separator => ":"
}


¿Qué aconsejais? ¿Como lo haríais?


Gracias antes de nada :P
Raul M. (Guest)
on 2008-11-20 20:09
(Received via mailing list)
¿Tienes el plugin encapsulado en un módulo? En ese caso podrías
declarar las constantes dentro de él, y si necesitas acceder a ellas
desde la aplicación puedes hacerlo con NombreModulo::NOMBRE_CONSTANTE
javier ramirez (Guest)
on 2008-11-20 20:16
(Received via mailing list)
hola,
> No he inventado nada, solo he probado a encapsularlo, aún no está
> listo pues para funcionar es necesário declarar dos constantes, veo
> dos formas, desde el propio plugin (que no se como)

el archivo init.rb del plugin es el sitio perfecto. Al arrancar la
aplicación, se invoca ese archivo automáticamente. Si le pones el código
de definición de las constantes, ya se queda definida.

Eso sí, te recomendaría crear un módulo y meter las constantes dentro,
por aquello de que tengan un namespace razonable. Más que nada que
TMP_DIR y JAVA_OPTIONS a priori parecen nombres muy genéricos

saludos,

--
javier ramírez

..i do ruby on rails development in madrid, spain, at
http://www.aspgems.com
..you can find out more about me on http://formatinternet.wordpress.com
and http://workingwithrails.com/person/5987-javier-ramirez
Borja Martín (Guest)
on 2008-11-20 20:18
(Received via mailing list)
Jue, pues justo este finde iba a empezar a hacer algo parecido yo
también con flying saucer a partir de una movida que había hecho el
año pasado para hacerlo más elegante. Además quería probar a hacerlo con una
comunicación por sockets o pipes para no tener que estar escribiendo
ficheros temporales y tener la aplicación java siempre corriendo y no
tener que levantar la vm todo el rato. Si te interesa podemos probar a
hacerlo conjuntamente...

Respecto a la pregunta original, entiendo que como lo que quieres hacer
es pasar variables de configuración, más que constantes yo me iría al
estilo 'a lo rails' en plan:

Modulo::Clase.config = {
  :foo => 'foo',
  :bar => 'bar'
}

y al hacer la asignación podrias hacer merge con unas opciones por defecto.

No sé si me he explicado...

Salud!

Ceritium
escribió:> Hola a todos ante todo.
>  TMP_DIR = File.expand_path(File.join(RAILS_ROOT, "tmp"))
> Gracias antes de nada :P
>
>
> --
> http://ceritium.net
>
>
/**
 * dagi3d v4 - http://dagi3d.net
 */
Ceritium (Guest)
on 2008-11-20 20:22
(Received via mailing list)
Borja, el plugin está basado en el sistema que describes en tu blog,
apareces al final del README.

Si te digo la verdad, me interesa que genere los archivos temporales,
xhtml
y PDF, así los puedo almacenar para el futuro y crear una especie de
caché.
Que genere el xhtml cada vez y si el hash es el mismo al que existia
pues
que devuelva directamente el PDF antiguo.

2008/11/20 Borja Martín <removed_email_address@domain.invalid>
Francesc E. (Guest)
on 2008-11-20 20:30
(Received via mailing list)
Si lo metes en el plugin creo que el init.rb podria ser un buen sitio.
Ceritium (Guest)
on 2008-11-20 20:33
(Received via mailing list)
Javier R. y Francesc si lo meto en init.rb no me lo pilla
"uninitialized constant TMP_DIR"

Lo he metido directamente en el archivo que carga los dos métodos ruby
que
usa el plugin y va bien, pero no creo que sea lo más correcto.

 Tendré que crear eso del módulo que tu Javier y Borja comentáis, pero
aún
me pierdo un poco con eso :P



2008/11/20 Francesc E. <removed_email_address@domain.invalid>
Ceritium (Guest)
on 2008-11-20 20:55
(Received via mailing list)
Ok, gracias a todos, al final hice lo del módulo qué indicabais pero no
me
lo carga desde el initializer, lo meto en el xhtml2pdf.rb y va bien.

2008/11/20 Ceritium <removed_email_address@domain.invalid>
This topic is locked and can not be replied to.