Pergunta

Preciso armazenar algumas propriedades simples em um arquivo e acessá -las do Ruby.

Eu absolutamente amo o formato de arquivo .Properties, que é o padrão para essas coisas em Java (usando a classe java.util.properties) ... é simples, fácil de usar e fácil de ler.

Então, existe uma aula de rubi em algum lugar que me permita carregar alguns pares de valores -chave de um arquivo como esse sem muito esforço?

Não quero usar o XML, então, por favor, não sugira rexml (meu objetivo não garante o "imposto sobre suporte de ângulo").

Eu pensei em rolar minha própria solução ... provavelmente seria de cerca de 5 a 10 linhas de code tops, mas eu ainda preferia usar uma biblioteca existente (se for essencialmente um hash construído a partir de um arquivo) ... como isso seria traga -o para 1 linha ....


ATUALIZAÇÃO: Na verdade, é um aplicativo rubi direto, não trilhos, mas acho que a YAML fará bem (estava no fundo da minha mente, mas eu tinha esquecido isso ... já vi, mas nunca usado até agora), obrigado a todos !

Foi útil?

Solução

Isso é para uma aplicação do Rails ou um rubi?

Realmente com qualquer um, você poderá colocar suas propriedades em um arquivo YAML e depois YAML::Load(File.open("file")) isto.


Nota de Mike Stone: Seria realmente melhor fazer:

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

ou

YAML.load_file("file")

Como os documentos do rubi sugerem, caso contrário, o arquivo não será fechado até a coleta de lixo, mas boa sugestão, independentemente :-)

Outras dicas

Outra opção é simplesmente usar outro arquivo Ruby como seu arquivo de configuração.

Exemplo, crie um arquivo chamado 'Opções'

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

E então, em seu código Ruby, faça algo como:

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

A YAML fará isso perfeitamente, conforme descrito acima. Por exemplo, em um dos meus scripts rubi, tenho um arquivo YAML como:

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

que eu então uso em 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 Apoiará arquivos básicos .Properties e também arquivos .ini com [seções], por exemplo.

[SECTION]
key=value

A YAML é boa quando seus dados têm estrutura complexa, mas podem ser complicados com espaços, guias, fim de linhas etc. - o que pode causar problemas se os arquivos não forem mantidos pelos programadores. Por contraste .properties e .ini Os arquivos são mais perdoadores e podem ser adequados se você não precisar da estrutura profunda disponível no YAML.

Devender Gollapally escreveu um classe Para fazer exatamente isso:

... embora eu recomendo melhor usar um arquivo YAML.

Em vez do estilo .Properties do arquivo de configuração, considere usar o YAML. A YAML usada em Ruby on Rails para configuração de banco de dados e ganhou popularidade em outros idiomas (Python, Java, Perl e outros).

Uma visão geral do módulo Ruby Yaml está aqui: http://www.ruby-doc.org/core/classes/yaml.html

E a página inicial da YAML está aqui: http://yaml.org

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top