Heroku и wicked-pdf libwkhtmltox.so.0 Нет такого файла

Я установил wicked_pdf локально в свое приложение Rails, и оно генерирует PDF-файлы.

Когда я нажимаю его на Heroku и пытаюсь создать PDF-файл, я получаю:

Ошибка команды: / app / bin / wkhtmltopdf: ошибка при загрузке общих библиотек: libwkhtmltox.so.0: невозможно открыть файл общих объектов: нет такого файла или каталога

Я использую Arch. wkhtmltopdf был установлен с помощью pacman и сгенерировал записи в / usr / bin / wkhtmltopdf и /usr/lib64/libwkhtmltox.so.0

wkhtmltopdf копируется в my_rails_app / bin / wkhtmltopdf, и Heroku, похоже, находит его в порядке.

libwkhtmltox.so.0 has been copied to three locations and Heroku still cannot find it.

  • my_rails_app/bin/libwkhtmltox.so.0
  • my_rails_app/lib/libwkhtmltox.so.0
  • my_rails_app/lib64/libwkhtmltox.so.0

    Где Heroku хочет этот файл?

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

    Тест "wkhtmltopdf http://www.google.com google.pdf" работает должным образом на моем локальном компьютере ( он генерирует файл pdf).

    Использование "heroku run bash" вызывает командную строку, подключенную к моему серверу heroku;
    % which wkhtmltopdf
    => / app / bin / wkhtmltopdf

    % which libwkhtmltox.so.0
    => /app/bin/libwkhtmltox.so.0

    % wkhtmltopdf http://www.google.com google.pdf
    => wkhtmltopdf: ошибка при загрузке общего доступа библиотеки: libwkhtmltox.so.0: невозможно открыть файл общих объектов: нет такого файла или каталога


  • person Matt Stevens    schedule 01.02.2015    source источник


    Ответы (2)


    Проблема, похоже, была связана с использованием контейнеров Heroku и моими попытками вырезать и вставить символические ссылки, а не файлы (см. Рисунок). Я бы поблагодарил миньона из Arch, который дал мне нужный мне указатель, но он включал комментарии, намекающие на мои сильно уменьшенные умственные способности и удивление, что я даже смог установить Arch, не говоря уже о разработке на нем. Так что я немного не хочу отдавать ему должное.

    Как это было, с новой информацией мой google foo нашел https://github.com/dscout/wkhtmltopdf-buildpack После удаления моих предыдущих попыток исправления и загрузки Arch pacman этот пакет сборки работал там, где ruby ​​gems и Arch pacman терпели неудачу.

    Я теперь счастливый идиот :-)

    person Matt Stevens    schedule 03.02.2015

    Гем wicked_pdf в основном зависит от введите здесь описание ссылки двоичного файла 'wkhtmltopdf'

    На вашем локальном компьютере просто выполните команду which wkhtmltopdf. Он покажет вам путь, по которому он находится. в моем случае он находится по адресу /usr/local/bin/wkhtmltopdf

    Затем в вашем приложении для разработки проверьте wicked_pdf.rb. Вы должны указать: exe_path в указанное выше место. Ваш синтаксис должен выглядеть примерно так:

    WickedPdf.config = {
      :exe_path => '/usr/local/bin/wkhtmltopdf'
    }
    

    Когда вы переходите к heroku выше двоичного файла, и его конфигурация пути не работает.

    У вас есть две альтернативы:

    1-й способ: Источник: Эта статья.

    Создайте папку bin в корневом каталоге вашего приложения и поместите в нее двоичный файл. Ваш двоичный файл будет находиться по адресу: project_root/bin/wkhtmltopdf-amd64

    Затем сделайте ссылку на: exe_path к этому месту.

    Это может сработать (хотя не пробовал).

    Минусы: размещение двоичных файлов в каталоге проекта - не лучший вариант. Лучшая альтернатива - разместить двоичный файл в AWS или любом облачном сервисе и использовать местоположение пути.

    2-й способ: (реализовал)

    Я избегал иметь этот двоичный файл в heroku, и мне не был предоставлен доступ к облачному сервису. Я использовал гем wkhtmltopdf-heroku Этот гем внутренне использует тот же двоичный файл (wkhtmltopdf). Проверьте папку bin этого драгоценного камня (содержит ту же библиотеку).

    Использование: Добавить следующие драгоценные камни в Gemfile.

       gem 'wicked_pdf'
       gem 'wkhtmltopdf-heroku'
    
    
      config/initializers/wicked_pdf.rb
       #comment out all the :exe_path settings. 
       # our application will be using wkhtmltopdf-heroku gem
       #(which will handle the path settings)
    

    Остальная часть конфигурации Mime и операторы require по-прежнему будут работать.

    Это сработало для меня. Надеюсь, это поможет вам :)

    person Ajay    schedule 05.02.2015
    comment
    По сути, это те инструкции, которым я следовал. Может, я что-то перепутал, в моем случае это не сработало. Спасибо, в любом случае. - person Matt Stevens; 07.02.2015
    comment
    Дайте мне знать, в чем ошибка. некоторая незначительная конфигурация, которую вы упускаете. - person Ajay; 08.02.2015