0

레일 설정 보석과 클립 클립의 조합을 사용하여 데이터베이스의 S3 자격 증명을 (앞면의 인터페이스를 통해) 지정할 수 있도록 응용 프로그램을 설정했습니다 end) 그런 다음 첨부 파일을 이와 같이 선언 할 수 있습니다.레일에서 시작시 데이터베이스에서 S3 자격 증명 얻기

class Asset < ActiveRecord::Base 

has_attached_file :attachment, 
    :default_url => "content/no-img.jpg", 
    :s3_credentials => { 
    :access_key_id => Settings.AWS_ACCESS_KEY_ID, 
    :secret_access_key => Settings.AWS_SECRET_ACCESS_KEY 
    } 

위대한 작품이지만, 응용 프로그램에서 유일한 유형의 첨부 파일이 아닙니다 (클라이언트 로고와 같은 다른 것들이 있습니다). 나는 각각에 대해 S3 자격 증명을 지정해야한다는 것을 알고 있습니다. 나는 이미 앱 설정 파일에 디폴트 값들을 넣었다.

class Application < Rails::Application 

#Paperclip Defaults 
config.paperclip_defaults = 
{ 
    :storage => :s3, 
    :bucket => "my-bucket-name" 
} 

위의 내용은 모두 훌륭하지만, 사용자 이름과 암호를 앱 구성으로 끌어 내려하면 다음과 같은 오류가 발생합니다.

ActiveRecord::ConnectionNotEstablished (ActiveRecord::ConnectionNotEstablished) 

아주 자명 한 오류 메시지이지만 어떻게 해결할 수 있습니까? 환경 파일에 config를두면 같은 문제가 발생합니다. 그리고이 파일을 이니셜 라이저에 넣으면 다음과 같이됩니다.

#Paperclip Defaults 
MyApp::Application.config.paperclip_defaults = 
{ 
    :storage => :s3, 
    :bucket => "my-bucket-name", 
    :s3_credentials => { 
    :access_key_id => RailsSettings::Settings.AWS_ACCESS_KEY_ID, 
    :secret_access_key => RailsSettings::Settings.AWS_SECRET_ACCESS_KEY 
    } 
} 

그런 다음 값이 선택되지 않은 것 같고 클립 클립이 내 로컬 시스템 디렉토리에 파일을 저장하는 것으로 다시 설정됩니다. 이 문제를 해결하는 가장 좋은 방법에 대해 조언 해 줄 수 있습니까?

EDIT 그래서 설명서를 다시 읽은 후 나는 전체 활성 기록로드 문제가되지 않는 주변 얻는다 "후 이니셜 라이저"를 발견했다. 나는 내 애플 리케이션 설정에서 이것을 가지고있다.

config.after_initialize do 

    #Paperclip Defaults 
    config.paperclip_defaults = 
    { 
    :storage => :s3, 
    :bucket => "my-bucket-name", 
    :s3_credentials => { 
     :access_key_id => RailsSettings::Settings.AWS_ACCESS_KEY_ID, 
     :secret_access_key => RailsSettings::Settings.AWS_SECRET_ACCESS_KEY 
    } 
    } 
end 

그리고 각 모델에서 이것을 지정하십시오.

has_attached_file :attachment, 
    :default_url => "content/no-img.jpg", 
    :path => "#{Rails.env}/:client_name/#{DateTime.now.year}/:name/:basename/:basename-:style.:extension" 

아직 여전히 사용자가 지정한 기본값을 따기되지

+0

체크 아웃 http://stackoverflow.com/questions/16875619/image-seems-to-be-added-to-bucket-cant-view-it-on-my-app/16936923#16936923의 이것은 당신을 위해 작동합니다. – bunty

+0

다른 문제는 두려워요. –

답변

1

오른쪽이, 분류 (여전히 공공/시스템 폴더에 넣어 시도). 누구나이 문제가있는 경우 여기에 해결책이 있습니다 (구성을 설정하기 전에 기본적으로 "초기화 프로그램"방법을 사용하여 활성 레코드를 전환해야합니다).

initializer "active_record.initialize_database" do |app| 
    app.config.paperclip_defaults = 
    { 
     :storage => :s3, 
     :bucket => "my-bucket-name", 
     :s3_credentials => { 
     :access_key_id => RailsSettings::Settings.AWS_ACCESS_KEY_ID, 
     :secret_access_key => RailsSettings::Settings.AWS_SECRET_ACCESS_KEY 
     } 
    } 
end