Ruby経由でCassandra

cassandra-cliで操作するのもつらくなってきたので,そろそろRubyから使えるようにします.

Rubyインストール

native extensionのために,ruby-devとmakeも必要です.

aptitude install ruby ruby-dev make rubygems

Gemインストール

念のため,Gemがあるか確認.

gem search cassandra -r

*** REMOTE GEMS ***

activerecord-cassandra-adapter (0.1.0)
cassandra (0.8.2)
cassandra_client (0.3)
jamesgolick-cassandra (0.8.2)
rdf-cassandra (0.2.0)

あるある.
そのままインストール.

gem install cassandra

Building native extensions.  This could take a while...
Building native extensions.  This could take a while...
Successfully installed thrift-0.2.0.3
Successfully installed thrift_client-0.4.3
Successfully installed json-1.4.3
Successfully installed rake-0.8.7
Successfully installed simple_uuid-0.1.1
Successfully installed cassandra-0.8.2
6 gems installed
...長いので以下略.

動作確認

とりあえずrequireできるか確認してみる.

# え?
ruby -e "require 'rubygems'; require 'cassandra'"
/usr/lib/ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require': no such file to load -- net/https (LoadError)
	from /usr/lib/ruby/1.8/rubygems/custom_require.rb:27:in `require'
	from /var/lib/gems/1.8/gems/thrift-0.2.0.4/lib/thrift/transport/http_client_transport.rb:22
	from /usr/lib/ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require'
	from /usr/lib/ruby/1.8/rubygems/custom_require.rb:27:in `require'
	from /var/lib/gems/1.8/gems/thrift-0.2.0.4/lib/thrift.rb:48
	from /usr/lib/ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require'
	from /usr/lib/ruby/1.8/rubygems/custom_require.rb:27:in `require'
	from /var/lib/gems/1.8/gems/thrift_client-0.4.3/lib/thrift_client.rb:7
	from /usr/lib/ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require'
	from /usr/lib/ruby/1.8/rubygems/custom_require.rb:27:in `require'
	from /var/lib/gems/1.8/gems/cassandra-0.8.2/lib/cassandra.rb:2
	from /usr/lib/ruby/1.8/rubygems/custom_require.rb:32:in `gem_original_require'
	from /usr/lib/ruby/1.8/rubygems/custom_require.rb:32:in `require'

と,ここでエラーが出てしまう.


net/httpsが使えねーと言われているので,libopenssl-rubyを入れる.

aptitude install libopenssl-ruby


今度こそ.

# OK.
ruby -e "require 'rubygems'; require 'cassandra'"