2012-10-28 5 views
4

heroku에서 내 레일 앱을 사용하려면 모든 것이 Amazon (자산, 데이터베이스, 업로드) 일 수 있도록해야합니다.amazon 클라우드에서 heroku 앱의 자산을 저장하는 레일

자산이 나를 가장 많이 괴롭 히고 있습니다 ... Heroku 도움말 파일은 파일을 덤프 할 버킷을 만들고, http://s3.amazonaws.com/bucketname/filename이라고 말합니다.

  1. 내가 .gitignore 로컬 개발하고 내 모든 참조를 닦고 후 내 AWS 버킷에 해당 파일을 업로드 확인하기 위해 자산을 보지하거나 수 : 이것은 나에게 두 (내가 생각할 수있는) 개발을위한 옵션을 제공합니다 좀 도와 줘?
  2. 항상 내 버킷에 모든 것을 저장하고 로컬 개발 중에 내 버킷을 호출해야합니다.

내가 로컬로 app/assets 폴더에 앱 자산을 저장할 수 있고 heroku로 푸시/배포 할 때 자산을 아마존에 자동으로 푸시 할 수 있는지 궁금합니다.

이것은 아마존과의 첫 번째 헤로큐 레일 앱이므로이 물건을 구성하고 올바른 작업 흐름을 파악하는 방법에 대한 내 정보를 모욕하지 않아도됩니다.

감사합니다.

답변

2

asset_sync gem을 사용해보십시오. 그러면 원하는대로 정확하게 할 수 있습니다. 자산 파이프 라인을 로컬로 사용한 다음 Heroku로 이동 한 후 S3 (선택 사항 : Cloudfront를 통해)에서 자산을 제공합니다.

Heroku의 컴파일 단계는 일반적으로 구성 변수에 대한 액세스를 제공하지 않으므로 asset_sync에 대해 S3로 푸시하기 위해 이러한 구성 변수가 필요합니다. 이것 (사실 asset_sync 전체 HOWTO)에 대한 해결책은 Using a CDN Asset Host with Rails 3.1 가이드에 게시되어 있습니다.

이 접근법의 단점은 구체적으로 "빌드, 릴리스, 실행"과 관련이있는 12 factor app 원칙 중 일부를 위반한다는 것입니다. 예를 들어 heroku releases:rollback은 애플리케이션을 롤백하지만 은 아니며 애셋을 다시 컴파일하고 다시 업로드합니다.

0

레일 3에서는 Rails assets pipeline을 사용하여 에셋에 대해 다른 구성을 사용할 수 있습니다.

ActionController::Base.asset_host = "/path/to/s3/bucket" 

로컬, 당신은 레일 서버에서 직접 자산을 제공하기 위해 계속 : 기본적으로 당신의 config/environments/production.rb 파일에 당신이 그런 짓을. 배포와 관련하여 aws-s3 보석을 사용하여 레이크 작업을 작성하거나 capistrano을 사용하여 자동화 할 수 있어야한다고 생각합니다. 또 다른 옵션은 CDN을 사용하고 프로덕션 서버에서 자산을 검색하도록 구성하여 별도로 배포 할 필요가 없도록하는 것입니다.

+0

나는 지금 내가 rake 작업이나 capistrano 제조법을 쓰는 능력이 있다고 생각하지 않는다. (방향을 알려줘서 고마워, production.rb 파일 편집은 내 참조로 도움을 줄 것이고 나는 갈퀴와 카피 스트라 노에 대한 더 많은 연구를해라. – twinturbotom

관련 문제