2014-04-17 3 views
0

rake assets:clean 디렉토리가 public/assets 디렉토리를 완전히 비우는 것을 감안할 때 모델 인스턴스 자산을 저장하는 방법을 파악하는 데 다소 문제가 있습니다.사용자가 업로드 한 저작물을 레일에 저장하는 가장 좋은 곳은 어디입니까?

예를 들어, Carrierwave를 사용하여 여러 버전의 업로드 된 사진을 public/assets/wines/[version]_[wine_name].[ext]에 저장하는 Wine 모델이 있습니다. 이것은 잘 작동합니다. 자산에 쉽게 액세스 할 수 있습니다.

public/assets/*에 저장되었으므로 rake assets:clean을 실행하면 해당 문자가 제거됩니다. 이것에 대해 어떻게해야합니까?

답변

0

대답은 너무 정신이 빠져 나가서 간단하게 생각하지 못했다고 생각할 수 없습니다.

Carrierwave 예 :

같은
# It was this before 
def store_dir 
    "assets/photos#{ '/testing' if Rails.env.test? }" 
end 

# Now it's this 
def store_dir 
    "for/photos#{ '/testing' if Rails.env.test? }" 
end 

즉, 폴더 레이아웃이다

..app/ 
    ../public 
     ../assets # Contains only precompiled assets 
     ../for # Contains only model instance assets 

정규 컴파일 자산 http://mydomain.com/assets/*을 해결 인스턴스 자산 http://mydomain.com/for/*로 확인. 특히 http://assets.mydomain.com이라는 내 자산을 가리키는 하위 도메인이 있으므로 예를 들어 http://assets.mydomain.com/for/wines/some-asset.jpg으로 해석됩니다.

/for 디렉토리에 절대 접근하지 않기 때문에 rake assets:clean의 문제를 해결합니다. 오프 사이트에서 자산을 명시 적으로 호스트 할 필요가 없습니다.

이제 자산을 실제로 제공하기 위해 프로덕션에서 다른 것을 지정해야하는지 여부는 모르겠지만 적어도 개발 중일 때는 작동합니다.

2

나는 방금 내 포트폴리오 사이트에 이것을했습니다. 일종의 관리 패널을 통해 업로드되는 사용자의 저작물이 클라우드에 저장되어야합니다. Amazon S3 버킷과 같은 것. 아마존 웹 서비스 가입.

https://aws.amazon.com/

이 특정 지점까지 무료입니다. 당신이 heroku와 같은 것을 사용한다면 배포를 위해 특별히 사용해야합니다. 그렇지 않으면 다음 커밋에서 제거 할 수 있습니다. 나는 클립을 사용했고 설치가 쉬웠다. Carrierwave는 아마도 유사 할 것입니다.

+0

내가 원한다면 항상 '무료'모델을 사용하고 싶습니다. 대역폭을 확인한 결과 몇 달 후에 S3로 인해 비용이 발생합니다. 내 호스트는 cloudflare.net와 함께 무료 설치를 제공합니다. 내 자산은 assets.mydomain.com에서 호스팅되며 현재 내 응용 프로그램과 동일한 디렉토리를 가리키고 있습니다. assets.mydomain.com을 단순히 자산 호스팅을위한 완전히 별도의 디렉토리로 만들면 문제가 해결되지 않겠습니까? – JakeTheSnake

+0

잘 모르겠습니다. 나는 그런 것을 시도한 적이 없다. 나는 그것이 작동하는지 알기에 흥미가있을 것입니다. – wullaski

+0

내 대답보기 :) – JakeTheSnake

관련 문제