HippoBlog
Web開発に関する備忘録や
日々の雑記ブログ
  • #Ruby on Rails
  • 2020年2月12日
ENTRY TITLE

[Rails] chrome-driver動いてない問題

TEXT BY @hippohack@hippohack
TEXT BY @hippohack@hippohack
  • このエントリーをはてなブックマークに追加

個人開発WebアプリのHippoMarks(クラウドブックマークサービス)開発時の話です。そのため、環境やファイル名は一般的なものではないので適宜置き換えが必要です。

ブックマークしたサイトのキャプチャを取ってくる機能があるのですが、本番環境で動いてない事象にあたった際のログです。

😱本番環境で動いてない問題が発生

Bookmark.get_site_capture('https://blog.hippohack.me')
Traceback (most recent call last):
        3: from (irb):1
        2: from app/models/bookmark.rb:73:in `get_site_capture'
        1: from app/models/concerns/capture.rb:21:in `get_screenshot'
Errno::ENOENT (No such file or directory - /app/.apt/usr/bin/google-chrome)
irb(main):002:0> exit

# which google-chrome
/usr/bin/google-chrome

パスがあってない。

オプションで設定できそうな。

options.binary = "/usr/bin/google-chrome" 

⚙️consoleで検証

ローカルでおなじことやったらhogeに値入る。

> hoge = Bookmark.get_site_capture('https://blog.hippohack.me')
Traceback (most recent call last):
        1: from (irb):1
NameError (uninitialized constant Bookmark)
Did you mean?  Bookmarks
irb(main):002:0> Traceback (most recent call last):
irb(main):003:0*         3: from (irb):1
Traceback (most recent call last):
SyntaxError ((irb):2: syntax error, unexpected ':', expecting end)
...ceback (most recent call last):
...                              ^
(irb):3: syntax error, unexpected ':', expecting end
        3: from (irb):1
                     ^
irb(main):004:0>         2: from app/models/bookmark.rb:73:in `get_site_capture'
irb(main):005:0`         1: from app/models/concerns/capture.rb:21:in `get_screenshot'
irb(main):006:0' Errno::ENOENT (No such file or directory - /app/.apt/usr/bin/google-chrome)
irb(main):007:0' irb(main):002:0> exit^C
irb(main):007:0> hoge
=> nil

うそ、バイナリの設定方法はこっちか?

ChromeOptions options = new ChromeOptions();
options.setBinary("/path/to/other/chrome/binary");

いやちがうなー

@webdriver_options = Selenium::WebDriver::Chrome::Options.new(binary: '/usr/bin/google-chrome')

これが正解ぽい。

けど、ローカルで成功、本番でエラー。 キャプチャ処理が走らない。

💡Heroku時代の環境変数残ってた

過去Herokuでテスト稼働させていたときの環境編集が残っていたのが問題でした。

[app.env]

WD_CHROME_PATH=/app/.apt/usr/bin/google-chrome

たぶんこれぽい。

WD_CHROME_PATH=/usr/bin/google-chrome

正解。

Heroku独自の環境変数かと思ってたけどそうでもないみたいです。 あと、WD_CHROME_PATH ってワードで検索すれば情報ありそうだったけど出会えませんでした。

とりま改善したぽいのでいいとします。


最後までお読みいただき、ありがとうございました。

ご意見などありましたら@hippohackへDMをお願いいたします。

  • このエントリーをはてなブックマークに追加