2010-03-29 7 views
0

Ruby on Rails를 사용하여 앱을 만드는 것은 이번이 처음입니다.하나의 레일 앱에 여러 도메인이 있습니다.

로드 된 사이트에 따라 데이터베이스를 전환하고 싶습니다. PHP를 사용하여 나는 http 호스트에서 간단한 strpos를 사용했고 그것에 따라 데이터베이스 이름을 설정했다. 레일로 어떻게 할 수 있습니까?

답변

2

레일스 앱이 프로덕션 모드에서 시작되면 클래스가 사전로드되어 예를 들어 검색합니다. 구성된 데이터베이스의 열 데이터 여러 개의 데이터베이스를 사용하려면이 작업을 중단해야합니다. 문제가 발생할 수있는 것보다 훨씬 많은 문제가 발생할 수 있습니다.

훨씬 쉽게 관리 할 수있는 솔루션은 앱의 사본 두 개 (각 도메인에서 수신 대기)입니다.

레일즈 앱은 일반적으로 단일 데이터베이스를 기반으로 실행되도록 설계되었습니다. 단일 도메인에만 관련된 데이터가있는 경우 데이터가 모두 동일한 데이터베이스에 있어야하지만 관련 모델이 특정 "SiteDomain"모델을 사용하여 컨텐츠를 관리 할 수 ​​있습니다.

0

다른 환경 (예 : domain1_production, domain2_production 등)으로 애플리케이션을 실행할 수 있으므로 모든 도메인의 database.yml 데이터베이스 환경에서 정의 할 수 있습니다. 그러나 각 환경은 메모리에서 자신의 프로세스를 실행해야합니다.

또 다른 해결책은 각 모델에서 before_filter를 설정하고 필요로하는 도메인 설정 데이터베이스 연결을 구문 분석하는 것입니다. 하지만 이것은 이상한 해킹입니다

관련 문제