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
公式サイトにも書いてあるこのコマンドが、最終的なオススメのbundle installです。

http://d.hatena.ne.jp/mirakui/20100703/1278165723

なるほど。--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にあわせた