Pregunta

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

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

Así, hay un Rubí de clase en algún lugar que me permitirá cargar algunos de los principales pares de valores de un archivo como el que sin mucho esfuerzo?

No quiero usar XML, así que por favor no sugieren REXML (mi propósito no garantiza la "escuadra de impuestos").

He considerado a rodar mi propia solución...probablemente sería de unos 5-10 líneas de código tops, pero todavía se prefiere el uso de una biblioteca existente (si es esencialmente un hash construido a partir de un archivo)...como que iba a bajar a 1 de la línea de....


ACTUALIZACIÓN:En realidad es una recta Ruby app, no rails, pero creo que YAML va a hacer muy bien (estaba en la parte de atrás de mi mente, pero me había olvidado de ella...han visto pero nunca utilizado hasta el momento), gracias a todos!

¿Fue útil?

Solución

Es esto para una aplicación en Rails o un Rubí uno?

Realmente, ya sea con usted puede ser capaz de mantener sus propiedades en un archivo yaml y, a continuación, YAML::Load(File.open("file")) es.


NOTA de Mike Stone: Que en realidad podría ser mejor que hacer:

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

o

YAML.load_file("file")

como el rubí docs sugieren, de lo contrario el archivo no será cerrado hasta la recolección de basura, pero buena sugerencia independientemente :-)

Otros consejos

Otra opción es utilizar simplemente otro Ruby archivo como el archivo de configuración.

Ejemplo, crear un archivo llamado 'opciones'

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

Y luego, en su código de Ruby hacer algo como:

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

YAML va a hacer perfectamente como se describió anteriormente.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 de su uso dentro de Ruby:

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 se apoyo básico .los archivos de propiedades y también .los archivos ini con [SECCIONES] por ejemplo.

[SECTION]
key=value

YAML es bueno cuando los datos tienen una estructura compleja, pero puede ser incómoda con espacios, tabuladores, final de las líneas, etc - que puede causar problemas si los archivos no son mantenidos por los programadores.Por el contrario .properties y .ini los archivos son más indulgentes y puede ser conveniente si usted no necesita la estructura profunda disponibles a través de YAML.

Devender Gollapally escribió un clase para hacer precisamente eso:

...aunque yo recomiendo mejor usar un archivo YAML.

En lugar de la .las propiedades de estilo de su archivo de configuración, usted podría considerar el uso de YAML.YAML utilizado en Ruby on Rails para la configuración de base de datos, y ha ganado en popularidad en otros lenguajes (Python, Java, Perl, y otros).

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

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top