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
% brew install ruby
した。ruby 2.2.2とgem 2.4.5が入った。


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>