bundle gemでgemライブラリのひな形が作成できる
その中で、-b オプションを付けると実行ファイル用のbinディレクトリが作成される。しかし、Bundler 1.8系からは bin ディレクトリは binstub用(で良いのかな)のsetupやconsoleスクリプト等(-bを付けなくても生成される)が配置され、gemライブラリの実行ファイル用として exe ディレクトリが用意されるようになる。
1.7.9 と 1.8.3での確認
1.7.9 で bundle gem プロジェクト名 -b -t した結果
➜ /tmp tree baz
baz
├── Gemfile
├── LICENSE.txt
├── README.md
├── Rakefile
├── baz.gemspec
├── bin
│ └── baz
├── lib
│ ├── baz
│ │ └── version.rb
│ └── baz.rb
└── spec
├── baz_spec.rb
└── spec_helper.rb
4 directories, 10 files
1.8.3 で bundle gem プロジェクト名 -b -t した結果
➜ /tmp tree bar
bar
├── Gemfile
├── LICENSE.txt
├── README.md
├── Rakefile
├── bar.gemspec
├── bin
│ ├── console
│ └── setup
├── exe
│ └── bar
├── lib
│ ├── bar
│ │ └── version.rb
│ └── bar.rb
└── spec
├── bar_spec.rb
└── spec_helper.rb
5 directories, 12 files
経緯など
move gem bins to exe/ and add console and setup · ab3e217 · bundler/bundler · GitHub
あたりでやりとしていている。インパクトある割にしれっと変わってて何なのwという感じだけど、やりとりの先のブログとかも見ると、RSpecとかずいぶん前からそうしてるしみたいな事が書いてある。
なるほどねー
その他
いつのバージョンから入ったか調べてないけど、bundle gemの時に、MITライセンスにするかだとか、テスト用フレームワークはどれを使用するか、等が質問されるようになっている。
これらの回答結果は設定ファイルとして(~/.bundle/configに)保存されるようになっていて、フレームワークの指定等をしなかった場合のデフォルト値として使われるようになってるっぽい。