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 が上手くいかないことがあるみたいですね。