Help us understand the problem. What is going on with this article?

チーム内にRuby製のツールを広める時にはGemにしておくべき

More than 5 years have passed since last update.

もしかしたら、Rubyに慣れてない人には気付いていない人も居るかと思ったので、
カジュアルにRubyGemsを活用する事のメリットについて書いておきます。

普通、Rubyのgemパッケージは、gem installでインストールできるようにrubygems.orgにホスティングしておくのが基本です。

とは言え、世界的に公開されるものなので、ちゃんとgemとしての体裁を整えておかないと何か恥ずかしいし、説明とかも英語でちゃんと書いとかないと、って考えると面倒なレベルのツールとかあると思います。
API叩くための簡易コマンドとか、社内ツールの処理自動化とか。

しかし、Bundlerとgitのおかげで、現在はそういった事を余り気にする必要が無くなっています。

Bundlerは、gitリポジトリから直接コードをクローンして、パッケージ化されたgemと同様に扱う事ができます。

参考: Bundler: The best way to manage a Ruby application's gems

そのためrubygems.orgにホスティングする必要はありません。
公開しても問題ないものならGitHubに、クローズドな情報が入っているものは社内のgitlabやGitHubのプライベートリポジトリに配置しておけばOKです。
後は、Gemfileに書けば、gemとして利用できます。

gitリポジトリから参照しているgemはGemfile.lockでこんな感じで管理されています。

GIT
  remote: git://github.com/joker1007/ghost_writer.git
  revision: bdee7051d5555d8be92045c1d45cd4ac0dee40b1
  specs:
    ghost_writer (0.2.0)
      activesupport (>= 3.0.0)
      rspec-rails (~> 2.11)
      trollop

この方法には以下のようなメリットがあります。

  • READMEにGemfileの書き方さえ書いておけば簡単にチームメンバーがインストールできる事。
  • 更新したい時は、gitリポジトリにpushして、bundle updateを実行するだけ
  • Bundlerはコミットハッシュでgemを特定しているので、バージョン番号を更新する必要もない
  • Jenkins等で利用するのが楽になる
  • 他の人の改善案もpull request等で容易に取り込める

というわけで、ツールの更新と配布をほとんどgitの機能に任せる事ができます。

gem化するのにも大した手間はかかりません。

% bundle gem mytool -b
      create  mytool/Gemfile
      create  mytool/Rakefile
      create  mytool/LICENSE.txt
      create  mytool/README.md
      create  mytool/.gitignore
      create  mytool/mytool.gemspec
      create  mytool/lib/mytool.rb
      create  mytool/lib/mytool/version.rb
      create  mytool/bin/mytool
Initializating git repo in /home/joker/mytool

後は、bin/mytoolを編集して、コマンドラインツールを簡単に作れるwycats/thorなどを利用すれば、お手軽コマンドツールが作れます。
後は、このディレクトリをgitリポジトリに上げてしまうだけです。

こんな感じで、カジュアルにGem化してツールを広めていくと、色々楽になるんで良いんじゃないかなと思っています。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away