Скрепка ruby ​​на рельсах s3 метод to_file - PullRequest
2 голосов
/ 13 октября 2010

Меня очень смущает вопрос, почему у меня не работает paperclip.

При доступе к ранее сохраненному файлу на s3 для обработки этого метода класса хранения paperclip s3 возникает ошибка:

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

То, что происходит, - это то, что путь разделяется на массив, который затем не принимается File.extname, который возвращает ошибку «невозможно преобразовать массив в строку».

Буду очень признателен за некоторые советы по этому поводу;возможно, мой путь неверен, но я не вижу, как split будет возвращать что-либо, кроме массива, который вызывает ошибку в File.extname.Это отлично работает в разработке, но не на героку, где он работал до прошлых выходных.

Спасибо заранее.

РЕДАКТИРОВАТЬ

Добавили весомую награду за это, которая отражает моюпродолжающееся разочарование.Действительно, если кто-то может помочь мне решить эту проблему, я был бы невероятно благодарен.Я исключил предыдущие сомнения в том, что, возможно, это был репозиторий heroku, заново установив приложение.

Весь соответствующий код, насколько я могу судить:

#photo.rb
has_attached_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: **********************************

1 Ответ

4 голосов
/ 16 октября 2010

За это отвечает ошибка в новейших ревизиях скрепки. Вернитесь к более старой версии (похоже, 2.3.3 не имеет этой проблемы), и это следует исправить.

Вот коммит, в котором была введена ошибка. Кто-то даже заметил, что это, вероятно, ошибка:

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

Моя теория о том, почему это работает локально, но не в Heroku, заключается в том, что путь к файловой системе, которым манипулируют в методе to_file, отличается в каждой среде, и этот путь в Heroku подвержен этой ошибке, но каким-то образом ваш локальный путь плинтус.

...