gem install mysql2でエラー

$ gem install mysql2
でエラー発生

[code lang=text]
libraries and/or headers. Check the mkmf.log file for more details. You may
need configuration options.

Provided configuration options:
–with-opt-dir
–without-opt-dir
–with-opt-include
–without-opt-include=${opt-dir}/include
–with-opt-lib
–without-opt-lib=${opt-dir}/lib
–with-make-prog
–without-make-prog
–srcdir=.
–curdir
–ruby=/home/vagrant/.rbenv/versions/2.2.0/bin/$(RUBY_BASE_NAME)
–with-mysql-dir
–without-mysql-dir
–with-mysql-include
–without-mysql-include=${mysql-dir}/include
–with-mysql-lib
–without-mysql-lib=${mysql-dir}/lib
–with-mysql-config
–without-mysql-config
–with-mysql-dir
–without-mysql-dir
–with-mysql-include
–without-mysql-include=${mysql-dir}/include
–with-mysql-lib
–without-mysql-lib=${mysql-dir}/lib
–with-mysqlclientlib
–without-mysqlclientlib
–with-mlib
–without-mlib
–with-mysqlclientlib
–without-mysqlclientlib
–with-zlib
–without-zlib
–with-mysqlclientlib
–without-mysqlclientlib
–with-socketlib
–without-socketlib
–with-mysqlclientlib
–without-mysqlclientlib
–with-nsllib
–without-nsllib
–with-mysqlclientlib
–without-mysqlclientlib
–with-mygcclib
–without-mygcclib
–with-mysqlclientlib
–without-mysqlclientlib

extconf failed, exit code 1

Gem files will remain installed in /home/vagrant/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/gems/mysql2-0.3.17 for inspection.
Results logged to /home/vagrant/.rbenv/versions/2.2.0/lib/ruby/gems/2.2.0/extensions/x86-linux/2.2.0-static/mysql2-0.3.17/gem_make.out
Installing truncate_html 0.9.2
Installing spring 1.2.0
An error occurred while installing mysql2 (0.3.17), and Bundler cannot continue.
Make sure that `gem install mysql2 -v '0.3.17'` succeeds before bundling.
[/code]

調べてたらmysql周りのものが足りないらしく
$ sudo apt-get install mysql-client libmysqlclient-dev
で解決しました

参考サイト) http://stackoverflow.com/questions/19765290/error-failed-to-build-gem-native-extension-error-installing-mysql2

rbenvでrehashがいらなくなった

https://github.com/sstephenson/rbenv/pull/638
のPull RequestのMergeで rbenv rehash がいらなくなっていました

rbenvを最新にするには

$ cd .rbenv/plugins/ruby-build
$ git pull origin master

rbenv-gem-rehash ってのをいれれば不要になるから試そう、と思ったらいまは不要になってました

これからは

インストールするrubyのバージョン確認
$ rbenv install –list

ためしに2.2.0インストール
$ rbenv install 2.2.0

$ ruby -v
ruby 2.2.0p0 (2014-12-25 revision 49005) [i686-linux]

できあがりと楽になりました

Rubyでall?を使ってみた

all?とはすべての要素がtrueの場合にtrueとなり、ひとつでもfalseならfalseを返します
コードで見てみる

japanese = 80
english = 70
p 'good ' if japanese > 60 && english > 60

とすれば、国語と英語が60より大きいので good と言ってくれます
all?を使うと

japanese = 80
english = 70
p 'good ' if [japanese, english].all? { |p| p > 60 }

でいけます
便利ですね

Rubyで何年何ヶ月差があるか表示してみる

Rubyで2つの日付の差を調べて、何年何ヶ月開いているかを書いてみました

[code lang=ruby]
require "date" # — 1.

today = Date.today
someday = Date.new(2012, 10, 10)

today_months = today.year * 12 + today.month # — 2.
someday_months = someday.year * 12 + someday.month

months_diff = today_months – someday_months

year, month = months_diff.divmod(12) # — 3.

p "#{year}年#{month}ヶ月"
[/code]

  1. dateクラスは組み込みクラスでないので、require
  2. 日付から年も月数になおして、月数の合計を求めます
  3. divmodで割り算した商とあまりを変えします

こんな感じでした