Heroku で Capybara - Poltergeist を使う時に注意すること

Heroku で Capybara と Poltergeist を使う時につまずいたのでメモ。

原因は PhantomJS がないから。
ローカルではインストールして動いているけど、はて、herokuではどうするのかなと。
何もしないと下のようなエラーが出ます。

Cliver::Dependency::NotFound: Could not find an executable ["phantomjs"] on your path.

実装

まずはこのコマンド。

$ heroku buildpack:set https://github.com/ddollar/heroku-buildpack-multi.git

  
ルートに .buildpacks を作ろう。

$ touch .buildpacks

  
その中身はこう。
.buildpacks

https://github.com/heroku/heroku-buildpack-ruby
https://github.com/stomita/heroku-buildpack-phantomjs

  
herokuに環境変数を追加。

$ heroku config:set PATH="/usr/local/bin:/usr/bin:/bin:/app/vendor/phantomjs/bin"
$ heroku config:set LD_LIBRARY_PATH=/usr/local/lib:/usr/lib:/lib:/app/vendor/phantomjs/lib

  
これで完了かなと思ってたら、Procfileがいるようで。
せっかくなので Weblick 使ってたけど Puma にしました。

  
Gemfile

group :production do
  gem 'puma'
end

  
Procfile (ルートに設置)

web: bundle exec puma -C config/puma.rb

  
config/puma.rb

workers Integer(ENV['WEB_CONCURRENCY'] || 2)
threads_count = Integer(ENV['MAX_THREADS'] || 5)
threads threads_count, threads_count

preload_app!

rackup      DefaultRackup
port        ENV['PORT']     || 3000
environment ENV['RACK_ENV'] || 'development'

on_worker_boot do
  # Worker specific setup for Rails 4.1+
  # See: https://devcenter.heroku.com/articles/deploying-rails-applications-with-the-puma-web-server#on-worker-boot
  ActiveRecord::Base.establish_connection
end

  
でoK!と思ってたら、まだだめ。
なぜかHerokuでエラー。ログはこんな感じ。

at=error code=H14 desc="No web processes running"

Dynoが一つも稼働してない模様。
試しにこうやって 0 Dyno増やしてみた。

$ heroku ps:scale web+0
Scaling dynos... done, now running web at 0:Free.

やっぱり 0 やん。
heroku ps:scale web+1 で良いのかなと思ったけど
念のため Heroku のダッシュボードでも確認して、そちらで起動しました。

以上!

参考

Heroku, Ruby on Rails and PhantomJS

Add explanation on README.md, that just setting buildpack on config is not enough · Issue #51 · ddollar/heroku-buildpack-multi

Deploying Rails Applications with the Puma Web Server | Heroku Dev Center

Buildpacks | Heroku Dev Center

node.js - Heroku Error H14 (No web processes running) - Stack Overflow

  

何かありましたらコメントをどうぞ

comments powered by Disqus

人気の記事

950 Points チリ出身のギタリストが弾くドラゴンボールZがむちゃくちゃかっこいい…
774 Points Wordpress + Heroku + PostgreSQL + Amazon S3 = ¥0 / 無料でサイト運営
700 Points Rubyのチートシート 変数 / クラス / モジュール
524 Points Rubyのチートシート / アクティブサポート
451 Points 紙のデザイナーがウェブ開発できるようになるまでに必要なこと
435 Points Rails / Google Analyticsのデータを使って分析や管理画面のためのグラフをつくる
323 Points RailsとHerokuでノーティフィケーションをプッシュする / PusherとTurbolinksの兼ね合い
222 Points Rails / RSpec テスト書いたことない メンドクサイ(n´Д`)という時のチートシート
193 Points Rails / Ajaxを使って画面遷移しない一時保存機能をつける
193 Points Protractorでスクレイピングしてみた