love.CUI環境でCapybaraを使うときのあれこれ04/28ちょこっと追記と数カ所修正しました。that?Capybaraはウェブシステムのテストを補助するRubyのライブラリです。Mechanizeでほとんどのサイトはクロールできますが、JavaScriptなサイトに対してはJavaScriptが解釈できるようなものでクロールしないといけません。真新しい単語が入っている訳でもなく、これを読んだだけだと別に何もピンと来たりはしないかもしれない。GUI環境なのかCUI環境なのかという問題は、それと同じくらい普段は意識しないことだと思いますが、何も明記していない場合はGUI環境なんだよ〜というのは、もしかすると初めてだったかもしれないくらい。今回はわりと大きな問題だったようです。インストール参考サイトgithub.com/thoughtbot/capybara-webkitCapybaraとCapybara-webkitというものをインストールします。Gemでインストール可能ですが、Capybara-webkitのインストールにはQT(キュート)というものが必要なようで、まずはそこから。参考書籍だとPoltergeist+PhantomJSが人気らしく、書籍の中でもこの組み合わせでの説明になってます。ウェブの情報もそれなりに多いCapybara-webkitで進めてみたいと思います。その辺りは置き換えて読んでいく必要がありますが、まぁ何とかなります。参考サイトとCapybara-webkitのインストールに戻りませう。マニュアルと読んでみると、その時に使っていたOSがCentos6だったのでRHELのところが目についた。qtwebkitという感じに、あまり深く考えずにRHEL16のところで進めていくと。/usr/lib64っつーか、これだとダメみたい。Capybara-webkitのインストールは失敗しました。この件から得る教訓は、急がば回れということらしい。気を取り直してCent6の手順でインストールRHELのところから下に下がって良く見てみるとCentos6の手順がちゃんと書いてありました。この辺は参考サイトと同じです。qt-everywhere-opensource-src-4.8.6選択肢の部分は参考サイトから少し変わった様子?さきほどの教訓がぜんぜん活かされていない気がしますが、Yesを選択してみました。yesしばらく待っていると以下のメッセージが表示されました。残りは普通に同じように進められそうですね。'configure'.あとはgmakeでフィニッシュ。Gmakeがめちゃ長いので時間がない時は避けておくのをオススメ。installedできた〜!と思ったら?簡単なテストスクリプトを実行してみるとCapybara::Webkit::ConnectionErrorここでようやく参考にしていたサイト全てがGUI環境を前提にしていたことに気づいた。・・・なんということでしょう。CUIの場合はHeadlessとXvfbが必要ということらしい。本来?という言い方はおかしいですが、本来はウェブサイトのテストに使ってたものらしいので、GUIを前提としていてもおかしくないのかなぁと振り返ってみるとそう思ったりして。installedエラー内容が変わる。X環境がない場合は、Xvfbとやらを使えということらしい。server.Headlessという単語は以前にも見覚えがありVagrant+VirtualBoxとpackerで検証環境を作ろうVirtualBoxのテストでCUIだけで操作したいときはHeadless=Trueというオプションを使っていました。そんな感じということですね。'google.png'headless.destroyGoogleに接続して画面キャプチャを取るだけのスクリプトです。[~/ruby/Capybara_test]google.png無事に動作したようです。サイバーダック君を使って、サーバーとSFTPで繋いでDLしてチェックしてみませう。04/28追記ここから今回はこれで終わろうと思いましたが、2回に分けようと思っていた事がそれほど大きくなさげなので一緒にしてしまいます。DSLタイプとインスタンスメソッドタイプ使えるメソッドは同じなようで少し違っているみたいですが、細かいとこは置いておいて視覚的にはDSLの方が綺麗かな?参考書籍のAmazonのサンプルを参考にしてCapybara-webkitの場合で、DSLを使ったタイプとインスタンスメソッドを使った2タイプで書いてみました。最初に両方やってみてDSLの方が良さそうなのでこの後はずっとDSLで進めています。書籍もDSLですしね。こちらはCapybara-webkitで進めているとこもそれほど気にならないで進めれています。endendXpathなんかも使ってスクレイピングできるようなので、Mechanizeで蓄えていたことも使えそうですね。関係ない話ですが今回からKobitoを使って下書きしてマークダウン式にしてみました。Takekenインターネット利用者のITリテラシーを向上しようという目的で生まれた、2次元キャラのたけけんです。サーバー弄りからプログラミングまで幅広く書いています。WordPressのテーマは手動でアップデートしてしまおうこのサイトはさくらのクラウドで動いています。ntopAndroidの開発でC++のコードを使うにはメール送信のリトライ(再送)について考えてみたビール酵母アレルギーだと!?QEMUでエミューレートするCPUを変えてみようApacheのmod_proxyを使ってみるtcpdumpで中身をみてみよう。Comments【Ubuntu】UbuntuServerをコンソールからデスクトップ画面で操作する。さくらの新スタンダードプランのサーバーにRailsを入れて、Redmineをインストールした。