2012-05-12 2 views
2

다음은 시나리오입니다. 여러 Rails 앱에서 특정 모델을 공유해야하는 작은 폐쇄 소스 프로젝트입니다. 기본적으로 한 가지 DB와 여러 가지 앱 읽기/쓰기가 서로 다른 방식으로 이루어 지지만 동일한 인터페이스를 통해 이루어집니다. 이 DAL에 대한 코드를 한 곳에서만 구현하고 필요로하는 모든 프로젝트와 어떻게 든 공유하고 싶습니다.레일 코드 공유 : gem vs plugin vs submodule?

최신 Rails 버전에서 VCS로 git를 사용한다고 가정 할 때 최적의 방법은 무엇입니까? 여러분이 항상 읽는 세 경쟁자는 보석 (여러분이 여러분의 보석 서버를 주었을 때 내부 용으로 만 만들어 질 수 있음을 이해합니다), 레일즈 플러그인과 자식 서브 모듈입니다.

세 가지 옵션을 모두 고려해 볼 때 왜 다른 옵션을 선택해야하는지에 대한 개요를 찾을 수 없었습니다. 여러분이 저를 도울 수 있기를 희망했습니다!

감사합니다.

답변

3

보석을 사용하여 응용 프로그램에 묶는 것이 좋습니다. 우리는 여러 개인 보석을 사용하여 vendor/cache 디렉토리에 보관합니다.

플러그인은 더 이상 사용되지 않으며 제거됩니다. (나는 레일즈 4.0을 제거하겠다고 믿는다.) 또한 경고가 발생한다.

하위 모듈을 사용하는 것은 흥미로운 아이디어이지만 여전히 보석을 고수 할 것입니다.

+0

이 안내서는 비공개 보석을 공유하기 위해 귀하의 팀이 수행하는 것입니까? http://www.cerebris.com/blog/2011/03/15/creating-and-managing-private-rubygems-with-jeweler-github-and-bundler/ –

+0

우리는 github에서 저장소를 호스팅하지만 보석 자체 'gem build'를 통해 빌드 된 다음 응용 프로그램에 직접 포함되므로 번들 설치는 매번 github을 사용하지 않고 해당 버전을 사용합니다. [번들 패키지] (http://gembundler.com/bundle_package.html)에서 응용 프로그램의 보석을 캐시하는 방법을 살펴보십시오. – x1a4

2

일부 일반적인 코드를 보석으로 캡슐화하는 것은 오늘날의 좋은 습관입니다. Gemfury이 있는데, 개인 보석을 저장하는 서비스를 제공하는 "개인용 보석 클라우드 서버"로 선전합니다.