레일 설정 보석과 클립 클립의 조합을 사용하여 데이터베이스의 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"
아직 여전히 사용자가 지정한 기본값을 따기되지
체크 아웃 http://stackoverflow.com/questions/16875619/image-seems-to-be-added-to-bucket-cant-view-it-on-my-app/16936923#16936923의 이것은 당신을 위해 작동합니다. – bunty
다른 문제는 두려워요. –