社内の案件でちょっとした便利rakeタスクを作ったので他プロジェクトでも使えるようにgemとして配布したくなった。
gemを0から作る機会はあんまりなかったので、ちょっと入門的にやってみることにします。
作り方
gemの作り方についてはこちらを参考にしました。
http://masarakki.github.io/blog/2014/02/15/how-to-create-gem/
-tオプションはrspecのテストも同時に生成するオプション。
1 2 |
$ bundle gem mofmof -t |
こんな感じの構成が出来上がります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
$ tree . ├── Gemfile ├── LICENSE.txt ├── README.md ├── Rakefile ├── lib │ ├── mofmof │ │ └── version.rb │ └── mofmof.rb ├── mofmof2.gemspec └── spec ├── mofmof_spec.rb └── spec_helper.rb |
rakeタスクを追加したいので作ります。
lib/tasks/mofmof.rake
1 2 3 4 5 6 |
desc <<-EOS desc. mofmof EOS task :mofmof do puts "もふもふ。" end |
次にRailsプロジェクトのRakefileから読み込まれるようにします。
1 2 3 4 5 6 7 8 9 |
require "mofmof/version" module Mofmof class Railtie < ::Rails::Railtie rake_tasks do load "tasks/mofmof.rake" end end end |
準備OK。
Railsプロジェクトから叩いてみる
超ミニマムの形が出来たのでRailsプロジェクトからRakeタスクを実行してみます。
gemプロジェクトのパスをGemfileに指定します。
Gemfile
1 |
gem 'mofmof', :path => '/path/to/source_code/mofmof' |
bundle installして、rake mofmofタスクが追加されていることを確認。
1 2 3 |
$ bundle install $ rake -T |
実行します。
1 2 3 |
$ rake mofmof もふもふ。 |
できたああああ!!
一回bundle installしておけばgemのupdateとかしないでも修正が即時反映されるので実際動かしながらデバッグ出来ますね。
The following two tabs change content below.

原田 敦
日本CAWのエンジニア。もふもふ部の部長。得意分野はRuby on Railsを使った小規模WEBアプリケーションを高速で開発すること。週末の楽しみは一人お菓子パーティー。三度の飯より小動物をもふもふするのが好きです。

最新記事 by 原田 敦 (全て見る)
- Rails Engineでブログ機能追加するgemを作る - 2015年3月15日
- WEBエンジニア一人だけでサービスを作りきる方法-夫婦のための自動ごはん予定お知らせサービス「GoHaaan」制作でやったこと - 2015年3月7日
- CentOS6でMariaDBのDynamic Columnsを試してみた - 2015年2月28日