开发者

Paperclip ruby on rails s3 to_file method

I'm very confused here as to why paperclip isn't working for me.

When accessing a previously saved file on s3 for processing this method of the paperclip s3 storage class causes an error:

  def to_file style = default_style
    return @queued_for_write[style] if @queued_for_write[style]
    filename = path(style).split(".")
    extname  = File.extname(filename)

What is happening is the path is being split into an array which then isn't accepted by File.extname which returns the error "can't convert Array into String".

I'd really appreciate some advice on this; maybe my path is wrong but I cannot see how split is going to return anything but the array which causes an error on File.extname. This works fine in development but not on heroku where it worked previous to last weekend.

Thank in advance.

EDIT

Have added a weighty bounty on this which reflects my ongoing frustration. Really if someone can help me troubleshoot this I'd be incredibly grateful. I've ruled out previous doubts I had, that maybe it was the heroku repository, by freshly installing the app again.

All pertinent code as far as I can tell:

#photo.rb
has_attac开发者_JAVA百科hed_file :photo,
    :styles => { 
    :list => "150x100#",
    :article => "264>x210",
    :large   => "558>x380",
    :original => "1024>x768"
    },
:storage => :s3,
:s3_credentials => "#{RAILS_ROOT}/config/s3.yml",
:url => ":s3_alias_url",
:s3_host_alias => "files.mydomain.com", #s3 bucket with dns cname record to subdomain
:path => "/photos/:hashed_path/:style/:id.:extension"


#config/s3.rb
bucket: files.mydomain.com
access_key_id: *******************
secret_access_key: **********************************


A bug in the newest revisions of paperclip is responsible for this. Go back to an older version (looks like 2.3.3 doesn't have this problem) and that ought to fix it.

Here's the commit where the bug was introduced. Someone even commented that it was probably a bug:

http://github.com/thoughtbot/paperclip/commit/1fef4c302d076575a1ca9691e01eb96ee9262ebc#commitcomment-166132

My theory for why this works locally but no on Heroku is because the filesystem path that's being manipulated in the to_file method is different in each environment, and the one on Heroku is affected by this bug but somehow your local path is skirting it.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜