Ruby Forum Rails-ES > Ruta actual + abrir imagen

Posted by Diego Guti (protos)
on 02.05.2008 00:08
Hola,

Ya me he revisado varias veces el tema de las variables globales, pero
no encuentro ninguna variable que me diga la ruta actual en la que está
corriendo el codigo, si por ejemplo, quiero listar los archivos de esa
ruta, o voy a guardar un archivo, y quiero decirle al usuario donde se
ha guardado el archivo, necesito saber el nombre de la ruta, como lo
puedo averiguar.

Otra duda que tengo, es: despues de crear un archivo con File.open, como
puedo hacer para abrirlo?. El caso esque no quiero leerlo, quiero
abrirlo directamente en su propia extension, ya sea pdf, txt , png etc

saludos y muchas gracias
Posted by Xavier Noria (fxn)
on 02.05.2008 00:42
(Received via mailing list)
2008/5/2 Diego Guti <ruby-forum-incoming@andreas-s.net>:

>  Ya me he revisado varias veces el tema de las variables globales, pero
>  no encuentro ninguna variable que me diga la ruta actual en la que está
>  corriendo el codigo

El directorio de trabajo esta disponible en

  Dir.pwd

, si por ejemplo, quiero listar los archivos de esa
>  ruta,

Mirate la clase Dir.

o voy a guardar un archivo, y quiero decirle al usuario donde se
>  ha guardado el archivo, necesito saber el nombre de la ruta, como lo
>  puedo averiguar.

Mirate los metodos de la clase File, como dirname, basename,
expand_path, extname, ... hay unos cuantos para trabajar sobre strings
como nombres de archivo.

>  Otra duda que tengo, es: despues de crear un archivo con File.open, como
>  puedo hacer para abrirlo?. El caso esque no quiero leerlo, quiero
>  abrirlo directamente en su propia extension, ya sea pdf, txt , png etc

Que quieres decir?
Posted by Diego Guti (protos)
on 02.05.2008 11:05
Xavier Noria wrote:
> Que quieres decir?

A lo que me refiero es que lo que se hacer es leer un archivo y mostrar 
su contendio. Pero no me interesa eso, porque si el archivo es por 
ejemplo una imagen, no me saldrá su contendio por panalla, lo que quiero 
es abrir ese archivo desde el programa determinado para ese tipo de 
arhchivos.
Posted by Xavier Noria (fxn)
on 02.05.2008 11:59
(Received via mailing list)
2008/5/2 Diego Guti <ruby-forum-incoming@andreas-s.net>:
> Xavier Noria wrote:
>  > Que quieres decir?
>
>  A lo que me refiero es que lo que se hacer es leer un archivo y mostrar
>  su contendio. Pero no me interesa eso, porque si el archivo es por
>  ejemplo una imagen, no me saldrá su contendio por panalla, lo que quiero
>  es abrir ese archivo desde el programa determinado para ese tipo de
>  arhchivos.

Aja, eso se consigue llamando a una utilidad del sistema via system().

En Windows es start, en Mac open, y en Linux tengo entendido que es
normal que este instalada una cierta utilidad cuyo nombre no recuerdo
(alguien?). Por ejemplo en el mac:

   system("open foo.pdf") # lanza la aplicacion asociada con PDFs

Hay una gema llamada launchy que en principio encapsula esto pero no
la he usado.
Posted by Diego Guti (protos)
on 02.05.2008 12:56
Xavier Noria wrote:
Ok, entonces la solucion es llamar a la consola del sistema. Pero 
entonces, con el objetivo de hacer el programa lo maximo multiplataforma 
posible, me surgen dos dudas:

Primera: necesito saber que OS está corriendo el script, como lo puedo 
averiguar?
Segundo: Cuando sepa el os, hacer un case, para windows start, para mac 
open, y para linux, he estado buscando y no se que comando abre un 
archivo...:S

saludos
Posted by javier ramirez (Guest)
on 02.05.2008 13:19
(Received via mailing list)
Hola,

> Xavier Noria wrote:
> Ok, entonces la solucion es llamar a la consola del sistema. Pero 
> entonces, con el objetivo de hacer el programa lo maximo multiplataforma 
> posible, me surgen dos dudas:
>
>   

Sólo una aclaración, por si acaso. Si estamos hablando de un script
stand-alone de ruby, entonces nada que comentar. Pero si estás hablando
de una aplicación Rails, entonces habría que precisar que en esta
aplicación el código Ruby se ejecuta solamente en tu servidor, y los
clientes hacen peticiones HTTP, nada más.

Esto quiere decir que si estás pensando en que un cliente desde una
máquina accede a un servidor que está en otra, y desde código Ruby en
esa otra máquina quieres controlar los ficheros (guardar, abrir, etc...)
del cliente, no vas a poderlo hacer. Si es una aplicación Rails y
siempre el cliente que va a hacer la petición corre en la misma máquina
que el servidor, sí podrías.

Un saludo,

javier ramírez
Posted by Diego Guti (protos)
on 02.05.2008 13:23
Gracias por la aclaracion ;), pero no, no quiero controlar archivos 
remotos del cliente, en cualquier caso, si paso la aplicacion a rails, 
seria en el servidor, pero de momento eso no es problema porque es un 
script en stand-alone de ruby.
Asi que sigo con los mismos problemas.

saludos
Posted by Xavier Noria (fxn)
on 02.05.2008 14:32
(Received via mailing list)
2008/5/2 Diego Guti <ruby-forum-incoming@andreas-s.net>:

> Xavier Noria wrote:
>  Ok, entonces la solucion es llamar a la consola del sistema. Pero
>  entonces, con el objetivo de hacer el programa lo maximo multiplataforma
>  posible, me surgen dos dudas:
>
>  Primera: necesito saber que OS está corriendo el script, como lo puedo
>  averiguar?

Esta en la constante RUBY_PLATFORM, de todos modos si necesitas
portabilidad primero investigaria launchy porque esta pensado para
ello.

>  Segundo: Cuando sepa el os, hacer un case, para windows start, para mac
>  open, y para linux, he estado buscando y no se que comando abre un
>  archivo...:S

Mira la seccion "Case Expressions" de

    http://www.rubycentral.com/pickaxe/tut_expressions.html
Posted by Diego Guti (protos)
on 02.05.2008 15:29
Bueno, pues he estado mirandome la documentación de launchy, y lo he 
instalado para probarlo, pero no consigo abrir el archivo, la 
documentación tampoco es muy extensa, y ademas al estar en ingles no la 
he logrado entender muy bien. Lo que logro con launchy como mucho es 
abrir una pagina web, pero no cualquier otro archivo...Si alguien me 
puede guiar un poco con esta libreria...o si no, aunque sea menos 
portable tendré que hacerlo de la otra manera, mirando OS, y llamando a 
la consola...

gracias