2016-10-06 2 views
1

우리의 database.yml은 .gitignore에 추가되므로 devs는 로컬 환경을 사용자 정의 할 수 있으므로 프로덕션 서버에는 ENV['DATABASE_URL']을 사용할 계획입니다. 기본 설정의 경우이 방법이 유용합니다. 그러나 encodingcollation ~ utf8mb4을 구성해야합니다.레일스 5 - ENV DATABASE_URL - 인코딩 및 데이터 정렬 지정

  • 인코딩 : utf8mb4
  • 정렬 : utf8mb4_unicode_ci

나는이 문서에서 ?pool=5 예와 같이 매개 변수를 쿼리를 패딩 시도했지만 작동하지 않는 것 같습니다.

DATABASE_URL=mysql2://user:[email protected]:port/dbname?encoding=utf8mb4&collation=utf8mb4_unicode_ci 

만들어진 테이블은 여전히 ​​기본 인코딩/데이터 정렬을 사용하므로 매개 변수가 작동하지 않는다고 가정합니다. 다른 방법으로 구성 할 수있는 방법이 있습니까? 인코딩 및 데이터 정렬은 모든 환경에서 동일합니다.

요구 사항은 dev 환경은 파일을 가질 수 있지만 prod는 특별한 파일을 추가해서는 안되며 ENV 변수 만 사용해야합니다. 어쩌면이 파일을 application.rb 또는 다른 파일과 같은 config dir 파일에 추가 할 수 있습니까?

미리 감사드립니다.

추신 : 나는 PHP/Python에서 왔기 때문에 Rails와 Ruby (1 주)를 처음 사용합니다.

답변

1

ENV 변수에 구성 옵션을 지정하지 마십시오. 당신은 database.yml을 파일에 이러한 옵션을 깨끗하게 유지하고 지정해야합니다 : 그것은 작동

production: 
    encoding: utf8mb4 
    collation: utf8mb4_unicode_ci 
    pool: 5 

방법은 레일이 DATABASE_URL에서 무엇을 할 수 걸리는 것입니다, 그리고 특정 환경에 database.yml을 구성 옵션을 적용합니다. 자세한 내용을 보려면 다음 링크를 따르십시오. https://devcenter.heroku.com/articles/rails-database-connection-behavior#rails-4-1-and-beyond

+0

그래서 구성 및 ENV 값을 조합하여 일치합니까? 내년에 일하기 위해 돌아 왔을 때 그것을 시도 할 것입니다. (나는 다음 며칠을 의미합니다). : D 고마워! – Lysender

관련 문제