У меня есть класс, называемый «Отчет», и «Отчеты» генерируются с помощью задачи «Рейк». Я также использую Paperclip для изображений (пользовательские аватары), и он загружается в мой ведро S3. Вот вершина отчета модели:Скрепка одного типа приложения не загружается на S3, другие?
require 'csv'
class Report < ActiveRecord::Base
attr_accessible :csv_file, :category
Paperclip.interpolates :category do |attachment, style|
attachment.instance.category.downcase
end
has_attached_file :csv_file,
path: (Rails.env.staging? || Rails.env.production?) ? ":class/:category/:basename.:extension" : ":rails_root/public/system/:class/:category/:basename.:extension"
И мой Paperclip.rb файл следующим образом:
Paperclip.options[:log] = false
Paperclip.options[:command_path] = if Rails.env.dev?
"/usr/local/bin"
else
"/usr/bin"
end
PAPERCLIP_OPTIONS = {
:hash_secret => "HASHSECRETHERE",
:default_url => "http://placehold.it/:style",
:processors => [:thumbnail]
}
PAPERCLIP_STORAGE_OPTIONS = if Rails.env.staging? || Rails.env.production?
{ :storage => :s3,
:s3_credentials => "#{Rails.root}/config/apis/s3.yml",
:s3_permissions => :public_read,
:s3_protocol => :https,
:path => ":class/:attachment/:id_partition/:style/:hash.:extension" }
else
{ :path => ":rails_root/public/system/:class/:attachment/:id_partition/:style/:hash.:extension",
:url => "/system/:class/:attachment/:id_partition/:style/:hash.:extension" }
end
PAPERCLIP_OPTIONS.merge!(PAPERCLIP_STORAGE_OPTIONS)
Она сохраняет отчеты:
/system/reports/csv_files/000/000/002/original/general-report-2013-9-25-T-3-56-PM.csv?1380142571
, а не S3 как и мои аватары:
//s3.amazonaws.com/production/media/avatar-placeholder.gif
Кто-нибудь может понять почему?
Окружающая среда была установлена, параметры были просто переопределены, поэтому, чтобы исправить это, мне пришлось объединить путь. – trevorhinesley