bundle gemべんり〜、でもね…


RubyRubyGemsを作るときにどのような方法を使っていますか?(えっ、Railsしか使ってないって!?まぁ、そういわずに便利なコマンドライン用のツールとかを作るのも楽しいよ〜)
最近では、
Bundlerを使ってRubyGemsを作るのが簡単
ですよね。
作りたいプログラムの名前を決めたら次のコマンドを実行します。これだけで一通りの開発環境とリリース準備ができてしまいます。

$ bundle gem very_nice_tool --bin --verbose

でもちょっと待ってよ。これを仕事で使うならば注意しないといけない点があります。
これが非公開のプログラムだったらRakefileを次のように修正したほうがいい。
修正前のRakefile

require "bundler/gem_tasks"

修正後のRakefile

# releaseタスク以外のbuildタスクとinstallタスクを有効にするため、
# 'bundler/gem_tasks'を使わずにそれらのタスクを定義している。
require 'bundler/gem_helper'
Bundler::GemHelper.new(Dir.pwd).instance_eval do
  desc "Build #{name}-#{version}.gem into the pkg directory"
  task 'build' do
    build_gem
  end
  
  desc "Build and install #{name}-#{version}.gem into system gems"
  task 'install' do
    install_gem
  end
end

Bundlerで作成したプログラムは、次のコマンドを入力するだけで簡単にインターネット上で公開できるようになっています。

$ rake release

それをできないようにしたのが上記の修正です。
万が一ですけど、
仕事で作成した非公開のプログラムをインターネット上で公開
なんてことを想像すると、ぞっとしますよね。