запустить селен с драйвером chrome на героку: `не могу найти бинарный Chrome`

Я нуб, так как дело доходит до установки linux (и heroku), поэтому прошу прощения, если этот вопрос является основным.

Я хочу запустить Selen Webkit (в рубине) на Heroku. Я сталкиваюсь с трудностью, что мой скрипт не может найти бинарный файл Chrome.

Я на самом деле получил хром, чтобы работать сам по себе:

~ $ chromedriver
Starting ChromeDriver 2.22.397932 (282ed7cf89cf0053b6542e0d0f039d4123bbb6ad) on port 9515
Only local connections are allowed.

chromedriver будучи файлом, из которого я скопировал/app/vendor/bundle/bin/chromedriverПросто чтобы было проще.chromedriver файл существует, потому что я установилдрагоценный камень-помощник, Gem должен был сделать двоичный файл доступным для процессов ruby, но не сделал этого.

Я также попытался установить путь явно, напримерSelenium::WebDriver::Chrome.driver_path = 'chromedriver' в моем коде ruby, с вышеупомянутым файлом, расположенным в корневой категории.

Все работает идеально локально (с или безdriver_path)

В чем может быть причина? я прочелэто так нить лет назад, но мне это кажется устаревшим. Благодарим за любую идею!

трассировка ошибки:

~ $ ruby bin/run.rb
/app/vendor/bundle/ruby/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/remote/response.rb:70:in `assert_ok': unknown error: cannot find Chrome binary (Selenium::WebDriver::Error::UnknownError)
  (Driver info: chromedriver=2.22.397932 (282ed7cf89cf0053b6542e0d0f039d4123bbb6ad),platform=Linux 3.13.0-91-generic x86_64)
    from /app/vendor/bundle/ruby/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/remote/response.rb:34:in `initialize'
    from /app/vendor/bundle/ruby/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/remote/http/common.rb:78:in `new'
    from /app/vendor/bundle/ruby/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/remote/http/common.rb:78:in `create_response'
    from /app/vendor/bundle/ruby/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/remote/http/default.rb:90:in `request'
    from /app/vendor/bundle/ruby/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/remote/http/common.rb:59:in `call'
    from /app/vendor/bundle/ruby/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/remote/bridge.rb:649:in `raw_execute'
    from /app/vendor/bundle/ruby/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/remote/bridge.rb:123:in `create_session'
    from /app/vendor/bundle/ruby/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/remote/bridge.rb:87:in `initialize'
    from /app/vendor/bundle/ruby/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/chrome/bridge.rb:48:in `initialize'
    from /app/vendor/bundle/ruby/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/common/driver.rb:64:in `new'
    from /app/vendor/bundle/ruby/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver/common/driver.rb:64:in `for'
    from /app/vendor/bundle/ruby/2.2.0/gems/selenium-webdriver-2.53.4/lib/selenium/webdriver.rb:84:in `for'
    from /app/lib/mealpass_orderer.rb:12:in `initialize'
    from /app/lib/mealpass_orderer.rb:8:in `new'
    from /app/lib/mealpass_orderer.rb:8:in `run'
    from bin/run.rb:3:in `<main>'

ОБНОВИТЬ:

Я попробовал то же самое с сервером AWS EC2 (запустил экземпляр, клонировал git repo, установил все зависимости). То же самое происходит и там. То есть может запускать chromedriver из терминала, но при запуске скрипта видит ту же ошибку.

 Corey Goldberg25 янв. 2017 г., 17:28
связанный вопрос так звучит для меня, как будто это именно та проблема, которую вы нажали
 Petr Gazarov11 июл. 2016 г., 22:59
@IlyaVassilevsky Нет, я еще не пробовал Полтергейст. Интересно, имеет ли эта ошибка какое-либо отношение к chromedriver, имеющему "голову"
 Ilya Vassilevsky11 июл. 2016 г., 22:48
Рассматривали ли вы бегполтергейст вместо?

Ответы на вопрос(1)

Решение Вопроса

ребуется браузер Chrome, установленный на той же машине.

В Heroku по умолчанию на Chrome не установлен Chrome. Вам нужно использовать buildpack, который устанавливает Chrome. Например:

https://github.com/dwayhs/heroku-buildpack-chrome

Вы можете увидеть, как он получает Chrome:

https://github.com/dwayhs/heroku-buildpack-chrome/blob/master/bin/compile#L36-38

 Petr Gazarov18 июл. 2016 г., 01:34
Спасибо за ответ Илья. Я переписал Watir с phantomjs, потому что не мог заставить Heroku установить Chrome.
 Ilya Vassilevsky12 июл. 2016 г., 11:56
Да, Heroku - очень самоуверенная и закрытая платформа. Настроить Chrome с ChromeDriver должно быть намного проще на собственной виртуальной машине на AWS, Linode или DigitalOcean.
 Petr Gazarov12 июл. 2016 г., 07:29
Спасибо @ Илья. Я попробовал этот buildpack, и он не работал. Я подозреваю, что установка Google Chrome (или любого браузера) на heroku может быть более сложной.

Ваш ответ на вопрос