2011-03-31 2 views
2

나는 보석을 가지고 있는데, 우리는 그것을 ToastMitten이라고 부를 것이고, 나는 이것을 내 레일 애플 리케이션 중 하나에 포함시킬 것이다. 나는 파일을로드해야하는 ToastMitten에 대한 몇 가지 테스트를 작성 중이며 gem의 루트에서 경로를 지정하려고합니다.Rails 프로젝트의 Rspec 테스트에서 보석의 루트 디렉토리를 얻으려면 어떻게해야합니까?

방금 ​​Rails.root.to_s을 사용해 보았습니다. 그러나 그 결과는 /Users/me/projects/toastmitten/spec/dummy과 같습니다. 경로가 toastmitten/으로 끝날 것으로 예상 했었습니다.

내가 뭘 잘못하고 있니?

답변

3
Rails.root.parent.to_s 

더미 레일스 앱을 항상 돌려주는 경우 상위로 이동하십시오.

+0

그게 나에게'spec' 폴더를 주는데,이 경우 작동하지만, 당신이 기대하는 것입니까? –

+0

네, 그게 내가 기대하는 것입니다. 가짜 앱으로 레일즈 플러그인/보석을 테스트하는 것은 약간의 고통입니다. 내가 가진 하나의 프로젝트에 대해 설정을 변경하는 것은 매우 지루하고 실망 스럽습니다. –

3

Rails 엔진을 사용하고있는 것 같습니다 (enginex로 생성되었으므로 spec 폴더에 더미 응용 프로그램이 생성되었습니다). 당신이 절대 경로를 사용하여 테스트 파일을 요구해야하는 경우, 다음과 같은 사용할 수 있습니다

file = File.expand_path(File.join(File.dirname(__FILE__), 'path', 'to', 'file.ext')) 

root = File.expand_path(File.join(File.dirname(__FILE__), '..', '..')) 

당신이이 파일을 요구하려는 위치에 대한 자세한 특정 될 수 있을까? 또한 루트 예의 경우 ..이 더 필요할 수 있습니다.

+0

Rspec 테스트에서'spec' 아래에 몇 개의 폴더가 있습니다.'spec/fixtures'에있는 파일을로드하려고합니다. –

+0

을 사용하면 spec이 'spec/f1/f2/blah_spec.rb'이고 File.expand_path (File.join (File.dirname (__ FILE__), ..', '..', ' fixtures ','file.txt '))' – Adam

관련 문제