문제

몇 가지 간단한 속성을 파일에 저장하고 Ruby에서 액세스해야 합니다.

저는 Java(java.util.Properties 클래스 사용)의 표준인 .properties 파일 형식을 정말 좋아합니다.간단하고 사용하기 쉽고 읽기 쉽습니다.

그렇다면 많은 노력 없이도 그러한 파일에서 일부 키 값 쌍을 로드할 수 있는 Ruby 클래스가 어딘가에 있습니까?

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

내 솔루션을 롤링하는 것을 고려했습니다 ...아마도 약 5-10줄의 코드 상단이 될 것입니다. 그러나 저는 여전히 기존 라이브러리를 사용하고 싶습니다(본질적으로 파일에서 작성된 해시인 경우)...그렇게 하면 1줄로 줄어들거든요....


업데이트:실제로는 Rails가 아닌 일반 Ruby 앱이지만 YAML이 잘 작동할 것이라고 생각합니다(생각하고 있었는데 잊어버렸네요...본 적은 있지만 아직 사용해 본 적은 없습니다), 모두들 감사합니다!

도움이 되었습니까?

해결책

Rails 애플리케이션용인가요, 아니면 Ruby 애플리케이션용인가요?

실제로 두 가지 중 하나를 사용하면 속성을 yaml 파일에 고정한 다음 YAML::Load(File.open("file")) 그것.


Mike Stone의 참고 사항: 실제로 다음을 수행하는 것이 더 좋습니다.

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

또는

YAML.load_file("file")

Ruby 문서에서 제안하는 것처럼 그렇지 않으면 파일은 가비지 수집까지 닫히지 않지만 상관없이 좋은 제안입니다 :-)

다른 팁

또 다른 옵션은 다른 Ruby 파일을 구성 파일로 사용하는 것입니다.

예를 들어 'options'라는 파일을 만듭니다.

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

그런 다음 Ruby 코드에서 다음과 같은 작업을 수행합니다.

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

YAML은 위에서 설명한 대로 완벽하게 수행합니다.예를 들어 내 Ruby 스크립트 중 하나에는 다음과 같은 YAML 파일이 있습니다.

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

그런 다음 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 기본 .properties 파일과 [SECTIONS]가 포함된 .ini 파일도 지원합니다.

[SECTION]
key=value

YAML은 데이터의 구조가 복잡할 때 유용하지만 공백, 탭, 줄 끝 등으로 인해 문제가 발생할 수 있습니다. 프로그래머가 파일을 유지 관리하지 않으면 문제가 발생할 수 있습니다.대조적으로 .properties 그리고 .ini 파일은 더 관대하며 YAML을 통해 사용 가능한 심층 구조가 필요하지 않은 경우 적합할 수 있습니다.

Devender Gollapally가 다음을 작성했습니다. 수업 정확하게 그렇게하려면 :

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

.properties 스타일의 구성 파일 대신 YAML 사용을 고려할 수 있습니다.YAML은 데이터베이스 구성을 위해 Ruby on Rails에서 사용되며 다른 언어(Python, Java, Perl 등)에서 인기를 얻었습니다.

Ruby YAML 모듈의 개요는 다음과 같습니다. http://www.ruby-doc.org/core/classes/YAML.html

YAML의 홈페이지는 다음과 같습니다. http://yaml.org

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top