BundlerとのたたかいというかPadrinoとのたたかいというか
Padrino(0.9.27) で、mongoid を使ったプロジェクトを作ったとき、bundle-install でコケる問題。
女子力アップするべく
構想をねっていたものをつくりはじめるべく、Padrinoで新規プロジェクトを作成しました。次にやるべきは、gemのインストールですね。今まではなにも考えずに bundle install していたのですが、id:ruedap さんのところのエントリを思い出しました。
さらに、今だったらまずしないことですが、この記事の中でライブラリのインストールに「bundle install」すると書いています。これでも一応動きはしますが、これではBundlerを使っている意味がほとんどありません。この使い方だと直接システムにライブラリが入っちゃうからで、今なら「bundle install --path vendor/bundle」と書くでしょう。
http://d.hatena.ne.jp/ruedap/20110506/ruby_heroku_web_app_development_tips_8
ヒッ!使っている意味ほとんどありませんでした!すみません!すみません!
もう少し調べてみよう
ぐぐる(google:bundler)と、でてきた 。安心と信頼のid:mirakui さんのエントリ。
これを回避する場合は、--disable-shared-gems オプションをつけましょう。
$ bundle install vendor/bundle --disable-shared-gems
http://d.hatena.ne.jp/mirakui/20100703/1278165723
公式サイトにも書いてあるこのコマンドが、最終的なオススメのbundle installです。
なるほど。--disable-shared-gems か。やってみよう(ちゃんと調べたとは言えない状態)。
やってみた
怒られた。公式サイトでも --path を使えって書いてた><
再度やってみた*1
また怒られた><ぷんぷくり〜ん
原因よくわからず
Bundler由来のものかと思い、バージョンを様々ためしてみるがダメ。
調べる。
SystemTimer is only needed for 1.8. Won't even build on 1.9
https://github.com/kyanagi/padrino-framework/commit/35623950d4fb2d9a394612d167429d2f54aeab33
信じましょう、そのコミットメッセージ。GemfileからSystemTimerをコメントアウト。すると、どうでしょう。bundle-install に成功したではありませんか。
もう少し調べる
Issue #515: Do not include SystemTimer on non-1.8 Ruby · padrino/padrino-framework · GitHub
わずか2日前にPull RequestとCloseがされてました。次期バージョンでは修正されていることでしょう。
教訓: まずはgithubのIssuesをあたれ
*1:ちなみにパスの指定が vendor/gems なのはPadrinoによって生成される.gitignoreにあわせた