2010-10-13 7 views
2

Я очень смущен здесь, почему скрепка не работает для меня.Скрепка рубин на рельсах s3 to_file метод

При обращении к ранее сохраненный файл на s3 для обработки этого метода класса скрепка хранения 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, который возвращает ошибку «не может преобразовать Array в String».

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

Благодарим заранее.

EDIT

Добавили весомую награду за это, которое отражает мое постоянное разочарование. Действительно, если кто-то может помочь мне устранить это, я был бы невероятно благодарен. Я исключил предыдущие сомнения, что, возможно, это репозиторий 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: ********************************** 
+0

Этот код выглядит неправильно. Можно ли создать минимальное тестовое приложение, демонстрирующее проблему, и поместить его в github? – kch

+0

К сожалению, нет. Это не может быть ошибкой с paperclip, откуда пришел этот код, так как он отлично работает в разработке. Не будучи в состоянии воспроизвести ошибку локально, я очень ранен, чтобы быть честным. Я скоро опубликую целую кучу кода. – mark

+0

Я планирую запустить приложение на heroku с s3. (Я приехал сюда из вашего бланка поддержки zendesk. Извините, но это было неясно.) – kch

ответ

4

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

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

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

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

+0

О, мой ... у вас не было: O – mark

+0

Продолжайте движение, это стало самым забавным потоком, который я прочитал в Stack Overflow за несколько дней. – pjmorse

Смежные вопросы