Изображение refinerycms не загружается - ошибка стрекозы

Я работаю над разработкой приложения rainerycms rails, которое работало хорошо локально, и теперь я переместил его на свой VPS, и у меня возникли проблемы с изображениями, которые я загружал через refinerycms, не загружая, и я читал, что мне нужно обновить моя версия imagemagick. Я обновился с 6.2.8 до 6.7.8. Теперь все изображения загружаются на некоторых страницах, но не на стороне администратора.

Что вызывает эту проблему? Вот трассировка стека ошибки.

Dragonfly::Shell::CommandFailed (Command failed (convert '/var/www/vhosts/tomstestsite.us/PersonalTrainingKT/public/system/refinery/images/2012/06/03/16_36_48_339_pamLemke_after.jpg' '-resize' '225x255>' '/tmp/dragonfly20120705-7812-1xb3pce') with exit status 127):
  dragonfly (0.9.12) lib/dragonfly/shell.rb:29:in `raise_shell_command_failed'
  dragonfly (0.9.12) lib/dragonfly/shell.rb:23:in `run'
  dragonfly (0.9.12) lib/dragonfly/image_magick/utils.rb:17:in `convert'
  dragonfly (0.9.12) lib/dragonfly/image_magick/processor.rb:103:in `convert'
  dragonfly (0.9.12) lib/dragonfly/image_magick/processor.rb:27:in `resize'
  dragonfly (0.9.12) lib/dragonfly/image_magick/processor.rb:87:in `thumb'
  dragonfly (0.9.12) lib/dragonfly/function_manager.rb:39:in `call'
  dragonfly (0.9.12) lib/dragonfly/function_manager.rb:39:in `block (2 levels) in call_last'
  dragonfly (0.9.12) lib/dragonfly/function_manager.rb:38:in `catch'
  dragonfly (0.9.12) lib/dragonfly/function_manager.rb:38:in `block in call_last'
  dragonfly (0.9.12) lib/dragonfly/function_manager.rb:37:in `each'
  dragonfly (0.9.12) lib/dragonfly/function_manager.rb:37:in `call_last'
  dragonfly (0.9.12) lib/dragonfly/processor.rb:5:in `process'
  dragonfly (0.9.12) lib/dragonfly/job.rb:79:in `apply'
  dragonfly (0.9.12) lib/dragonfly/job.rb:253:in `block in apply'
  dragonfly (0.9.12) lib/dragonfly/job.rb:253:in `each'
  dragonfly (0.9.12) lib/dragonfly/job.rb:253:in `apply'
  dragonfly (0.9.12) lib/dragonfly/response.rb:25:in `to_response'
  dragonfly (0.9.12) lib/dragonfly/server.rb:43:in `block in call'
  dragonfly (0.9.12) lib/dragonfly/server.rb:39:in `catch'
  dragonfly (0.9.12) lib/dragonfly/server.rb:39:in `call'
  dragonfly (0.9.12) lib/dragonfly/middleware.rb:11:in `call'
  rack-cache (1.2) lib/rack/cache/context.rb:136:in `forward'
  rack-cache (1.2) lib/rack/cache/context.rb:245:in `fetch'
  rack-cache (1.2) lib/rack/cache/context.rb:185:in `lookup'
  rack-cache (1.2) lib/rack/cache/context.rb:66:in `call!'
  rack-cache (1.2) lib/rack/cache/context.rb:51:in `call'
  rack-cache (1.2) lib/rack/cache/context.rb:136:in `forward'
  rack-cache (1.2) lib/rack/cache/context.rb:245:in `fetch'
  rack-cache (1.2) lib/rack/cache/context.rb:185:in `lookup'
  rack-cache (1.2) lib/rack/cache/context.rb:66:in `call!'
  rack-cache (1.2) lib/rack/cache/context.rb:51:in `call'
  actionpack (3.2.3) lib/action_dispatch/middleware/reloader.rb:65:in `call'
  actionpack (3.2.3) lib/action_dispatch/middleware/remote_ip.rb:31:in `call'
  actionpack (3.2.3) lib/action_dispatch/middleware/debug_exceptions.rb:16:in `call'
  actionpack (3.2.3) lib/action_dispatch/middleware/show_exceptions.rb:56:in `call'
  railties (3.2.3) lib/rails/rack/logger.rb:26:in `call_app'
  railties (3.2.3) lib/rails/rack/logger.rb:16:in `call'
  actionpack (3.2.3) lib/action_dispatch/middleware/request_id.rb:22:in `call'
  rack (1.4.1) lib/rack/methodoverride.rb:21:in `call'
  rack (1.4.1) lib/rack/runtime.rb:17:in `call'
  activesupport (3.2.3) lib/active_support/cache/strategy/local_cache.rb:72:in `call'
  rack (1.4.1) lib/rack/lock.rb:15:in `call'
  actionpack (3.2.3) lib/action_dispatch/middleware/static.rb:62:in `call'
  railties (3.2.3) lib/rails/engine.rb:479:in `call'
  railties (3.2.3) lib/rails/application.rb:220:in `call'
  railties (3.2.3) lib/rails/railtie/configurable.rb:30:in `method_missing'
  passenger (3.0.11) lib/phusion_passenger/rack/request_handler.rb:96:in `process_request'
  passenger (3.0.11) lib/phusion_passenger/abstract_request_handler.rb:513:in `accept_and_process_next_request'
  passenger (3.0.11) lib/phusion_passenger/abstract_request_handler.rb:274:in `main_loop'
  passenger (3.0.11) lib/phusion_passenger/classic_rails/application_spawner.rb:321:in `start_request_handler'
  passenger (3.0.11) lib/phusion_passenger/classic_rails/application_spawner.rb:275:in `block in handle_spawn_application'
  passenger (3.0.11) lib/phusion_passenger/utils.rb:479:in `safe_fork'
  passenger (3.0.11) lib/phusion_passenger/classic_rails/application_spawner.rb:270:in `handle_spawn_application'
  passenger (3.0.11) lib/phusion_passenger/abstract_server.rb:357:in `server_main_loop'
  passenger (3.0.11) lib/phusion_passenger/abstract_server.rb:206:in `start_synchronously'
  passenger (3.0.11) lib/phusion_passenger/abstract_server.rb:180:in `start'
  passenger (3.0.11) lib/phusion_passenger/classic_rails/application_spawner.rb:149:in `start'
  passenger (3.0.11) lib/phusion_passenger/spawn_manager.rb:219:in `block (2 levels) in spawn_rails_application'
  passenger (3.0.11) lib/phusion_passenger/abstract_server_collection.rb:132:in `lookup_or_add'
  passenger (3.0.11) lib/phusion_passenger/spawn_manager.rb:214:in `block in spawn_rails_application'
  passenger (3.0.11) lib/phusion_passenger/abstract_server_collection.rb:82:in `block in synchronize'
  <internal:prelude>:10:in `synchronize'
  passenger (3.0.11) lib/phusion_passenger/abstract_server_collection.rb:79:in `synchronize'
  passenger (3.0.11) lib/phusion_passenger/spawn_manager.rb:213:in `spawn_rails_application'
  passenger (3.0.11) lib/phusion_passenger/spawn_manager.rb:132:in `spawn_application'
  passenger (3.0.11) lib/phusion_passenger/spawn_manager.rb:275:in `handle_spawn_application'
  passenger (3.0.11) lib/phusion_passenger/abstract_server.rb:357:in `server_main_loop'
  passenger (3.0.11) lib/phusion_passenger/abstract_server.rb:206:in `start_synchronously'
  passenger (3.0.11) helper-scripts/passenger-spawn-server:99:in `<main>'

ОБНОВИТЬ

Я добавил приведенный ниже код в свой файл config/application.rb, как это было предложено здесь, и это помогло показать некоторые файлы, но я все еще не могу загрузить файл через приложение, и часть этой трассировки стека показана ниже,

config/application.rb содержит это

initializer 'override-image-magick-paths', :after => 'attach-refinery-images-with-
    dragonfly' do
      app=Dragonfly[:refinery_images]
      app.configure_with(:imagemagick)
      app.configure do |c|
        c.convert_command = "/usr/local/bin/convert"          # defaults to "convert"
        c.identify_command = "/usr/local/bin/identify"        # defaults to "identify"
      end
    end

трассировки стека

 Dragonfly::Shell::CommandFailed (Command failed (identify '/tmp/RackMultipart20120708-20096-4m1k9j') with exit status 127):
      dragonfly (0.9.12) lib/dragonfly/shell.rb:29:in `raise_shell_command_failed'
      dragonfly (0.9.12) lib/dragonfly/shell.rb:23:in `run'
      dragonfly (0.9.12) lib/dragonfly/image_magick/utils.rb:34:in `raw_identify'
      dragonfly (0.9.12) lib/dragonfly/image_magick/utils.rb:24:in `identify'
      dragonfly (0.9.12) lib/dragonfly/image_magick/analyser.rb:44:in `format'
      dragonfly (0.9.12) lib/dragonfly/function_manager.rb:39:in `call'
      dragonfly (0.9.12) lib/dragonfly/function_manager.rb:39:in `block (2 levels) in call_last'
      dragonfly (0.9.12) lib/dragonfly/function_manager.rb:38:in `catch'
      dragonfly (0.9.12) lib/dragonfly/function_manager.rb:38:in `block in call_last'
      dragonfly (0.9.12) lib/dragonfly/function_manager.rb:37:in `each'
      dragonfly (0.9.12) lib/dragonfly/function_manager.rb:37:in `call_last'
      dragonfly (0.9.12) lib/dragonfly/analyser.rb:25:in `analyse'
      dragonfly (0.9.12) lib/dragonfly/job.rb:247:in `analyse'

4 ответа

Решение

Я создал символическую ссылку из /usr/bin/convert -> /usr/local/bin/convert и из / usr / bin / identifier -> /usr/local/bin/identifier, и это, похоже, решило мои проблемы.

$ cd /usr/bin
$ ln -s /usr/local/bin/convert convert
$ ln -s /usr/local/bin/identify identify 

Я предполагаю, что стрекоза все еще не определяет мое местоположение конвертирования и идентификации, хотя я указал это в своем файле config/application.rb.

Я просто переустановил imagemagick, и это сработало.

Возможно, вам придется предоставить полный путь к convert:

config/initializers/dragonfly.rb:

app.configure do |c|
  c.convert_command = "/usr/bin/convert"
end

+ Изменить /usr/bin/convert на правильный путь к convert, который вы можете узнать, запустив whereis convert на вашей оболочке VPS.

Более подробно в документации.

Попробуйте установить гем refinery-images:

Gemfile:
   gem 'refinerycms-page-images', '~>1.0.3' //refinery v1 compatible (v2 available also)

Тогда в вашей модели:

belongs_to :imagesizeyouwant, :class_name => 'Image'

Если вы посмотрите на класс Image, вы увидите довольно хорошую настройку для обработки изображений. Вы можете добавить размеры изображения на странице настроек Refinery в инструменте администратора. Если у вас есть собственный движок, просто измените:imagesizeyouwant на этот размер (мой был:thumbnail).

Когда вы публикуете изображение, посмотрите на вывод команды идентификации и попробуйте запустить его самостоятельно. Скорее всего, ваша система имеет другие параметры, которые она использует для двоичных файлов ImageMagick, или что отправляемые ей измерения не поняты. Попробуйте опубликовать вывод фактической команды, вызываемой Dragonfly в оболочке, чтобы мы могли лучше рассмотреть.

Другие вопросы по тегам