2010-11-19 2 views
1

하나의 Rails 앱을 여러 가지 다양한 형태로 구현하는 가장 좋은 방법은 무엇입니까?하나의 Rails 앱을 여러 번 구현

화신은 CSS, 이미지, 데이터베이스 및 도메인에 따라 다릅니다. 그렇지 않으면 앱/로직이 완전히 동일합니다. 일부 경로의 공개 경로 이름은 달라질 필요가 있지만 그래도 같은 경로 구조가 될 수 있습니다.

그래서 앱을 한 번 설치하고 환경에서 이러한 변경 사항을 관리 할 생각입니다.

DB는 분명히 이미 잘 설정되어 있습니다. 상상할 수있는 CSS와 이미지 경로는 환경을 인식하기에 충분히 쉬울 것입니다. 이론 상 어쨌든 경로는 너무 어렵지 않아야합니다.

내가이 게시물을 쓰는 이유는이 문제가 해결 되었기 때문입니다. 기존의 "스킨"보석이나 내가 이것을 사용할 수있는 것이 있습니까? 그렇지 않으면, 내 계획된 접근에 대한 의견을 크게 높이 평가 될 것입니다! 제가 레일즈 3을 사용하고 있습니다.

답변

1

왜 개정 관리 시스템에서 별도의 분기를 유지하지 않는 것이 좋을까요?

1

많은 이유는이 목표를 달성하려는 이유에 따라 다릅니다. 우리는 현재 동일한 Rails 애플리케이션의 몇 가지 다른 도메인과 하위 도메인에 4 가지 '앱'을 제공합니다. 우리는 우리 제품의 다른 기능을보고 싶어하는 다른 고객이 있기 때문에 이렇게합니다. 예를 들어 모든 제품은 고객, 계약서, 상인 및 기타 여러 모델에 대한 아이디어를 공유하지만 다르게 브랜드화 된 사이트, 탭 및 메뉴 항목을 다르게 지정하고 사이트의 특정 부분에 특정 사람이 액세스 할 수 없게하려고합니다.

CSS와 이미지를 주요 관심사로 설정 했으므로 그 부분을 계속 강조 하겠지만 다른 문제 및 리소스 중에서도 레이아웃, 인증 및 자바 스크립트를 수정하는 아이디어를 사용해야했습니다.

간단히하기 위해 우리의 경우에는 별도의 제품으로 피부를 부를 것입니다.

우리 애플 리케이션은 들어오는 도메인을 기반으로 몇 가지 환경 변수를 설정하는 플러그인이 있습니다. 그런 다음이 변수를 기반으로 Rails 앱은 다른 레이아웃과 부분을 적절하게 제공합니다. 이 레이아웃은 디자이너와 프론트 엔드 개발자에게 적합한 위치에 저장되어있는 적절한 JS와 이미지를 참조합니다. 예를 들어 customer.js는 일반적인 고객 작업을 저장할 수 있으며 하위 디렉토리에는 스킨에 대한 customer.js가있을 수 있으며 main.js 파일을 확장합니다 (Dojo를 사용하여이 작업을 수행합니다).

보안이 중요한 다른 영역에는 도메인 젬에서 설정 한 환경 변수를 기반으로 필요한 것을 수행하는 라이브러리가 있습니다.

또한 동적 인 브랜딩을 제공해야하기 때문에 이러한 뷰와 레이아웃에는 도해가있는 이미지를 어디에서 가져올 지 결정하는 데 도움이되는 도우미가 있습니다.

CSS의 경우 SASS를 사용하므로 색과 이미지에 믹스 인을 사용할 수 있습니다. 우리는 색상과 이미지에 대한 변수를 사용하는 레이아웃 정보가있는 루트 SASS 파일을 사용하여이 작업을 수행합니다. 그런 다음 필요에 따라 컬러 파일과 이미지 파일을 루트 SASS에 넣어야합니다.

두 스킨을 어떻게 결정하는지에 대한 정보를 제공하면 대답이 더 나을 수 있습니다. 내가 아는 한 이미 도메인 플러그인이있어 사용자가 액세스하려는 사이트를 결정하는 데 도움이 될 수 있습니다. 올바른 CSS, 이미지, JS 등을 렌더링하기 위해 애플리케이션을 구성하는 방법에 관해서는 내가 간략하게 설명한 부분이 조금 도움이된다.

관련 문제