no_picture

もっと楽ができた。bundle init で作成したプロジェクトの rake task

以前 勢いでhiroshimarbというgemを作った。反省する気なんてあんまりない。という記事で gem の リリースをする方法を書いたのですが、 bundle gem で作られた rake タスクも見てあげると良いかもしれません(rake releaseだと push しつつ tag も切ってくれたりする)。(via @sugamasao) https://twitter.com/sugamasao/status/268286597110312960 というコメントを頂いてました。 なので、調べました。 $ rake -T rake build # Build hiroshimarb-0.1.4.gem into the pkg directory rake install # Build and install hiroshimarb-0.1.4.gem into system gems rake release # Create tag v0.1.4 and build and push hiroshimarb-0.1.4.gem to Rubygems rake release で git でタグをつくりつつ、rubygems.org に uploadしてくれました。 生成したgemは pkg ディレクトリ内に保存されます。対した作業ではないですが、バージョンを入力する手間が省けて素敵ですね。 taskの中身は Rakefileが $ cat Rakefile (gi#!/usr/bin/env rake require "bundler/gem_tasks" ということで gem_task.rb をみてみましょう。 require 'bundler/gem_helper' Bundler::GemHelper.install_tasks Bundler::GemHelper.install_tasksが呼ばれてます。 def install_tasks(opts = {}) new(opts[:dir], opts[:name]).install end install_tasksはインスタンスを生成して installすることがわかります。 つづいて インスタンスを生成するので、initilaizeです。 Bundle::GemHelper#initializeでは gemspecを読み込んでいるようです。なんとなくしかみてません。 def initialize(base = nil, name = nil) Bundler.ui = UI::Shell.new @base = (base ||= Dir.pwd) gemspecs = name ?