mails - Abrir el archivo desde el directorio en ruby usando File.open
send email with ruby (1)
Soy relativamente nuevo para Ruby, estoy intentando abrir un archivo de la siguiente manera:
#! /usr/bin/env ruby
data_file = ''~/path/to/file.txt''
file = File.open(data_file, ''r'')
sin embargo, obtengo "No hay tal archivo o directorio" (el archivo existe en ese directorio). Funciona si pongo esa ruta al archivo como un argumento de línea de comando como:
#! /usr/bin/env ruby
file = File.open(ARGV[0], ''r'')
y luego ejecutar desde la línea de comandos como: ruby script.cgi ~ / path / to / file.txt
¿Alguna idea de cómo hacer que funcione de la primera manera?
La ruta no se expande, pero lo hace cuando la ejecuta a través de la línea de comando. Creo en los sistemas Unix, la ruta se expande antes de ejecutar la llamada, lo que significa:
ruby file.rb ~/path/to/file
en realidad se expandió a
ruby file.rb /home/user/path/to/file
Puede validar esto ejecutando lo siguiente en su terminal (o cree un archivo ruby con p ARGV[0]
y ejecútelo):
echo "p ARGV[0]" | ruby "" ~/path/to/file #/home/user/path/to/file
Puede usar File.expand_path para cambiar ~
into /home/user
data_file = ''~/path/to/file.txt''
file = File.open(File.expand_path(data_file), ''r'')