2014-06-04 2 views
3

카피 스트라 노 보석을 사용한 레일 위의 루비 프로덕션 환경을 가상 사설 서버에 배포하고 있습니다. 나는 배포하려면 다음 명령을 실행하십시오. 내 현재 생산 릴리스에서 작동 어떤 환경 확인하려고하지 않는레일 4 : 생산 대신 Capistrano 개발 환경?

bundle exec cap production deploy 

모든 잘 작동하는 것 같군

한 가지 방법은 내가이 실행하는 것입니다 확인하는 데 사용 :

rails console 
Rails.env 

내가받는 대답은 매우 놀랍다 "개발"입니다. 다른 테스트하는 동안

: 나는 내 현재 릴리스에서 다음을 실행하면

rails db 

내가 mydatabase_development가 생성되지 않는다는 내용의 오류가 발생합니다.

내 응용 프로그램이 잘 돌아가고있는 것 같지만 앞으로 중요한 문제가 발생할 것인지 잘 모르겠습니다. 우선 : 실제 사본이 실제로 개발 중인지 확인하는 방법이 있습니까? 둘째 : 문제가 있다는 것을 감안할 때 프로덕션 환경을 배포하기 위해 어떻게 카피 스트라노를 구성해야합니까?

+0

'rails console'을 실행중인 시스템은 무엇입니까? – tadman

+0

Ubuntu 14.04 배포판이 설치된 VPS에서'rails console'을 실행 중입니다. 명령을 실행하는 디렉토리는'/ var/www/myapp/current /' – hec

답변

4

rails console은 현재 환경에서 RAILS_ENV 또는 RACK_ENV의 지시에 따라 현재 환경에서 작업합니다. 서버에 명시 적으로 설정하지 않으면 기본값은 development 일 것입니다.

이 문제를 해결하는 한 가지 방법은 사용중인 .bash_profile 또는 다른 쉘 프로파일에 강제로 적용하는 것입니다. 예를 들면 다음과 같습니다.

export RAILS_ENV=production 

레일스 쉘을 사용하면 올바르게 작동합니다.

설명 이름으로 config/database.yml에 항목이 없어야하므로 프로덕션 서버에서 개발 모드로 시작할 수 없어야합니다. 가장 좋은 방법은 config/database.yml을 프로덕션 서버에 저장하고 Capistrano를 배포하는 동안이 서버를 옮기는 것입니다.

config/deploy.rb이 추가 :
set :linked_files, %w[ 
    config/database.yml 
] 

그런 다음 당신은 생산을 배포 할 때 제자리에 연결됩니다 shared/config/database.yml 만 설정을 만들 수 있습니다. 배포되지 않도록 버전 제어 시스템에서 config/database.yml을 제외해야합니다.

귀하의 사이트가 아마도 괜찮은 이유는 달리 구성하지 않는 한 Passenger와 같은 런처가 RACK_ENV을 자동으로 production으로 설정하기 때문입니다. 쉘에 영향을주지는 않지만, 기본값은 development입니다.

+0

입니다. 감사. 'config/application.yml' 파일 (configaro 젬의 환경 변수에 사용되는)을 config/database처럼 사용해야합니까?yml 파일? – hec

+0

일반적으로 API 키, 자격 증명, 암호 등을 소스 코드 저장소에 확인하는 것은 좋지 않습니다. 이와 같은 것들은 안전한 백업을 제외하고 서버에서만 안전하게 서버에 저장되어야합니다. 보통 나는 개발자가 커스터마이징 할 수있는 템플릿으로 사용되는'config/database.example.yml' 파일을 만듭니다. 같은 경우'application.yml'과 같은 다른 것들도 있습니다. – tadman