2008-09-19 7 views
24

파일에 간단한 속성을 저장하고 Ruby에서 액세스해야합니다.Ruby에 해당하는 Java .properties 파일은 무엇입니까?

Java에서 java.util.Properties 클래스를 사용하여 표준과 같은 .properties 파일 형식을 정말 좋아합니다. 사용하기 쉽고 읽기 쉽습니다.

그래서, Ruby 클래스가 어딘가에있어 많은 노력없이 파일에서 키 값 쌍을로드 할 수 있습니까?

XML을 사용하고 싶지 않으므로 REXML을 제안하지 마십시오 (제 목적은 "꺽쇠 괄호 세"를 보증하지 않습니다).

나는 내 자신의 솔루션을 압연하는 것을 고려했다. 아마 약 5-10 줄의 코드 상단 일 것이지만, 여전히 기존 라이브러리를 사용한다. (본질적으로 파일로 만든 해시 인 경우). .


.... 즉 1 개 라인을 끌어 내릴 것 같은 UPDATE : 그것은 실제로 직선 루비 앱하지 레일,하지만 내가 YAML은 (내 마음의 뒤쪽에 있었다 잘 할 것이라 생각합니다, 하지만 나는 그것에 대해 잊어 버렸습니다 ... 본 적이 있지만 아직까지 사용하지 못했습니다), 모두에게 감사드립니다!

답변

26

Rails 응용 프로그램 또는 Ruby 응용 프로그램 용입니까?

정말 yaml 파일에 속성을 넣은 다음 YAML::Load(File.open("file"))으로 속성을 지정할 수 있습니다. 마이크 스톤에서


참고 : 그것은 실제로 더 나은 것이해야 할 일 :

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

또는 루비 문서로

YAML.load_file("file") 

그렇지 않으면 파일이되지 않습니다, 제안 쓰레기 수거 때까지 닫았지만 관계없이 좋은 제안 :-)

+0

코멘트로 인라인을 편집했을 가능성이 있습니다 ... –

+0

그래, 그게 문제예요. 보이지 않는 것 같습니다. 나는 블록에서 그것을하는 것에 대해 생각하지 않았다. –

2

대신 .properties 스타일의 설정 파일 중 YAML을 사용하는 것이 좋습니다. YAML은 데이터베이스 구성을 위해 Ruby on Rails에서 사용되었으며 다른 언어 (Python, Java, Perl 및 기타)에서 인기를 얻고 있습니다.

루비 YAML 모듈의 개요는 여기에 있습니다 : http://www.ruby-doc.org/core/classes/YAML.html

그리고 YAML의 홈 페이지는 여기에 있습니다 : http://yaml.org

3

데 벤더 Gollapally 정확하게 것을 할 수있는 class를 썼다 :

을 ... YAML 파일을 사용하는 것이 더 좋습니다.

6

YAML은 위에서 설명한대로 완벽하게 처리합니다. 예를 들어, 내 루비 스크립트 중 하나에 나는 같은 YAML 파일이 : 다음과 같이 루비 내에서 사용할

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

:

config = YAML.load_file(File.join(File.dirname(__FILE__), ARGV[0])) 
puts config['migration']['customer'] 

config['sources'].each do |source| 
    puts source['name'] 
end 
9

또 다른 옵션은 단순히 또 다른 루비 파일을 사용하는 것입니다 구성 파일.

예, 루비 코드에서 '옵션'다음

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

그리고이 같은 일을 할라는 파일을 생성합니다

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

이 옵션으로 악용 될 가능성이 없습니까? eval은 임의의 Ruby 코드를 실행하여 예를 들어 불쾌한 일이 파일 시스템에 수행 될 수 있습니다. – Straff

+2

불건전 메시지 웹 양식과 같이 신뢰할 수없는 출처의 코드를 평가하는 경우이 답변은 옵션 파일을 읽는 것에 관한 질문입니다. 만약 누군가가 그것을 고치기를 원한다면, 루비 코드를 읽는 중독자가 될 수도 있습니다 ... –

+0

+1 : 나는 당신의 배타적 인 생각을 좋아합니다. –

3

INIFILE - http://rubydoc.info/gems/inifile/2.0.2/frames 또한 기본 .properties의 파일을 지원하고됩니다 .ini 파일과 [SECTIONS]. 파일이 프로그래머에 의해 관리되지 않을 경우 문제가 발생할 수 있습니다 - 데이터가 복잡한 구조를 가지고 있지만, 공백, 탭, 등 라인의 끝 가로장 설치 등등이 될 수있을 때

[SECTION] 
key=value 

YAML이 좋다. 대조적으로 .properties.ini 파일은 더 용인 할 수 있으며 YAML을 통해 사용할 수있는 심층 구조가 필요하지 않은 경우 적합 할 수 있습니다.

관련 문제