簡體   English   中英

使用回形針在Heroku上上傳到S3(delayed_job問題)

[英]Uploading to S3 on Heroku with Paperclip (delayed_job question)

我正在嘗試上傳到我構建的投資組合應用程序,特別是試圖找到將delay_job掛接到流程中的位置。 否則一切正常。 現在,它在app/controllers/portfolio_items_controller.rb:18:in 'create'undefined method 'call' for #<Class:0xae68750>返回undefined method 'call' for #<Class:0xae68750> app/controllers/portfolio_items_controller.rb:18:in 'create'所以這是我的模型以及控制器的那部分...任何人看到的東西可能都是出問題了嗎? 我現在從這個博客獲得的掛鈎: http : //madeofcode.com/posts/42-paperclip-s3-delayed-job-in-rails

/app/controllers/portfolio_items_controller.rb

def create
  @portfolio_item = PortfolioItem.new(params[:portfolio_item])
  if @portfolio_item.save
    flash[:notice] = "Portfolio item created. As soon as files are uploaded Portfolio item will be made live."
    redirect_to @portfolio_item
  else
    render :action => 'new'
  end
end

/app/models/asset.rb

class Asset < ActiveRecord::Base
  attr_accessible :image, :image_file_name, :image_content_type, :image_file_size, :portfolio_item_id, :order

  belongs_to :portfolio_item

  has_attached_file :image,
    :styles => {
      :thumb => "20x20#",
      :small => "100x100",
      :large => "600x600>"
               },
    :storage => :s3,
    :s3_credentials => {
      :access_key_id => ENV["S3_KEY"],
      :secret_access_key => ENV["S3_SECRET"]
                       },
    :bucket => ENV["S3_BUCKET"],
    :path => "portfolio/:attachment/:id/:style/:basename.:extension"

  before_source_post_process do |image|
    if source_changed?
      processing = true
      false
    end
  end

  after_save do |image|
    if image.source_changed?
      Delayed::Job.enqueue ImageJob.new(image.id)
    end
  end

  def regenerate_styles!
    self.source.reprocess!
    self.processing = false
    self.save(false)
  end

  def source_changed?
    self.source_file_size_changed? ||
    self.source_file_name_changed? ||
    self.source_content_type_changed? ||
    self.source_update_at_changed?
  end
end

class ImageJob < Struct.new(:image_id)
  def perform
    Image.find(self.image_id).regenerate_styles!
  end
end

編輯:感謝善良的人們,這不再是缺少的.new了。 但是,現在沒有定義before_source_post_process了嗎? 而且,除了那個博客文章和這個SO問題之外,我找不到其他方法。 還有更合適的東西嗎?

before_source_post_process對您不起作用。 它僅適用於:

has_attached_file :source

在你的情況下應該是

before_image_post_process

同樣,source_changed嗎? 方法應為:

def source_changed?
  self.image_file_size_changed? ||
  self.image_file_name_changed? ||
  self.image_content_type_changed? ||
  self.image_update_at_changed?
end

我認為這:

 @portfolio_item = PortfolioItem.(params[:portfolio_item])

最有可能是這樣的:

 @portfolio_item = PortfolioItem.new(params[:portfolio_item])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM