質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Sinatra

Sinatraは、Rubyで作られた オープンソースのWebアプリケーションフレームワークです。

Q&A

解決済

1回答

3847閲覧

capybara(+ Poltergeist)の終了の仕方

hagetak

総合スコア16

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Sinatra

Sinatraは、Rubyで作られた オープンソースのWebアプリケーションフレームワークです。

0グッド

0クリップ

投稿2015/12/18 06:27

現在、Capybara(+ Poltergeist)でウェブスクレイピングしたものを sinatraで表示させるサービスを作成しています。

poltergeist のCPU使用率が意外と高く、動作が鈍ってしまいます。

そこで、poltergeist で取得したHTMLを加工後、poltergeist を削除(メモリ解放)して、動作を安定させたいと考えています。

そのような場合はどのようにすればよいでしょうか。

#poltergistの設定 Capybara.register_driver :poltergeist do |app| Capybara::Poltergeist::Driver.new(app, {:js_errors => false, :timeout => 120 }) end Capybara.default_selector = :xpath session = Capybara::Session.new(:poltergeist) session.driver.headers = { 'User-Agent' => "Chrome/5.0 (Macintosh; Intel Mac OS X)" } session.visit @url @page = Nokogiri::HTML.parse(session.html) puts @page # ここで開放したい

回答お願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

quitではダメでしたか?
http://www.rubydoc.info/gems/poltergeist/Capybara/Poltergeist/Driver#quit-instance_method

ruby

1# ここで開放したい 2session.driver.quit

投稿2015/12/18 14:59

jinco

総合スコア432

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hagetak

2015/12/23 06:41

ありがとうございます。 ### 何も追加しないで ``` $ ps PID TTY TIME CMD 41145 ttys000 0:00.30 -zsh 57988 ttys000 0:01.09 ruby main.rb 58005 ttys000 0:00.48 phantomjs -w 4567 58007 ttys000 0:02.01 /usr/local/bin/phantomjs --ssl-protocol=any /Library/Ruby/Gems/2.0.0/gems/poltergeist-1.6.0/lib/capybara/poltergeist/client/compiled/m 58018 ttys000 0:00.02 phantomjs -w 4567 58019 ttys000 0:00.02 /usr/local/bin/phantomjs --version ``` ### session.driver.quit 追加後 > session.driver.quit ``` $ ps PID TTY TIME CMD 41145 ttys000 0:00.31 -zsh 58108 ttys000 0:01.13 ruby main.rb 58116 ttys000 0:00.48 phantomjs -w 4567 58130 ttys000 0:00.00 (phantomjs) ``` session.driver.quit を追加したところ、一つプロセスが残っている。そこで、次を追加することで解決できた。 ### > port = 4567 > pid_phantom = spawn 'phantomjs', '-w', port.to_s, :out => '/dev/null' > Process.kill 'KILL', pid_phantom ``` $ ps PID TTY TIME CMD 41145 ttys000 0:00.32 -zsh 58219 ttys000 0:01.06 ruby main.rb 58228 ttys000 0:00.00 (phantomjs) 58238 ttys000 0:00.00 (phantomjs) ```
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問