ruby1.9 で extractcontent

ruby1.9で本文抽出を行った時に引っかかったのでメモ。

はじめはExtractContentをruby 1.9から使う - Capsuleを参考に対処しました。
要するにgemのextractcontentを直接いじってruby1.9に対応させていたんですが、herokuにデプロイするにあたり、この方法が使えなくなってしまいました。(herokuのgemはさすがに直接いじれないはず)

ということで、ruby1.8用のextractcontentを何とかして使おうと思ったんですが、あえなく挫折。
rubyのpikでrubyのバージョンを1.8にして使おうと思ったんですが、これだと負けた気になるので、新たな方法を探ることに。
グーグル先生に聞いてみたところ、すぐにmono0x/extractcontent · GitHubを発見。有志がgitにruby1.9対応版を公開していたようです。
結果的にこれを使って何とかなったんですが、不慣れなためいろいろとミスを連発してしまいました。

このgemはGemfileで

gem 'extractcontent', :git => 'https://github.com/mono0x/extractcontent.git'

としないといけないんですが、

gem install extractcontent

でextractcontentを先に入れていたので、

require 'extractcontent'

で衝突が起きていた模様。
エラーにパスが載っていたので、それをたどって削除することで対処。

extractcontentはrailsで使うんですが、まずrubyのファイルを作り、コマンドプロンプトで実行することで動くかどうか調べました。
テストとして
test.rb

# coding: utf-8

require 'bundler/setup'
require 'extractcontent'
require 'open-uri'

URL = 'http://akr97.com/capsule/?p=150'

open(URL) do |html|
  
(body, title) = ExtractContent.analyse(html.read)
puts title
puts body[1..40]

end

を作りました。
このファイルと同じディレクトリに
Gemfile

gem 'extractcontent', :git => 'https://github.com/mono0x/extractcontent.git'

を作成し、コマンドプロンプトでこのディレクトリに移動してから、

bundle install

で何とかなりました。

実は、Gemfileは初めて0から作ったんですが、今回でbundleの意味がより分かったような気がします。

追記:
gem管理の新標準ツール"Bundler"のTips - 昼メシ物語を見たところ、やはり同名のgemファイルがあるとbundle install が上手くいかないことがあるみたいですね。