2012-10-23 4 views
3

일부 데이터가 XML 파일로 저장되어 있습니다. 내가 만든 디렉터리에 넣어, app/data/myxml.xml.레일 스타일로 파일을 읽는 방법

이제 Nokogiri를 사용하여 구문 분석하고 싶습니다.

@doc = Nokogiri::XML(open("/home/me/webA/myrailsproject/app/data/myxml.xml")) 

절대 경로는 확실히 코드가 추한합니다 나는 절대 경로를 참조하고있는 파일을 찾습니다. 파일을보다 짧고 깨끗하게 정리할 수있는 방법이 있습니까? 예를 들면 :

@doc = Nokogiri::XML(open("myxml")) 

답변

5

레일의 현재 디렉토리는 응용 프로그램 루트, 그래서 당신은 그냥

@doc = Nokogiri::XML(open("data/myxml.xml")) 

을 할 수 아니면 확인하려는 경우, 당신은 RAILS_ROOT 상수 사용할 수 있습니다 -

@doc = Nokogiri::XML(open("#{RAILS_ROOT}/data/myxml.xml")) 
+0

둘 다 나를 위해 작동하지 않지만 두 번째로 "# {Rails.root} /app/data/myxml.xml"이 잘 작동하는 것을 알 수있었습니다. 첫 번째 시도 했습니까? 나는 그 사람이 일해야한다고 기대하지만 그렇지 않습니다. – Anar

+0

@Anar 진짜 질문은, 당신이 시도 했나요? ;) File.join을 사용하여 파일 경로를 연결하고 [rdoc] (http://www.ruby-doc.org/core-1.9.3/File)의'File.expand_path'를 살펴볼 수도 있습니다. .html). – iain

+0

업데이트 됨, 이상합니다. "data/myxml.xml"대신 "app/data/myxml.xml"에서 작동합니다. – Anar