Rails4から--binstubsが使えなくなる件

Rails4を試そうと思って、いつもどおりbundle install --binstubsしたらrails srails new扱いされてうまくいかなかった。

原因

ここによると、以前のscripts/railsbin/railsに移動したみたいです。

bin/railsrails sとかrails cとかのコマンドができるようになったため、いつものノリで--binstubsすると新bin/railsが上書きされてしまい、rails sなどがうまくいかなくなるようです。

対策

とはいえ、bundle exec rails sと打つのがめんどくさいので、RVMのafter_cd_bundlerフックを活用できるように.bundle/configに以下の設定を追加します。

BUNDLE_BIN: bin

これbin/以下に自動でパスが通るようになりますので、rails sでちゃんとうごくようになります。

RVMのafter_cd_bundlerについては昔の投稿を参照してください。

Rails以外のgemについては最新のBundlerを使うことでbin/以下に実行スクリプトを生成できるようになります。

$ gem install bundler --pre
$ bundle --version
Bundler version 1.3.0.pre.7
$ bundle binstubs puma

bundle binstubs pumabin/pumaが生成されます。