0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

RailsでPDFを作成する Ferrum で Ferrum::ProcessTimeoutError がでたときに疑うこと

Posted at

Ferrum gem は Rails で PDF を作成する便利 Gem です。Chromium で動作します。
しかし、手元の環境(WSL2)では問題なく動作したのですが Ubuntu Server では動作せず以下のエラーが発生しはまったので対策を共有します。

Ferrum::ProcessTimeoutError (Browser did not produce websocket url within 10 seconds, try to increase :process_timeout. See https://github.com/rubycdp/ferrum#customization):

環境

結論

以下のコマンドで非rootユーザーでもログインしていなくてもサービスを実行するようにしておくと動作します。

sudo loginctl enable-linger アプリ実行ユーザ

このコマンドの help は Enable linger state of one or more users です。

背景

いろいろ設定が標準的ではないのですが設定など共有しておきます。
Rails内では以下のように browser を設定していた。

    browser = Ferrum::Browser.new(
      browser_path: '/usr/bin/chromium-browser',
      browser_options: { 'no-sandbox': nil }
    )

sudo apt install chromium-chromedriver でインストールします。

しかし、ためしに chromium-browser を実行するとこんなメッセージが出て実行されません。

$ chromium-chromedriver --version
/user.slice/user-2.slice/session-12345.scope is not a snap cgroup

id 2 はアプリ実行ユーザに su するまえの別ユーザです。以下のようにすると動作します。

$ sudo loginctl enable-linger deploy

$ chromium-chromedriver --version
/usr/bin/chromium-browser: 12: xdg-settings: not found
Chromium 132.0.6834.110 snap

ちょっとこのへんの背景の権限まわりの理解が浅いままできょうしゅくですが、Ferrum や Chromium のサイト( https://www.chromium.org/Home/ )では標準的なインストール・利用方法がなくはまり、Ferrum のエラーメッセージから原因特定に手間取ったため、どなたかの参考になればと共有します。

なにか根本的な勘違いをしているなどあればお知らせください。

あとで検索すると、こんなQAもありました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?