2013-08-08 2 views
9

JSON-only application을 구축 중이며 기본적으로 더 적은 수의 미들웨어와 더 적은 모듈을 사용하는 더 희귀 한 레일입니다. 이 애플리케이션은 Rails 4에 내장 된 애플리케이션입니다.기본 응용 프로그램과 별도로 ActiveAdmin 또는 RailsAdmin을 사용하여 DRY를 유지하는 방법

main-app 용 데이터베이스의 데이터를 관리 할 수있는 간단한 애플리케이션을 개발하고 싶습니다. 이를 위해 Active Admin 또는 Rails Admin을 사용하고 싶습니다. 하지만 두 옵션 모두 기본 모델과 그 검증, 요구 사항 등을 어떻게 든 사용하여 위에 구축 할 수 있습니다.

이는 적어도 주 애플리케이션과 RailsAdmin 애플리케이션간에 모델을 공유해야한다는 것을 의미합니다.

어떻게하면 좋을까요? 관리 응용 프로그램을 통합하는 대신 주 응용 프로그램 옆에있는 별도의 레일 응용 프로그램에서 구축하는 방법에 대한 좋은 지침이 있습니까?

보조 노트 : 메인 애플리케이션과 별도의 애플리케이션에 관리자를 유지해야하지만 공유 데이터베이스에 관리해야하는 또 다른 이유는 무수히 많은 의존성입니다. ActiveAdmin과 같은 기능이 제공됩니다.

다른 도메인이나 다른 서버에서 관리자를 실행하는 데 관심이 없지만 주로 주 앱을 간결하게 유지하는 데 집중합니다. 그리고 ActiveAdmin과 같은 것의 의존성을 유지하기 위해서, 내 주요 앱에서.


각주 :

  • ActiveAdmin을도 RailsAdmin 어느 자체에서 성능 문제입니다. JSON 전용 레일 앱인 반면에 미들웨어가 필요하다는 것, 모듈, 헬퍼 및 미들웨어가 거의 필요하지 않습니다! Rails-API는 이러한 슬림 스택을 제공합니다. 성능은 관리자 대 관리자가 아니라 전체 - 레일 대 레일 - API에 관한 것입니다.
  • 성능이 내 주요한 문제가 아니며, 종속성과 팽창성이 있습니다! 나는 이제 슬림하고 집중적이며 가느 다란 레일 애플리케이션을 사용하여 대부분의 Sinatra 애플리케이션으로 측정 할 수 있습니다 :). 3 개의 추가 보석 (각자 자신의 종속성이 약간 있음)과 매우 얇은 미들웨어 스택을 통해 매우 쉽게 업그레이드, 관리 및 디버깅 할 수 있습니다.

더 실용적인 : 내가 할 하지 고안을 (그것은 너무 토큰 인증하는 JSON-API의)이, 어떤 뷰 또는 템플릿 엔진을하지 않습니다. Formtastic, 아니 Paperclip, Rmagic, Kminari (호출기) 등등. 내가 "단지 관리자"를 끌어 들일 때 모두 내 앱에 추가됩니다.

+2

나는 당신이 두 응용 프로그램에서 필요로 할 수있는 보석에 모델 클래스를 추출로 보일 것이다. 저는 실제로 이것을 한 적이 없기 때문에 구체적인 조언을 드릴 수는 없지만 이론적으로는 효과가 있습니다. 데이터베이스를 공유해야합니다.yml 파일을 어떻게 든 다운로드하거나 두 위치에서 항상 최신 상태로 유지하십시오. –

+0

힌트를 보내 주셔서 감사합니다. 이것은 실제로 나에게 아주 좋은 해결책처럼 들립니다. – berkes

답변

1

이 블로그 게시물은 흥미로운 접근 방법을 설명합니다.

1

당신은 당신의 휴식 API의 속도에 ActiveAdmin을 같은 도구를 추가하는 영향을 측정 했습니까? 그렇지 않다면 이것은 나에게 조숙 한 최적화의 경우처럼 들린다. 이 API 속도가 정말로드하지만 사용, 당신은 자식 서브 모듈의 모델을 여러 응용 프로그램을 작성하고 공유 할 수있는 라이브러리에 의해 영향을 경우

.

https://content.pivotal.io/blog/migrating-from-a-single-rails-app-to-a-suite-of-rails-engines 그들은 컨테이너로 거의 빈 응용 프로그램을 사용하고 레일 엔진으로 실제 응용 프로그램을 탑재 :

+0

그래, 나도, 거친하고 매우 unscientifically :). 전체 레일 스택을 추가하면 사용중인 메모리 양이 거의 두 배가됩니다. 그것은 시작 시간을 4 배로 만듭니다 (대부분 생산에 관련 없음). 응답 속도가 3 배까지 느려집니다. 그러나 내가 말한 것처럼 거기에 모든 종속성을 갖는 것은 실제로 더 많은 문제입니다. 예를 들어 호환성 문제로 인해 여러 앱이 업데이트 된 적이 있습니다. ActiveAdmin에 필요한 jQuery 버전 또는 RailsAdmin에 필요한 업 로더. – berkes

+0

매우 흥미로운 점은 관리자를 사용할 때 프로덕션 환경에서 느린 응답을 보게된다는 것입니다. 이게 어디서 생긴 것 같아? 하지만 내가 이미 작성한 것과 Zach 역시 지적했듯이, 여러분의 모델을 git submodule이나 gem을 통해 공유 할 수 있습니다. bundler 매우 도움이됩니다. – phoet

+0

phoet 및 기타 : 약간의 각주를 추가하여 성능에 대한 요점을 좀 더 분명하게했습니다. – berkes