rvmでrubyのバージョンを切り替える
macbookproにrvmいれた。macportsにあるrvmというのはruby version managerとは関係ない別物なので注意
先にmacportsでreadlineをインストールしておく
sudo port install readline
git clone git://github.com/wayneeseguin/rvm.git
cd rvm
./install
[[ -s $HOME/.rvm/scripts/rvm ]] && source $HOME/.rvm/scripts/rvm
rvm -v
1.0.1が入ってた
rvm list known
# MRI Rubies (ruby-)1.8.6(-p399) (ruby-)1.8.6-head (ruby-)1.8.7(-p302) (ruby-)1.8.7-head (ruby-)1.9.1-p243 (ruby-)1.9.1-p376 (ruby-)1.9.1(-p429) (ruby-)1.9.1-head (ruby-)1.9.2-preview1 (ruby-)1.9.2-preview3 (ruby-)1.9.2-rc1 (ruby-)1.9.2-rc2 (ruby-)1.9.2(-p0) (ruby-)1.9.2-head ruby-head # JRuby jruby-1.2.0 jruby-1.3.1 jruby-1.4.0 jruby-1.5.1 jruby(-1.5.2) jruby-head # Rubinius rbx(-1.0.1) rbx-head # Ruby Enterprise Edition ree-1.8.6 ree(-1.8.7) ree-1.8.6-head ree-1.8.7-head # MagLev maglev(-24067) maglev-head # Shyouhei head, the default mput mput(-head) # Mac OS X Snow Leopard Only macruby(-nightly) # the default macruby macruby-head # Build from the macruby git repository # IronRuby -- Not implemented yet. ironruby-0.9.3 ironruby-1.0-rc2 ironruby-head
とりあえず1.8.7と1.9.2を切り替えて使いたいので両方入れておいた
rvm install 1.9.2 rvm install 1.8.7
ちゃんと切り替えれるか確認
rvm list rvm use 1.9.2 ruby -v echo $GEM_HOME
gemも /Users/sho/.rvm/gems/ruby-1.9.2-p0 の下を参照しているので、入れ直す
gem list gem install twitter oauth
rvmで入れた各rubyにmecab rubyバインディングをインストールする
mecab rubyバインディングはgemでインストールできないので、rvmで入れた各バージョンのrubyからmecabを使うのは少し面倒。
今までportで入れたrubyから、portのrb-mecabを使ってたけど、rvmで$GEM_HOMEが切り替わるとportで入れたrubyバインディングが読めないので、個別に入れる
portでmecabの最新版0.9.8を入れておく
sudo port install mecab +utf8only which mecab mecab -v
ちゃんと0.98になってた
mecabのrubyバインディング入れる。
http://sourceforge.net/projects/mecab/files/ からmecab-ruby-0.98をダウンロードする
tar -zxvf mecab-ruby-0.98.tar cd mecab-ruby-0.98 use rvm 1.9.2 ruby -v ruby exconf.rb
んで
make
g++ -I. -I/Users/sho/.rvm/rubies/ruby-1.9.2-p0/include/ruby-1.9.1/i386-darwin9.8.0 -I/Users/sho/.rvm/rubies/ruby-1.9.2-p0/include/ruby-1.9.1/ruby/backward -I/Users/sho/.rvm/rubies/ruby-1.9.2-p0/include/ruby-1.9.1 -I. -DHAVE_MECAB_H -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -fno-common -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wpointer-arith -Wwrite-strings -Wno-missing-field-initializers -Wshorten-64-to-32 -Wno-long-long -fno-common -pipe -I/opt/local/include -o MeCab_wrap.o -c MeCab_wrap.cpp g++ -dynamic -bundle -o MeCab.bundle MeCab_wrap.o -L. -L/Users/sho/.rvm/rubies/ruby-1.9.2-p0/lib -L. -L/usr/local/lib -Wl,-undefined,dynamic_lookup -Wl,-multiply_defined,suppress -Wl,-flat_namespace -lruby.1.9.1 -lstdc++ -lmecab -lpthread -ldl -lobjc
make install
/opt/local/bin/ginstall -c -m 0755 MeCab.bundle /Users/sho/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/site_ruby/1.9.1/i386-darwin9.8.0
ちゃんとrvmの下に入った
同様にrvmで入れた1.8.7の方にも入れる
cd ../ rm -rf mecab-ruby-0.98 tar -zxvf mecab-ruby-0.98.tar cd mecab-ruby-0.98 use rvm 1.8.7 ruby -v ruby exconf.rb make make install
動くか試そう
mecab-split-terms.rb
#!/usr/bin/env ruby require 'MeCab' exit if ARGV.size < 1 puts str = ARGV.join(' ') node = MeCab::Tagger.new.parseToNode(str) while node do puts node.surface node = node.next end puts '*'*5 puts MeCab::Tagger.new.parse(str).split(/[\r\n]/).map{|i| i.split(/\t/).first}.delete_if{|i| i =~ /^EOS$/}
rvm use 1.8.7 ruby mecab-split-terms.rb BIG丼はやばい rvm use 1.9.2 ruby mecab-split-terms.rb BIG丼はやばい
どっちも同じ様にsplitできた
1.9.2だとArray.to_sした時に前後に [ と ] が付くのではまった
あと改行区切りのStringをmapで行毎に処理できなかった