要約
#!/usr/bin/env ruby
require 'bundler/inline'
gemfile do
source 'https://rubygems.org'
gem 'to_gunma', '0.0.2'
end
array = [1,2,3]
array.to_gunma!
puts array.to_s
みたいに、gemfile
メソッド使えばインラインで Gemfile の内容書けるよ! 詳しくは https://github.com/bundler/bundler/blob/master/lib/bundler/inline.rb 読んでね!
1ファイルくらいのスクリプト向け bundler
ruby のパッケージ管理ツール Bundler はとても便利です。
便利ですが、ちょっとした、ちょうど 1 ファイルくらいの軽量スクリプト書くときには、いちいち Gemfile
を書いたりするのは面倒です。そんな時、たいていの場合は bundler を使わず、普通に gem install hogehoge
みたいにライブラリをインストールし、require 'hogehoge'
してライブラリを読み込んでいるかと思います。でも、たまに、このスクリプトファイルを共有する時とかにライブラリのバージョン差異が出て地味に不便なんですよね。
そんなわけで、 Bundler にはインラインで依存ライブラリを指定する記法が用意されています。
です。
・・・この issue を読むと、誕生背景やサンプルコード、実装内容に制限事項が網羅されているので解説など不要な気がしますが、将来の自分のために日本語でまとめておきましょう。
なお、詳しい情報は APIドキュメント に載っていますので、使いたい方はそちらをご参照ください。
#!/usr/bin/env ruby
require 'bundler/inline'
gemfile do
source 'https://rubygems.org'
gem 'to_gunma', '0,0.2'
end
array = [1,2,3]
array.to_gunma!
puts array.to_s
上記に示すサンプルコードのように、 require 'bundler/inline'
することでインラインで Gemfile を宣言する gemfile
メソッドを使えるようになります。
このファイルを実行する環境で gem がインストール済みであれば、 gemfile
メソッドのブロック内で定義したライブラリを自動的に require までしてくれます。また、第一引数に true
を設定することで、未インストールの時に自動的にインストールまでしてくれます。
使いみち
サンプルコードを gist に貼ったりするときのお供にどうぞ! 例えば、バグレポートを報告するときなどにバージョンを図示して報告した方が便利です。
をみると、例えば rails ではテンプレートにこの記法が組み込まれているのがわかるかと思います。こんな風に、例えば「ブログの記事用サンプルコード」や「Qiitaに載せるのちょっとしたコード」などで、特定ライブラリの特定バージョンに依存したことを明示したいときなどにお使いくださいな!
良いプログラミングを!