ページ

2013年2月27日水曜日

認証付きProxy環境下でHomebrewのインストール

export http_proxy=http://USER:PASS@PROXY:PORT
export ALL_PROXY=$http_proxy
してから
ruby -e “$(curl -fsSkL raw.github.com/mxcl/homebrew/go)”
する。

brew install等するときにも同様なので、上の2行をシェルの設定ファイルに書いておくのがよかろう。

BundlerでSSLの証明書エラー

Gemfileのsourceにhttps://rubygems.orgを指定してbundle updateとかすると
Unfortunately, a fatal error has occurred. Please see the Bundler
        troubleshooting documentation at http://bit.ly/bundler-issues. Thanks!

とか出てエラーになる。Thanks!じゃねえよ。

homebrewで入れたopensslには証明書が入っていないとかで、いれてやることで解決した。
% brew install curl-ca-bundle
% brew list curl-ca-bundle
/usr/local/Cellar/curl-ca-bundle/1.87/share/ca-bundle.crt
% cp /usr/local/Cellar/curl-ca-bundle/1.87/share/ca-bundle.crt /usr/local/etc/openssl/cert.pem

参考: http://qiita.com/items/12457815d5cee3723b97

今まで気づいてなかっただけで1.9とかの頃から出てたのかもしれない。

2.0rc2からはrbenv installするだけでopensslもコンパイルされるという話もあるが、未確認。(http://qiita.com/items/f95c6f0a297d7b8edbd5)

2013年2月16日土曜日

MacRubyにおけるnilの扱い

参考: https://github.com/MacRuby/MacRuby/wiki/Common-Issues

Rubyでは、nilに対して定義されてないメソッド呼び出しをするとNoMethodErrorになる。一方、Objective-Cではnilに対してメッセージを投げても実行時エラーになることはなく、nilが返ってくる。

さて、MacRubyではどうなっているかというと、(少なくとも現状は)Rubyに合わせた仕様になっているらしく、NoMethodErrorになる。

ただ、既存のObjective-Cのコードを置き換えるとか、Cocoa的に書くとnilにメッセージを投げたい場合も出てくると思うので、そういうときは

framework 'Foundation'

しておけばいい。

RubyMotionとかMobiRubyではこの辺どうなってるんだろう。