Schmooze :: Процесс не удался + при использовании grover gem для преобразования html2pdf - PullRequest
1 голос
/ 18 марта 2020
respond_to do |format|
        format.html
        format.pdf do
          grover = Grover.new('http://localhost:3000/generate_report', format: 'A4')
          pdf = grover.to_pdf
          File.open(Rails.root.join('report.pdf'),'wb', encoding: 'ascii-8bit') { |f| f.write(pdf)}

        end
      end

Мне нужно конвертировать мою html страницу в pdf. Но я получаю "сбой процесса schmooze", и система зависает, когда он делает grover.to_pdf. Это хорошо работает на терминале, но не в моем проекте рельсов.

1 Ответ

1 голос
/ 20 марта 2020

Похоже, ваша система зависает, потому что когда вы запускаете Rails в режиме разработки по умолчанию, вы работаете только с 1 потоком.

Когда вы находитесь внутри своего запроса и пытаетесь нажать generate_report конечная точка, вы ставите запрос в очередь и ожидаете его ответа, однако, поскольку Rails может обслуживать только один запрос за раз, ответ никогда не приходит, поэтому запрос никогда не заканчивается, вызывая тупик.

Попробуйте получить HTML для отчета без создания веб-запроса, путем заполнения шаблона или вызова ActionController.render() и использования его вместо этого.

Если это не вариант, настройте сервер Rails на использование нескольких потоков в режим разработки (я рекомендую использовать Puma в режиме разработки или в любом другом режиме).

...