write read create ruby file-io

read - ruby rescue syntax



¿Archivo Java.properties equivalente para Ruby? (6)

¿Es esto para una aplicación de Rails o una de Ruby?

De verdad, ya sea que sea posible, puede colocar sus propiedades en un archivo yaml y luego YAML::Load(File.open("file")) .

NOTA de Mike Stone: En realidad sería mejor hacer:

File.open("file") { |yf| YAML::load(yf) }

o

YAML.load_file("file")

como lo sugieren los rubíes, de lo contrario el archivo no se cerrará hasta la recolección de basura, pero una buena sugerencia independientemente :-)

Necesito almacenar algunas propiedades simples en un archivo y acceder a ellas desde Ruby.

Me encanta el formato de archivo .properties que es el estándar para tales cosas en Java (usando la clase java.util.Properties) ... es simple, fácil de usar y fácil de leer.

Entonces, ¿hay alguna clase de Ruby en alguna parte que me permita cargar algunos pares de valores clave de un archivo así sin mucho esfuerzo?

No quiero usar XML, así que no sugiera REXML (mi propósito no garantiza el "impuesto de paréntesis").

He considerado rodar mi propia solución ... probablemente serían alrededor de 5-10 líneas de código máximo, pero aún así preferiría usar una biblioteca existente (si es esencialmente un hash construido a partir de un archivo) ... como lo haría bajarlo a 1 línea ...

ACTUALIZACIÓN: en realidad es una aplicación de Ruby directa, no rieles, pero creo que YAML funcionará bien (estaba en el fondo de mi mente, pero lo había olvidado ... lo había visto pero nunca lo había usado hasta ahora), gracias a todos !


Devender Gollapally escribió una class para hacer precisamente eso:

... aunque recomendaría mejor usar un archivo YAML.


En lugar del estilo .properties del archivo de configuración, puede considerar usar YAML. YAML se usó en Ruby on Rails para la configuración de la base de datos, y ha ganado popularidad en otros idiomas (Python, Java, Perl y otros).

Una descripción general del módulo Ruby YAML está aquí: http://www.ruby-doc.org/core/classes/YAML.html

Y la página de inicio de YAML está aquí: http://yaml.org


Otra opción es simplemente usar otro archivo Ruby como su archivo de configuración.

Ejemplo, crea un archivo llamado ''opciones''

{ :blah => ''blee'', :foo => ''bar'', :items => [''item1'', ''item2''], :stuff => true }

Y luego en tu código Ruby haz algo como:

ops = eval(File.open(''options'') {|f| f.read }) puts ops[:foo]


YAML lo hará perfectamente como se describe arriba. Por ejemplo, en uno de mis scripts de Ruby tengo un archivo YAML como:

migration: customer: Example Customer test: false sources: - name: Use the Source engine: Foo - name: Sourcey engine: Bar

que luego uso dentro de Ruby como:

config = YAML.load_file(File.join(File.dirname(__FILE__), ARGV[0])) puts config[''migration''][''customer''] config[''sources''].each do |source| puts source[''name''] end


inifile - http://rubydoc.info/gems/inifile/2.0.2/frames soportará archivos .properties básicos y también archivos .ini con [SECTIONS] ej.

[SECTION] key=value

YAML es bueno cuando sus datos tienen una estructura compleja, pero puede ser complicado con espacios, pestañas, fin de líneas, etc., lo que puede causar problemas si los programadores no mantienen los archivos. Por el contrario, los archivos .properties y .ini son más indulgentes y pueden ser adecuados si no se necesita la estructura profunda disponible a través de YAML.