Ошибка маршрутизации Paperclip в Rails 3.1: относится только к новым изображениям - PullRequest
1 голос
/ 01 ноября 2011

У меня, по сути, та же проблема, что и у этого спрашивающего: Ошибка маршрутизации скрепки .Сервер выдает 404 для статического файла (который равен присутствует!), Поэтому вызывается Rails, а затем возникает ошибка маршрутизации.

Приложение My Rails 3.1 использует paperclip для прикрепления файлов,но при обслуживании файлов в рабочей среде Rails регистрирует следующую ошибку:

Started GET "/system/images/9/thumb/Large%20image.jpg?1320149338" for [...]

ActionController::RoutingError (No route matches [GET] "/system/images/9/thumb/Large%20image.jpg"):

Соответствует записи в журнале доступа NGINX:

"GET /system/images/9/thumb/Large%20image.jpg HTTP/1.1" 404 728 "-" [...]

Итак, несколько замечаний:

  • Этого не было в прошлом, и прошлые изображения с почти идентичными URL-адресами все еще работают , например: /system/images/1/thumb/StoneSkimming%20Demyhb%20Art%203.jpg обслуживается правильно.
  • Файлы изображений были загружены, и преобразован ImageMagick, правильно - я проверил, что все ожидаемые файлы находятся в нужном месте и являются допустимыми JPEG-файлами с правильным изображением в них.
  • Разрешения для файлов все, как и ожидалось, и соответствуютфайлы, которые все еще работают.
  • Записи в базе данных для соответствующей модели выглядят корректно.
  • Добавление / удаление строки запроса или размещение URL-адреса непосредственно в браузере дает то же самоерезультат в виде встроенного тега <img>: изображение не найдено.

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

Я использую Capistrano для развертывания, поэтому /public/system является символической ссылкой на общий каталог.Мой инстинкт заключается в том, что это не проблема, поскольку старые изображения в том же месте работают просто отлично.

1 Ответ

1 голос
/ 27 февраля 2012

Мне удалось решить проблемы со скрепкой при развертывании с capistrano в рабочей среде, добавив конфигурацию развертывания capistrano:

namespace :deploy do
  desc "build missing paperclip styles"
  task :build_missing_paperclip_styles, :roles => :app do
    run "cd #{current_path}; RAILS_ENV=production bundle exec rake paperclip:refresh:missing_styles"
  end
end

after("deploy:update_code", "deploy:build_missing_paperclip_styles")

Возможно, есть лучшее решение.

...