2012-01-04 7 views
0

약간의 차이점을 제외하고 소스 코드가 매우 비슷한 레일 사이트를 관리합니다. 대부분 차이점이 있지만 데이터베이스에 존재하지는 않습니다. 각 사이트가 기본 소스 코드를 대체하는 사용자 정의 파일에있는 모든 소스 코드 차이와 동일한 기본 소스 코드를 갖기를 바랍니다. 예를 들어, 한 사이트에서 사진 콘테스트가 진행되는 경우 해당 사이트는 다른 사이트에는없는 특정보기 파일을 갖지만 모든 기본보기 파일은 동일한 콘테스트가있는 파일 만 덮어 쓰게됩니다. 이것이 Rails Engines의 과제일까요? 그렇지 않다면 (또는 더 좋은 방법이 있다면), 어떻게 할 것입니까?기본 레일즈 코드 오버라이드

감사합니다.

편집 : 여기 또 다른 예가 있습니다. 하나의 사이트 (내가 관리하는 세 곳 중 하나)는 특정 페이지에 특수 텍스트가 있어야합니다. 세 사이트의이 페이지에 대한보기가 동일하게 유지되도록하고이보기를 표시할지 여부를 결정하는보기에 조건부 코드를 갖고 싶지 않습니다. 오히려 기본보기를 재정의하는 변형 사이트에 대한 별도의보기를 선호합니다 (사이트 간 차이점을 쉽게 관리 할 수 ​​있음).

+0

더 확실한 예를 제공해주십시오. –

+0

새로운 예가 추가되었습니다. – modulaaron

답변

0

질문에 대한 즉각적인 답변 (아래 참조). 질문에 대한 설명이 길면 길수록 http://edgeguides.rubyonrails.org/engines.html#overriding-views입니다. 아직도 질문이 있으면 알려주세요 (엔진은 취미입니다).

app1 
|- app/views/photo_contests 
|      |- index.html.erb # => custom view template #1 
| 
\- Gemfile (gem 'common_engine') 

app2 
|- app/views/photo_contests 
|      |- index.html.erb # => custom view template #2 
| 
\- Gemfile (gem 'common_engine') 


common_engine 
| 
|- app/controllers/PhotoContentsControllers.rb 
|      |- index 
|      |- show 
|      |- vote 
| 
|- app/models/photo_contest.rb 
| 
|- app/views/photo_contents 
|      |- index.html.erb 
|      |- show.html.erb 
|      |- vote.html.erb 
|- config/routes.rb 
|- lib/common_engine/engine.rb 
|- lib/common_engine.rb 
\- common_engine.gemspec 
+0

귀하의 회신은 완벽한 의미로 작성되었습니다 - 감사합니다! – modulaaron

관련 문제