Java .Properties Arquivo equivalente para rubi?
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 !
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