bundel install でsqlite3のエラー

あるgemのリポジトリをcloneしてきて、bundleするとsqlite3あたりでエラーが..

$ bundle

An error occurred while installing sqlite3 (1.3.10), and Bundler cannot continue.
Make sure that `gem install sqlite3 -v '1.3.10'` succeeds before bundling.

sqlite3をいれろということなのでしたがって

$ gem install sqlite3 -v ‘1.3.10’

Building native extensions.  This could take a while...
ERROR:  Error installing sqlite3:
        ERROR: Failed to build gem native extension.

    /home/user/.rbenv/versions/2.2.3/bin/ruby -r ./siteconf20151008-14352-17hawla.rb extconf.rb
checking for sqlite3.h... no
sqlite3.h is missing. Try 'port install sqlite3 +universal',
'yum install sqlite-devel' or 'apt-get install libsqlite3-dev'
and check your shared library search path (the
location where your sqlite3 shared library is located).
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.

またしてもエラー
ライブラリが足りないらしい、Ubuntuだったので

$ sudo apt-get install libsqlite3-dev

これでbundleしてみる

$ bundle

と、無事入りました

「Bundler::GemspecError: Could not read gem at 〜. It may be corrupted.」のエラー発生

bundle時にエラーが発生

Bundler::GemspecError: Could not read gem at /home/vagrant/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/cache/nokogiri-1.6.6.2.gem. It may be corrupted.
An error occurred while installing nokogiri (1.6.6.2), and Bundler cannot continue.
Make sure that `gem install nokogiri -v '1.6.6.2'` succeeds before bundling.

cacheが読めない?
nokogiriのキャッシュが2つあったので、両方消してみました

$ rm -rf /home/vagrant/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/cache/nokogiri-1.6.*

$ bundle

これでうまく行きました

rubyのbundler自身をアップデートする

bundlerが1.10からGemfile.lockの書式が変わりました

参考)
Ruby – Bundler1.10.XからGemfile.lockの書式がちょっと変わってる件について – Qiita

周りが全部bundlerを新しくすればいいかと思って上げました
まず、確認

$ bundler -v
Bundler version 1.9.4

bunderで管理してれば、bundlerであげますが、bundler自身なので

$ gem update bundler

Updating installed gems
Updating bundler
Fetching: bundler-1.10.6.gem (100%)
Successfully installed bundler-1.10.6
Gems updated: bundler

$ bundler -v
Bundler version 1.10.6

とあがりました

Rubyでscanで使ったりする\p{Word}ってなにか

Rubyで正規表現を使ってscanを使ってるコードで

"I my me mine 1 2 3 4".scan(/w+/) 
# ["I", "my", "me", "mine", "1", "2", "3", "4"]

と文字列を配列に分割できますが

"I my me mine 1 2 3 4".scan(/p{Word}+/) 
# ["I", "my", "me", "mine", "1", "2", "3", "4"]

でもできます
\p{Word}ってなんだと思って調べました

ドキュメントによるとUnicode プロパティによる文字クラス指定らしいです
正規表現

これ
Onigmo/UnicodeProps.txt at master · k-takata/Onigmo
に書いてあるものは使えるそうです

str = "I my me mine 1 2 3 4"
p str.scan(/p{Word}+/)
# ["I", "my", "me", "mine", "1", "2", "3", "4"]
p str.scan(/p{Digit}+/)
# ["1", "2", "3", "4"]
p str.scan(/p{Upper}+/)
# ["I"]

と他にも使えそうなのがあります