さくらインターネットのレンタルサーバは安価で非常に便利なのだが、 ruby が 1.8 と大変古い。新しい物をコンパイルして入れればいいのだが、最近は git がレンタルサーバに入ってるので、 rbenv と ruby-build のサイト通りにやれば比較的簡単にインストールできる。
上記サイト通りに、
$ git clone https://github.com/rbenv/rbenv.git ~/.rbenv $ git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build $ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile $ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile $ . ~/.bash_profile
とやっておけばよろしい。
ただこれだけだと iconv が見つからないと言われて nokogiri のインストールで失敗する。他にも /tmp に書き込めないなどのトラブルがあるので、以下のような行を ~/.bash_profile に追加しておく。もちろん source しておくように。
CPATH=/usr/local/include:$CPATH; export CPATH LD_LIBRARY_PATH=$HOME/local/lib:/usr/local/lib:$LD_LIBRARY_PATH export LD_LIBRARY_PATH LIBRARY_PATH=$HOME/local/lib:/usr/local/lib:$LIBRARY_PATH export LIBRARY_PATH TMPDIR=$HOME/tmp; export TMPDIR
これであとは、
$ rbenv install 2.3.0 $ ruby -v ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-freebsd9.1] $ gem install bundler nokogiri
これで普通に ruby が使えるようになる。
ただ cron に登録するときは環境変数などの設定をぜんぜん読み込んでくれないのでちょっと工夫が必要になる。
#!/bin/sh PATH=$HOME/.rbenv/shims:/usr/local/bin:/usr/bin:/bin:$PATH; export PATH exec ruby -S -x $0 "$@" #! ruby
ruby スクリプトの行頭をこんな感じで始めるのだ。shebang は sh にしておいて、適切に PATH を設定してやってから ruby を起動し、このスクリプト自身を ruby に読ませる。こうすることでさくらインターネット以外の普通に ruby が入ってる環境でも普通に実行できるようになる。
もちろん CGI も同様にしてやればちゃんと動作するのだが、CGI で呼び出された場合は環境変数 HOME がセットされてないので、
#!/bin/sh if [ -z $HOME ];then HOME=/home/koshian; export HOME; fi PATH=$HOME/.rbenv/shims:/usr/local/bin:/usr/bin:/bin:$PATH; export PATH exec ruby -S -x $0 "$@" #! ruby
というようにしてレンタルサーバでの HOME を書いておいてやらねばならない。