2012-03-06 1 views
0

레일즈와 함께 Paperclip을 사용하여 Amazon S3에 사진을 업로드하고 응용 프로그램이 Heroku에 배포됩니다.레일, Amazon S3에 클립이 업로드되지만 Amazon RDS에서는 작동하지 않지만 Postgres로 작업합니다.

이제 Heroku (postgres)에서 제공하는 데이터베이스를 사용할 때 업로드가 완벽하게 작동합니다.

그러나 Amazon RDS를 사용하면 업로드가되지 않습니다.

참고 : 응용 프로그램의 나머지 부분이 완벽하게 작동하므로 RDS를 설정하는 데 문제가 없습니다. 단지 사진 업로드가 작동하지 않는 것입니다.

내 생각 엔 paperclip이 그림 테이블에 항목을 넣으려고 할 때 RDS를 사용할 때 데이터베이스에 액세스 할 수 없지만 Heroku가 지정한 Postgres 데이터베이스를 사용할 때 잘 액세스 할 수 있습니다.

아이디어가 있으십니까?

+0

종이 클립이 액티브를 통해 데이터베이스를 사용하여 로그에

Cannot mass assign attribute 'image' 

같은 것을 볼 수 있습니다. 이것은 문제가되지 않는 것 같습니다. production.log에 대해 살펴 보셨습니까? 예외가 있습니까? – iltempo

답변

0

당신이 내 코드에서 예를 들어 attr_accessible로 클립 필드를 선언 한

class VenueImage < ActiveRecord::Base 

    belongs_to :venue 

    has_attached_file :image, 
    :styles => { :large => "1200x900#", :medium => "800x600#", :thumb=> "100x100#" } 

    validates_attachment_presence :image 

    validates_attachment_content_type :image, 
    :content_type => %r{image/.*}, 
    :less_than => 1.megabyte 

    attr_accessible :image 

end 

RDS에서 이건 그냥 거친 추측하고 그것이 포스트 그레스에서 작동 것이 이해가되지 않습니다하지하지만 attr_accessible은 항상 문제를 해결하고 점검 할 가치가 있습니다. 이 문제의 경우, 당신은

+0

그것을 알아 냈습니다. 업로드가 로컬 (mysql)에서 작동하고 RDS (mysql)에서 작동하지 않는 경우. 데이터베이스가 아니라는 것을 깨달았습니다. 로그에 @ picture.save에서 오류가 발생하여 파일을 저장할 때 오류가 있음을 알았습니다. 내가 그림 테이블을 로컬에서 비교했을 때 RDS에서 필드 중 하나가 RDS에서는 NOT NULL로 설정되었지만 로컬에서는 그렇지 않다는 것을 알게되었습니다. 물론 해당 필드를 설정하지 않았기 때문에 오류가 발생했습니다. 필드를 수동으로 로컬로 변경해야하지만 마이 그 레이션을 업데이트하는 것을 잊었습니다. 나쁜 레일 연습 문제 : P. 귀하의 답변을 주셔서 감사합니다 btw – Varun

+0

그러나, 나는 아직도 그것이 어떻게 Postgres에서 일하고 있었는지 이해하지 못합니다. – Varun