railsの過去記事

Posted in rails, iPhone, かなぶん at 18:11:24 by ジュンヤ

かなぶん復活

フリーランスになる少し前、ドリコムの Award on Rails というコンテストがあり、その頃興味を持っていた Ruby on Rails を勉強する良い機会になると思って、「おでかけマペタ」というサービスを作って応募した。グッドインターフェース賞+審査員賞を受賞する結果となり、それが独立してもやっていけるんじゃないかという自信の一つにつながったと思う。

その Award on Rails の3回目に、KCLABさんと何かできないかということになり、なんとなく「かなぶん」を Rails で作って出してみようということになった。

KCLAB さんとは、フリーになりたてで Rails の知識もまだ全然なかったころ、KCLAB さんが主催していた RoR 初心者向けのRailsワークショップに参加したのがきっかけで知り合った。余談だけれど、ワークショップでお会いした方々にはその後、仕事を紹介してもらったり、一緒に仕事をしたりと大変にお世話になっている。

僕がオリジナルかなぶんの仕様を伝え、それまでは教育がメインだったけれど開発の経験も持ちたいという KCLAB さんに開発すべてをお願いすることになった。できあがったのが、

» Web 版「かなぶん」

文字盤をクリックしたときや、間違った操作をおこなったときに効果音をだすようにしたのは KCLAB さんのアイデア。この効果音のおかげでだいぶゲームらしくなり、こども達に触ってもらったときも、音がないときと比べてだいぶ感触が良かった。

効果音をだすなら、ゲームっぽく BGM もあったほうがいいなと思い、ウノウにいたときに同僚だった Kenji Oh くんに曲を作ってもらった。お願いしたら快く引き受けてくれ、しかも一晩くらいで出来上がってきてびっくりした。ゲームにぴったりの曲で、その後しばらく僕の頭の中でかなぶんの BGM が繰り返し繰り返し流れていた。

ウノウにいたときはプログラマーだった Oh くんは、映画音楽の作曲家に転身。すでにいくつか曲をてがけ、ぴあ映画生活に人物情報が載っている。いまは映画の都ハリウッドにて、さらにビッグになるために勉強中だ(かれのブログ -> kenjioh.com)。帰国してくれば久石譲、ハリウッドに残るなら John Williams 級にきっとなってくれると思うので、彼が映画音楽以外で手がけた珍しい例としてかなぶんの BGM にプレミアがつく日が来ることを願っている。

そんなんで完成したかなぶん web 版だが、Award on Rails 3rd では残念ながら受賞せず。しかし、KCLAB さんがそのまま iPhone 版を作ってくれることになり、また効果音と BGM はそのまま受け継がれることとなって、「かなぶん」iPhone 版ができあがるための大きな基盤となった。


railsカテゴリの最近の記事             

Posted in Web, rails at 18:30:39 by ジュンヤ

「あれ、これってどうやるんだっけ?」とググると自分のブログのエントリーが真っ先にひっかかる、というくらい鳥頭の僕は、rails を使い始めた頃から Annotate Models プラグイン(Modelなどのファイルに、スキーマ情報を付け足してくれる)を愛用しています。

長らく、

% plugin install annotate_models

でインストールできる Dave Thomas 版を使っていたのですが、

Unable to annotate [モデル名]: stack level too deep

というエラーが出たので調べてみたら、後継版の gem 版が出ていました。

» ctran’s annotate_models at master - GitHub

% sudo gem install annotate

でインストール、実行するときは、

% annotate

です。旧 Annotate Models のように、スキーマ情報をファイルの冒頭に表示したい場合は、

% annotate -p before

とオプション付きで実行します。


Webカテゴリの最近の記事             

Posted in Web, rails at 23:47:05 by ジュンヤ

業務連絡、業務連絡。

DateHelperJa が Rails 2.3.4 でも動作することを確認しました。

DateHelperJa は date_select/datetime_select を日本語表示させる Rails プラグインです。

参考:
» DateHelperJa プラグインで date_select/datetime_select を和暦に対応させる : 僕は発展途上技術者


Webカテゴリの最近の記事             

Posted in Web, rails at 11:51:48 by ジュンヤ

業務連絡、業務連絡。

DateHelperJa が Rails 2.3.3 でも動作することを確認しました。

DateHelperJa は date_select/datetime_select を日本語表示させる Rails プラグインです。

参考:
» DateHelperJa プラグインで date_select/datetime_select を和暦に対応させる : 僕は発展途上技術者


Webカテゴリの最近の記事             

Posted in Web, rails at 0:49:11 by ジュンヤ

サーバー周り、環境構築でここ数日よくはまる。

以前はまったことがあったのに、またまた同じところではまってしまった自分に厳重注意。

passenger を使うときは .htaccess を削除

皆さんもはまってます。

» Passenger を使う時は public/.htaccess に注意! - yuum3のお仕事日記
» Passenger(mod_rails)と.htaccessではまる - 仙台Rails社長


Webカテゴリの最近の記事             

Posted in Web, rails, ruby at 23:54:25 by ジュンヤ

わかってしまえば超簡単なのですが、2時間近くはまってしまいました。

Slicehost 上の Ubuntu Hardy に ImageMagick と RMagick をインストールするには

% sudo aptitude update
% sudo aptitude install imagemagick libmagick9-dev
% sudo gem install rmagick

であっさり出来てしまうのですが、最初の sudo aptitude update をやっていなかったために、sudo gem install rmagick で

Building native extensions. This could take a while…
ERROR: Error installing rmagick:
ERROR: Failed to build gem native extension.

/usr/bin/ruby1.8 extconf.rb install rmagick
checking for Ruby version >= 1.8.2… yes
checking for cc… yes
checking for Magick-config… no
Can’t install RMagick 2.9.1. Can’t find Magick-config in /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin

というエラーに悩まされ、ああでもこうでもないと散々パッケージのインストール、アンインストールを繰り返してしまいました。

sudo aptitude update は、man の記述

Updates the list of available packages from the apt sources (this
is equivalent to “apt-get update”)

の通り、aptitude でインストールするパッケージ情報を最新に更新するコマンドです。これまで特に更新しなくても問題が起こらなかったため、甘く見てました。今度からは aptitude install でなにかパッケージをインストールするときは、事前に必ず aptitude update をおこなうことにします。

aptitude update 超重要ということはもっと認識されるべきです。(どこにもあまり書かれてない)

あと、sudo aptitude install imagemagick libmagick9-dev がなにごともなく通っているように見えて、ImageMagick が正常にインストールされている、と勝手に思い込んでしまったことも問題がどこにあるかわからなくなってしまったことの原因。

ImageMagick がインストールされているかどうかは、

% which convert
/usr/bin/convert

で確認できるということが、インストールがうまくいった後わかりました。


Webカテゴリの最近の記事             

Posted in Web, rails at 16:28:25 by ジュンヤ

東京 - 長野間は約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


Webカテゴリの最近の記事             

Posted in Web, rails at 1:55:20 by ジュンヤ

日付の入力は、プルダウンよりもカレンダーから入力したほうが楽です。特に日付に加えて時刻まで入力する場合にはなおさらです。

calendar_date_select はそのカレンダー入力を可能にする Rails プラグイン。prototype.js ベース、Javascript で書かれたカレンダーピッカーと連動します。

» calendardateselect - Google Code

ただ、日本語環境で使用するには多少手を入れることが必要です。その手順も含め、Rails 2.3 での導入方法を記しておきます。

追記
calendar_date_select プラグインを fork し、以下延々と書き記した追加点を含めておきました。せっかちな方は、

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

で calendar_date_select + Japanese support プラグインをインストールし、README_JA の指示に従ってください。

» champierre’s calendar_date_select at master - GitHub

インストール

まず本家ページの説明どおり、gem でのインストールを試みて使用してみようとしたところ、

undefined method `calendar_date_select_tag’ for #

というエラーがでます。検索して調べてみたところ、同様の問題に対する解決方法として、プラグインでのインストールが推奨されていたので、

% script/plugin install git://github.com/timcharper/calendar_date_select.git

でインストールします。

layout ファイルに、

<%= javascript_include_tag :defaults %>
<%= calendar_date_select_includes “red” %>

カレンダーを表示したい部分には、

<% form_for(@model) do |f| %>

で囲っている場合には

<%= f.calendar_date_select “date_and_time”, :time => true, :popup => :force %>

そうでない場合には、

<%= calendar_date_select_tag “model[date_and_time]”, Time.now, :time => true, :popup => :force %>

といったように記述することで、以下のようなカレンダー入力が可能となります。

calendar.png

カレンダーアイコンをクリックすればカレンダーがテキストフィールドの下に開きます。

calendar2.png

各オプションの役割を知るには、CalendarDateSelect Demoを参考にするとよいでしょう。テキストフィールド内の自由入力を許してしまうと、日付フォーマットのチェックが必要になってしまうので、これを禁止してしまう :popup => :force をつけるのがおすすめです。

さて、これでひとまず動作はするのですが、このままだと日付のフォーマットやインターフェースが英語のままで具合が悪いです。順に日本語化していきます。

表示の日本語化

public/javascripts/calendar_date_select/locale 以下に ja.js というファイルを新規作成し、以下をそのままコピー & ペーストします。

次に、layout ファイル内の記述を

<%= javascript_include_tag :defaults %>
<%= calendar_date_select_includes “red”, :locale => ‘ja’ %>

のように変更、:locale => ‘ja’ を付け足しています。

これで曜日などの表示が日本語化されるはずです。

日付フォーマットの日本語化

2009/01/31 13:30 のような YYYY/mm/dd HH:MM というフォーマットを日本式とみなします。

別の形式を使いたい場合には、以下の説明を適当に読み替えてください。

public/javascripts/calendar_date_select 以下に format_japanese.js というファイルを新規作成し、以下をそのままコピー & ペーストします。

次に、config/environments.rb に以下を追記します。

以上で日付のフォーマットも変更できました。

微調整をいくつか

カレンダー内の時刻のプルダウンとそれに続く 現在 | OK | 閉じる のメニューの一行が長くなってしまって、レイアウトが乱れてしまいます。

そこでこれを修正するため、public/javascripts/calendar_date_select/calendar_date_select.js の 220 行目に br タグを挿入する処理を追加します。

次に、細かい話なのですが、IE などのブラウザでカレンダーアイコンにカーソルをあてると、「Calendar」とツールチップに表示されます。これを「カレンダーから入力」という日本語表示に変更します。

vendor/plugins/calendar_date_select/lib/calendar_date_select/form_helpers.rb の 202 行目に alt 属性を追加します。

以上、日本語化した結果は以下の通り。

calendar3.png


Webカテゴリの最近の記事             

Posted in Web, rails at 19:33:34 by ジュンヤ

date_select/datetime_select を日本語表示させる Rails プラグイン DateHelperJa が Rails 2.3.2 でも動作することを確認しました。

Rails のバージョンがあがるたびにテストアプリケーションを作って、DateHelperJa プラグインをインストールして、date_select を使うようなモデルを作成して、といったルーチンワークをいちいちおこなうのは面倒です。

そこで、Rails 2.3 より使用可能になったアプリケーションテンプレート機能を使い、以下のコマンドを実行することで即座にサンプルアプリを作成できるようにしておきました。

% rails sample -m http://github.com/elm200/date_helper_ja/raw/master/templates/date_helper_ja.rb

参考:
» DateHelperJa プラグインで date_select/datetime_select を和暦に対応させる : 僕は発展途上技術者


Webカテゴリの最近の記事             

Posted in rails at 9:48:19 by ジュンヤ

以前の案件の Rails アプリケーションで

# rake db:migrate

を実行してみたところ、うまく動くは動くのだが

[RAILS_APP]/config/boot.rb:26:Warning: Gem::SourceIndex#search support for String patterns is deprecated

という Warning メッセージが出る。

config/boot.rb の26行目

rails_gem = Gem.cache.search(’rails’, “~>#{version}.0″).sort_by { |g| g.version.version }.last

rails_gem = Gem.cache.find_name(’rails’, “~>#{version}.0″).sort_by { |g| g.version.version }.last

に修正すれば、Warning は消える。

» #8729 ([PATCH] Rake rails:freeze:gems loads the last gem that starts with the string “rails”) - Rails Trac - Trac

に詳細が書かれている。

In the source for the rake task, the code is calling the search method for the Gem SourceIndex. This method matches anything that has the pattern of the string passed in, in this case “rails” which would include any gem starting with the string “rails.” I have patched this code to use the find_name method that returns the exact match of the string that is passed in; in this case, “rails.”

search メソッドだと、rails で始まるすべての gem にマッチしてしまうので、”rails” gem だけにマッチさせるよう find_name に変更された、とのこと。


railsカテゴリの最近の記事             

« 前の記事 ·