7月 042015
rbenvでRubyインストールするのって色々オプションつけたり下準備が面倒だけど、brew install rubyで最新版入るし、1.8〜2.0の頃と違って2.0以上で動くコードは2.2でも問題ない感じがするからRuby処理系のバージョン切り替え要らないじゃん、homebrewで最新版インストールすればいいじゃんという気持ち
nginxアップデートしたらopensslも一緒に上がってRubyがぶっ壊れた
YosemiteにアップデートしたのでMacをYosemiteにアップデートした
homebrewで入れてたnginxもアップデートした。
% brew tap marcqualie/nginx
% brew install nginx-full --with-mp4 --with-mp4-h264-module
最近のはデフォルトでwebsocket proxyが有効になっていて便利!とか思っていたら、homebrewのopensslもアップデートされて、rbenvでインストールしてたRubyからSSLが使えなくなった。Ruby全滅した。
そこでrbenv+ruby-buildでRuby 2.2.2をインストールしたのだが、SSLを使う処理を動かすと「digest/sha1.bundle, 9): Symbol not found: _rb_Digest_SHA1_Finish (LoadError)」というエラーで死んでしまう。
というかrbenvでRubyインストールしてopensslやらreadlineやらが動かなくて色々コンパイルしなおすの、OS入れ替える毎にやってていい加減アホくさいのでやめたい。
ここ4年ぐらい一度もストレートに成功したこと無い。
homebrewでインストールする
よく見たらhomebrewにrubyっていうパッケージがあって、ちゃんと2.2.2がインストールできる。
node.jsもhomebrewで最新版入れて使ってるし、特別Ruby 1.8.7で動かさないとならないアプリとかが無い限り別に言語処理系のバージョン管理いらないんじゃないのという気になって
% brew uninstall --force rbenv ruby-buildした。ruby 2.2.2とgem 2.4.5が入った。
% brew install ruby
jrubyも入れた。
% brew install Caskroom/cask/java
% brew install jruby
全く問題なく使えてる。
LaunchAgentからのRuby起動
PATHが消えてるので自分でEnvironmentVariablesを設定するのと最初のbundleを/usr/local/bin/bundleとフルパス指定さえすればhomebrewで入れたruby 2.2.2が使えた。<dict>
<key>RACK_ENV</key>
<string>production</string>
<key>PATH</key>
<string>/usr/local/bin:/usr/bin:/usr/sbin:/bin:/sbin</string>
</dict>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/bundle</string>
<string>exec</string>
<string>rackup</string>
<string>config.ru</string>
<string>-p</string>
<string>5000</string>
</array>
<key>KeepAlive</key>
<true/>
<key>RunAtLoad</key>
<true/>
<key>UserName</key>
<string>sho</string>
<key>WorkingDirectory</key>
<string>/Users/sho/my/app/path</string>
<key>StandardOutPath</key>
<string>/var/log/myapp/myapp.log</string>
<key>StandardErrorPath</key>
<string>/var/log/myapp/myapp.log</string>
<key>UserName</key>
<string>sho</string>