2013-02-22 1 views
4

최근에 첫 번째 Rails 엔진을 만들었습니다. /config의 유일한 내용은 routes.rb - 아니 environment.rb 또는 application.rb 또는 이와 비슷한 것입니다. 나는 rspec-rails 보석을 설치하고 내 사양을 실행하려고Rails 엔진에 environment.rb가 있어야합니까?

, 나는 environment.rb이 존재하지 않기 때문에 그것이 놀라운 일이 아니다있는 environment.rb를 찾을 수 없다는 오류가 발생했습니다.

나에게 혼란스러운 것은 내가 가지고있는 증거는 두 가지 중 하나이 사건해야 하더군요이다 :

1) 엔진이없는이 environment.rb 함께 할 레일 및 생성 할 것으로 예상하고 있습니다 environment.rb, application.rb 등이있다. 이럴 것 같지 않습니다.

2) 엔진이 environment.rb와 함께레일,하지만 내 엔진은 어떤 이유를 누락 발생합니다. 이것은 또한있을 것 같지 않습니다. 나는 엔진에 environment.rb를 말합니다이 답변으로하지만, 혼란 스러워요 : Testing Rails 3.1 mountable engine with Rspec

그래서 제 질문은 다음과 같습니다 environment.rb와 함께 가정 레일 엔진 있는가, 그렇지 않은 경우, 어떻게 하나를 만들 가정된다 당신이 원한다면/필요 하나?

답변

3

더미 응용 프로그램의 environment.rb 파일을 사용하십시오. 설치 RSpec에로

:

spec_helper.rb 파일에 아래 추가합니다.

ENV["RAILS_ENV"] ||= 'test' 
require File.expand_path("../../test/dummy/config/environment", __FILE__) 
... 

엔진 루트를 추가하는 것도 도움이됩니다.

ENGINE_RAILS_ROOT = File.join(File.dirname(__FILE__), '../') 

당신은 엔진의 라우팅 도우미에 액세스하려면

RSpec.configure 블록 아래에 추가합니다.

# This will include the routing helpers in the specs so that we can use 
# <engine>_path, etc., to get to the routes. 
config.include <RailsEngine>::Engine.routes.url_helpers 

희망이 있습니다.

+0

감사합니다. 그 전에는 "더미"가 "foo"또는 "your-app-name-here"와 같은 자리 표시자가 아닌 실제 것임을 이해하지 못했습니다. 또한 실제 사양을 얻기 위해 경로를 조정해야하기 때문에 몇 가지 작은 버전을 작성했습니다. –

0

레일 엔진에는 환경 파일이있을 수 있지만 필요하지는 않습니다. 응용 프로그램이 다른 응용 프로그램 내부에 (보석처럼) 마운트되어 메인 레일 응용 프로그램 내에서 엔진을 구성하기가 매우 어려울 수 있으므로이 응용 프로그램을 사용하는 것이 좋습니다.

기본 레일 앱에서 구성 할 수있는 yml 파일을 사용하고 해당 레일 앱이 환경 별 구성을 구현할 수 있도록하는 것이 좋습니다. 그렇다고해서 레일 엔진 내부의 환경 환경 파일을 기반으로하는 기본값을 가질 수는 없지만 일반적으로 외부 구성을 허용하기가 더 쉽다는 것을 의미합니다.

관련 문제