僕は発展途上技術者

長野新幹線に乗っている間に 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

Comments


(Option)


Recent Entries

Recent Comments

Tags

Archives

Admin