RubyライブラリのRubyGemは知らないとハードル高そうに見えますが、実際にはかなり簡単に作れます。
これから積極的にRubyGemを作ってOSSの世界に貢献していきたいので簡単な作り方をまとめました。
🎂 準備
まずは準備のためにgem
のアップデートと、Bundler
のアップデートを行います。
# gem自信のアップデート |
🐯 ひな型の作成
今回はtest_gem
という名前のGemを制作していきます。
# test_gemのひな形を作成(Rspec付き) |
ちなみに、Rails PluginのGemを作成する場合にはgem install rails
をしたうえで次のコマンドを実行します。
# test unitをスキップしたpluginの作成 |
今回はbundle gem test_gem
の方を説明していきます。Rails Pluginの詳細は次のサイトに解説があります!
rails pluginコマンドで簡単に出来るgemの作成方法
🚜 作成されたファイルの概要
今回作成されたファイルの簡単な説明。
bundle gem test_gem -t create test_gem/Gemfile create test_gem/Rakefile create test_gem/LICENSE.txt create test_gem/README.md => このgemの説明や使い方を記述 create test_gem/.gitignore create test_gem/test_gem.gemspec => このgemの説明や依存関係などを記述 create test_gem/lib/test_gem.rb => プログラムを記述 create test_gem/lib/test_gem/version.rb => このgemのバージョン情報を記述 create test_gem/.rspec create test_gem/spec/spec_helper.rb create test_gem/spec/test_gem_spec.rb create test_gem/.travis.yml => travisを使う際の設定を記述
😸 test_gem.gemspecの修正
test_gem.gemspecの中身は以下のようにになっています。
# coding: utf-8 |
最低限修正が必要な部分を抜き出すと次のようになります。
# このgemの説明を書く spec.summary = %q{TODO: Write a gem summary} spec.description = %q{TODO: Write a gem description} # このgemのHomepageを書く spec.homepage = 'http://morizyun.github.io' # 依存するgemが存在する場合のみ、次のように指定 spec.add_dependency 'xxxx', '~>x.x' # 開発時だけに必要な依存gemが存在する場合のみ、次のように指定 spec.add_development_dependency 'yyyy', '~>y.y'
🗻 Gemの実装
今回はテスト的にHello World!
と出力するようにします。lib/test_gem.rb
を開いて次のように変更します。
require 'test_gem/version' |
😀 実行してみよう
では先ほど作成したgemを実行してみます
# gem のインストール |
ということで無事実行できました!
🚕 RSpecを書こう
先ほどのTestGem.greet
のテストをRSepcで書いていきます。spec/test_gem_spec.rb
を次のように変更します。
require 'spec_helper' |
😎 実行コマンドを追加
コンソール上でrun_test_gem
というコマンドを使うとgemの内容を実行したい場合は
たとえばbin/run_test_gem
を作成して、次のように書きます。
#!/usr/bin/env ruby |
🤔 Gemをパッケージ化します
次にGemをパッケージ化します。コマンドとしては、gem build xxx.gemspec
です。
gem build test_gem.gemspec |
👽 Gemを公開する
『GitHub』などのpublicなリポジトリを作成。
# まずはgit commit |
今回はすでに登録されているgemと名前がかぶっているので登録はできませんが、被らない名前にすればこれで公開できます。
🐡 今回のサンプルソース
今回のサンプルソースは次のリポジトリにあります。良ければForkして試してみてください!
🐞 参考リンク
Gemの作り方まとめ 普通のgem編 - masarakki’s blog
必要最小のgemの作り方とインストール - ザリガニが見ていた…。