僕は発展途上技術者

長野新幹線に乗っている間に Rails プラグインを作ってみる

東京 - 長野間は約1時間40分。その間に Rails プラグインを作り、公開して、ブログまで書けるかやってみました。


作るプラグインはとても簡単。


帳票などの機能を作っていると、日付や時刻を年度で考えなければならない、ってときがあります。

そこで、DateやTimeクラスを拡張し、fiscal_yearというメソッドを追加して、



% script/console

Loading development environment (Rails 2.2.2)

>> Date.new(2009, 3, 31).fiscal_year

=> 2008

>> Date.new(2009, 4, 1).fiscal_year

=> 2009


のように年度を返すようなことをやっていたのですが、これをプラグイン化してみました。


13:24 東京駅出発。


パソコンをリュックから取り出し、準備万端。


上野駅到着。


script/generate plugin fiscal_year


でプラグインのひな形を作成。


う、emobile つながらない。ま、いいや。とりあえずすでに config/initializers 以下に置いて利用していたコードをコピーします。


ほとんどコピペですむので早くもプラグイン完成。



% script/console

Loading development environment (Rails 2.2.2)

>> Date.new(2009, 3, 31).fiscal_year

NoMethodError: undefined method `fiscal_year' for Tue, 31 Mar 2009:Date

from (irb):1


ありゃ NoMethodError。


init.rb に



require 'fiscal_year'


と書き忘れてました。



% script/console

Loading development environment (Rails 2.2.2)

>> Date.new(2009, 3, 31).fiscal_year

=> 2008

>> Date.new(2009, 4, 1).fiscal_year

=> 2009


OK。ほぼ完成。


README を書く。


大宮駅でやっと emobile つながった。


github にレポジトリを作り、表示された以下の指示の通りに実行。



mkdir fiscal_year

cd fiscal_year

git init

touch README

git add README

git commit -m 'first commit'

git remote add origin git@github.com:champierre/fiscal_year.git

git push origin master


git push origin master で、公開準備も整った。


写真をぱしゃり。


20090403135648.jpg


サンプルアプリから、githubに置いたプラグインをインストールして実行してみる。



script/plugin install git://github.com/champierre/fiscal_year.git


テストを書き足す。


» The Complete Guide to Rails Plugins: Part II | Ruby on Rails for Newbies


を参考に。


A surprisingly large number of plugins have no tests at all.


と揶揄されている。僕は書くぞー。


なんの進展もないまま高崎に着いちゃった。


山がみえてきた。トンネルも多いし、これはやばい。emobile 切れそう。


軽井沢につくころ、ようやくテストが通った。


テストの冒頭に書く



require 'test/unit'

require 'test/test_helper'

require File.dirname(__FILE__) + '/../lib/fiscal_year'


あたりでつまづいていた。


レポジトリに再度プッシュ、サンプルアプリからもう一回プラグインをインストールして、テストまで通るか試す。



% script/plugin install git://github.com/champierre/fiscal_year.git

Initialized empty Git repository in /Users/ishihara/rails/sample/vendor/plugins/fiscal_year/.git/

remote: Counting objects: 19, done.

remote: Compressing objects: 100% (15/15), done.

remote: Total 19 (delta 1), reused 0 (delta 0)

Unpacking objects: 100% (19/19), done.

From git://github.com/champierre/fiscal_year

* branch HEAD -> FETCH_HEAD

% cd vendor/plugins/fiscal_year

% rake test

(in /Users/ishihara/rails/sample/vendor/plugins/fiscal_year)

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby -Ilib:lib:test "/Library/Ruby/Gems/1.8/gems/rake-0.8.3/lib/rake/rake_test_loader.rb" "test/fiscal_year_test.rb"

Loaded suite /Library/Ruby/Gems/1.8/gems/rake-0.8.3/lib/rake/rake_test_loader

Started

..

Finished in 0.00118 seconds.


2 tests, 2 assertions, 0 failures, 0 errors


ok。完成。


残り時間は急いで、このエントリーの下書きを書く。酔いそう。


エントリーも完成。


15:04 長野駅到着。


FiscalYear プラグインは以下で公開しています。


» champierre's fiscal_year at master - GitHub


プロフィール

株式会社まちクエスト代表、つくる社LLC代表。

Scratchで楽しく学ぶ アート&サイエンスRaspberry Piではじめる どきどきプログラミングを書きました。

オンラインコンテンツ: 大人のためのScratch

Amazonから図書館検索 Libron、iPhoneアプリ ひらがなゲーム かなぶん を作っています。

Email: webmaster at champierre dot com

Twitter @jishiha

最近のエントリー

アーカイブ