0

Report というクラスがあり、レポートは Rake タスクを介して生成されます。画像 (ユーザー アバター) にも Paperclip を使用しており、S3 バケットに正常にアップロードされます。Report モデルの上部は次のとおりです。

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

誰でも理由がわかりますか?

4

2 に答える 2

0

私の推測では、環境にRAILS_ENV(またはRACK_ENV) が設定されていないため、rakeタスクはdevelopment環境で実行されており、次の行のために s3 に保存されません。

PAPERCLIP_STORAGE_OPTIONS = if Rails.env.staging? || Rails.env.production?

rakeおそらく、次のようにタスクを実行したいと思うでしょう:

RAILS_ENV=production rake do_some_thing
于 2013-09-26T04:08:32.350 に答える
0

次のようにオプションを PAPERCLIP_OPTIONS にマージして修正しました。

  has_attached_file :csv_file, PAPERCLIP_OPTIONS.merge(
    path: (Rails.env.staging? || Rails.env.production?) ? ":class/:category/:basename.:extension" : ":rails_root/public/system/:class/:category/:basename.:extension",
    processors: []
  )
于 2013-09-27T16:32:00.060 に答える