Ruby on Rails

テストはとことん自動で楽しく...。

ここまで、テストコードの実験のような気持ちでunitテスト、functionalテストと試してきた。それぞれのテストを実行する為には、rake test:units、またはrake test/functionalsとターミナルから入力して実行していた。しばらくすると、このコマンドはテスト…

コントローラーをテストしてみる

コントローラーのテストも、test/functionalフォルダ以下に自動生成されていた。内容は以下。つまり、RESTなアクションについては、すぐにでも使えそうなテストとして既に準備されていた。 自分なりに理解したテストの内容は、コメントにして追記しておいた…

テストデータを作ってテストする

testデータベースは毎回リセットされる 動作確認をしていると、あらかじめデータベースにその動きを確認するのに都合の良いデータを登録しておきたい場合もある。Railsのテスト環境では、test/fixturesフォルダ以下にテーブル名(複数形).yml、まはたテーブル…

テストコードによる動作確認

自分の書いたコードが、思った通りの動きをしているかどうか...。正直、これまではマウスクリックテストだった。つまり、毎回手動による動作確認をしていたのだ。 サーバーを立ち上げ、ブラウザでページを開き、マウスやキーボードで操作して動作を確認する…

Amrita2を快適に利用する

gem戦記さんの記事を読んで、Rails2.0.2環境の中で、Amrita2をより快適に利用する設定が分かってきた。これでもう.erbファイルを残す理由は全くなくなってしまった。すべてのファイルを.a2ファイルに変換して、ERbも利用しつつ、AmXML記法の恩恵も受けながら…

Amrita2のフィルター色々

Amrita2のフィルターを調べてみた。以下は自分で試したものだけ。この他にもまだ素晴らしいフィルターがたくさんある。 フィルターとは? <<:data | フィルター名称 ...な書式を利用して、:dataの内容に対し、様々な加工をして出力することができる。 前回…

Amrita2での書き方例OKとNG

以下は自分自身の理解不足からやってしまった、AmXML記法での書き方例。忘れたくないのでメモ。 NGは失敗例(エラーが発生) OKは成功例(予想通りの表示結果) 1行で書きたい # 時には、以下のように書きたくなるが、それはダメ...。 # NG <<table< <<tr< <<th %= _("Slip|Number")>> # ちゃんとイ</table<>…

Amrita2でビューはさらにシンプルに!

Rails2.0環境に移行して、RESTなルート設定やオブジェクトによるURL指定、form_forの:builderオプションの仕組み等を試してきた。今はそのポリシーを改めて強く感じる。当たり前のことは書かない、同じことは繰り返さないと。現在のtest_slip202プロジェクト…

2.0のcookie session storeを体感する

Rails2.0の変更点で、セッション(session)データの保存先がクッキー(cookie)になったということを、よく目にする。確認してみると、確かに以前はtmp/sessionsフォルダの中に常にセッションファイルがあり、増え続けていたが、2.0環境にしてからはいつも空っ…

2.0のREST、ラビリンス状態...。

前回、伝票の明細行を挿入・削除・コピーするためのルート設定を:collectionオプションで以下のように設定した。 # ルート設定: config/routes.rb ActionController::Routing::Routes.draw do |map| map.resources :slips, :collection=>{:insert_row=>:post…

2.0の:_methodには:_methodで対抗!

以前から悩んでいた、link_to_remoteでリクエストがPUTメソッドとして扱われてしまい、常にupdateアクション呼び出しになってしまう現象への対策の続き... 2.0のPUTにハマる 2.0のPUT問題をRoutes設定で解決する PUT問題の始まり 以下のような環境で、link_t…

2.0のmap.resourcesのオプション設定いろいろ

今までおろそかにしていた「ルート設定」ではあるが、Rails2.0からは避けて通ることができない*1と今更ながら思い直し、いろいろ試してみた。以下はその実験結果。 基本 追加オプションなしの基本ルート設定map.resources :slipsによって、以下のルート規則…

2.0のPUT問題をRoutes設定で解決する

前回のlink_to_remoteでリクエストがPUTメソッドとして扱われてしまい、常にupdateアクション呼び出しになってしまう現象への対策は、link_to_remoteの:submitオプションで送信範囲を限定してしまうという、後ろ向きな対策だった。このような対策をしてしま…

2.0のPUTにハマる

test_slip202プロジェクトは、Rails1.2.6環境で作り始めた明細行を持つ伝票入力のサンプルプロジェクトだ。1.2.6環境までは調子よく動いている。最近、Rails2.0.2環境にしてから、明細行の挿入・削除・コピーがeditページの時だけ機能しなくなっていることに…

2.0の機能を利用してみる

引き続き、Rails2.0.2環境でのscaffoldからの作業を淡々と続ける...。 フォームヘルパーlabelを使う Rails2.0ではフォームヘルパーにlabelメソッドが追加された。 <p> <label for="slip_number">Number</label><br/> <%= text_field 'slip', 'number' %> </p> 上記は、labelヘルパーを利用して、以下のよう…

textmate_footnotesとTextMateを組み合わせた使い心地に感動する

またまた面白いソフトウェア(Railsプラグイン)に出会った。textmate_footnotesはRailsで開発中のページ下部に、開発に便利なリンクを追加してくれるらしい。こういうのを見ると、まずはインストールして実際に体感してみたくなる。早速インストール。(た…

2.0でRuby-GetTextを使う

Ruby-GetTextの設定もRails2.0.2環境用に変更しておく必要があった。 rails2.0.2のscript/consoleで確認すると、デフォルト設定がUTF-8*1だった。$KCODE = 'u'は、コメントアウトしておいた。(コメントアウトしないで、そのまま残しても良いと思う。)もし…

2.0のscaffoldで上書きする

一度scaffoldを実行した後、同じモデルに何らかの変更をして再度scaffoldを実行したい場合、最初と同じ手順では実行できなかった...。 マイグレーションファイルの取り扱い 2度目のscaffoldを実行したとき、同じモデルで既にマイグレーションファイルが存在…

2.0のscaffoldから書き直してみる

Rails2.0.2環境にして試行錯誤中。前回までにRails1.2.6の既存プロジェクトを2.0.2環境で稼働出来るようにはなった。しかし、プロジェクトを新規作成してから始めようとすると、また勝手が違っていることに気付く。ここは基本に返って、scaffoldから同じプロ…

AutoPagerizeなwill_paginateにしておく

classic_paginationのREAD_MEには、以下のように書かれている。 This code was extracted from Rails trunk after the release 1.2.3. WARNING: this code is dead. It is unmaintained, untested and full of cruft.There is a much better pagination plug…

Rails2.0.2を使ってみる

form_forのことなどを調べているうちに、Rails1.1.6、1.2.6、そして2.0.2とバージョンアップを重ねるごとに、便利なヘルパメソッドもますます充実していることに気付いた。(sum、label、div_for、content_tag_for...)そろそろRails2.0.2環境も触っておかな…

AutoPagerizeに対応する

AutoPagerizeという素晴らしい!ソフトウェアに出会った。Firefoxの機能拡張スクリプトだ。どのような機能を提供してくれるかというと、webページの下までスクロールしてくると、普通は「次ページ」などのリンクをクリックしてその続きを読み込むことになる…

form_forブロックの中のrender :partialの悩み

重複のあるnewとedit 通常、form_forを使ってnew、editを書くと以下のような状況になるかと...。(中身がとても似ている。) # app/views/slips/new.rhtml <% form_for :slip, :url=>{:action=>'create'} do |f| %> <%= f.text_field :number %> <%= f.text_…

render :partialカウンター、オブジェクト

Railsでページを表示する時に必ずお世話になるrenderメソッド。そんな一番身近とも言えるrenderメソッドなのに、昨日初めて知った機能がある。小さな機能なのだが、今まで知らずに使っていて大分損をした気分だ...。 覚えたこと 以下のようなコード例で考え…

インデックス付きテーブルフォームの雛形が欲しい!

前回に引き続き、今度は明細行のフォームの雛形も作ってみる。Slipインスタンスのform_forに含まれる明細行はテーブル形式で複数行あり、それぞれが独自のインデックスを持っている。form_for以前の状態は以下のようになっている。 <%# ビュー: app/views/mo…

ラベル付きエラー表示付きフォームの雛形が欲しい!

前回までにform_forの:builderオプションの基本が理解できたので、あとは自分の作りたいように作ってみる。前回までのフォームは以下のようになっている。 <% form_for :slip, :url=>{:action => 'create'}, :html=>{:autocomplete=>'off'} do |f| %> <p><label for="slip_number">伝票No.</label><br /></p>…

form_forの使い方

Railsのバージョンが最新版は2.0.2となっている。しかし、自分の頭の中は依然、1.1.6の状態だ...。勉強のスピードよりRailsの進化の方が早い。1.2.6までは、1.1.6の機能でも利用できたが、Rails2.0以降はガラリと進化し、1.1.6までの書き方では通用しなくな…

改良中...効率よく挿入、削除、コピーする。

1:多の複数モデルかつ多明細を、1アクションで同時に保存するサンプルで、挿入、削除、コピーも可能になり、前回、「これなら満足」と書いたが、実はまだまだ満足してはいけない...。 現状では、挿入、削除、コピーのアクションリンクをクリックした後、明…

改良中...明細行を挿入、削除、コピーしたい!

伝票入力していると、ユーザーは必ず明細行の挿入、削除、コピーをしたくなるものだ。ほとんど内容が同じ行を繰り返し入力する気にはなれないし、入力忘れがあったらその位置に挿入したくなるし、不要な行は削除したくなる。自然な要望だ。そもそもコンピュ…

MacOS X10.5 Leopard環境にRuby-GetTextをインストールする

Railsを使うなら、Ruby GetTextがインストールされていると、いろいろな面で幸せになる。gettext本来の目的は多言語化だが、翻訳文字列を抽出して置き換えるという機能とツールは、それ以外の目的にも便利に使える。 日本語を別の日本語に置き換えるという使…