2011-10-31 2 views
1

Rails 2.3.x, bundler, nginx, passenger 및 git를 사용하는 웹 사이트가 있으며 동일한 코드를 사용하여 매우 유사한 사이트를 배포하려고합니다. 둘 사이의 차이점은 다음을 포함한다 :여러 Rails 2.3 웹 사이트에 대해 동일한 코드베이스를 사용하여 차이점을 관리하는 방법

  • 로케일
  • 데이터베이스 일부의 경우
  • 하는 검증 경우

이러한 차이를 관리하는 가장 좋은 방법은 무엇입니까에서

  • 뷰 사용하는 동안 같은 코드 기반?

    우리가 가진 한 몇 가지 아이디어 :

    • 새로운 레일 환경과 같은 생산-A생산-B를 만들고 적절한 환경 파일의 차이를 처리합니다. 한 가지 잠재적 인 문제는 많은 보석과 플러그인이 번 생산품을 찾으려고 하드 코딩되어 있다는 것입니다. 또는 번 개발 환경을 찾으십시오.

    • 여객을 사용하여 전역 변수를 설정하거나 요청 당 도메인을 사용하여 사용할 컨텍스트를 결정하십시오. 이 문제는이 상태에 액세스 할 수없는 레이크 작업, cron 작업 등입니다.

    • 두 버전의 config 디렉토리를 유지 관리하십시오. 이것은 모든 설정 파일의 2 가지 버전을 유지하는 것이 불편할 것이며, 그 중 많은 것은 동일 할 것입니다. 또한, 나는 올바르게이 일을하기 위해 자식을 활용하는 방법을 확신합니다.

    모든 아이디어, 팁 또는 예를 들어 주시면 감사하겠습니다. Question #6753275은 관련되어 있지만 불완전한 것으로 보입니다.

  • 답변

    2

    레일즈 2.3.x 프로젝트에서 사용한 한 가지 해결책은 전체 사이트를 engine으로 변환하는 것이 었습니다. 실제로는 매우 쉽습니다. vendor\plugins\ 아래에 폴더를 만들고 거기에있는 모든 app 자료를 이동하십시오. 레일 2.3 here에 대한 설명을 볼 수 있습니다.

    필요하다면 모든 마이그레이션과 물건도 이동할 수 있으며, 레이크 작업 을 사용하여 실행할 수 있습니다.

    그런 다음 엔진을 사용하여 실제 레일 프로젝트에 배치 할 수 있습니다. 따라서 자신의 구성, 로케일 및 일부 로컬 과부 및 하나의 큰 공유 플러그인/엔진으로 두 개의 레일 (프로젝트)을 갖게됩니다.

    다른 프로젝트에서 코드를 동기화하기 위해 git submodules을 사용했습니다.

    레일 3에서는 엔진이 이제 보석 일 수 있기 때문에 더욱 쉽습니다.

    희망이 도움이됩니다.

    +0

    감사합니다. 도움이됩니다. rake + rsync를 사용하여 engine/public의 파일을 일반인에게 복사 했습니까? 우리는 Bundler를 사용하고 있습니다 - Gemfile은 어디에 있습니까? 여러 가지 일들이 여러 사이트에서 중복되는 것처럼 보입니다. – acw

    +0

    글쎄, 플러그인 (레일 2.3.x)로 엔진을 하나의 Gemfile, afaik : 레일 프로젝트에있을 것입니다. 그러나 이것은 단지 추측 일뿐입니다. 나는 번들러가 있기 전에 이것을했다. 보석 (레일 3.x)을 사용하고 있다면, 각 보석은 그들 자신의 보석 파일을 가질 것입니다. 방금 파일을 수동으로 복사했습니다. 약간의 중복이 있지만 문제가되는 부분을 무너 뜨릴 수있는 자유를줍니다. 그리고 가장 중요한 것은 : 당신은 주요 중복을 제거! 코드는 응용 프로그램간에 공유됩니다. – nathanvda

    관련 문제