タグ

ブックマーク / elm200.hatenadiary.org (9)

  • will_paginate で表示をカスタマイズする - elm200 の日記(旧はてなダイアリー)

    趣旨 Rails 2.0 になって、ページ送りの機能が Rails 体から消えてしまった。will_paginate という gem か、 paginating_find というプラグインを使うのがいまは普通であるらしい。私は will_paginate で、ちょっとページ送り部分の表示をカスタマイズして使ってみた。 情報ソース will_paginateに移行 will_paginate を使う上で必要な知識がまとまっている。ただし、いまは gem になっているのに注意。 インストール % sudo gem install will_paginateとして gem をインストールする。そして、 config/environment.rb で require 'will_paginate' として読み込めば、準備 OK。 後はコントローラで、 @posts = Post.paginate

    will_paginate で表示をカスタマイズする - elm200 の日記(旧はてなダイアリー)
  • HTML要素の位置取得 - elm200 の日記(旧はてなダイアリー)

    趣旨 ウェブページとして描画された HTML 要素の画面上の位置を取得する。一見簡単そうに見えるこの作業が、現在実装されているブラウザ上ではとてつもなく難しい。そのことを以下で説明していく。 情報ソース この問題に関して調べたところ、最もよく出来ているエントリは、susie-t 氏による offsetTop/offsetLeft/offsetParentの闇 である。とてつもない力作で、実に多くのケースにわたって、包括的に探究が行われている。まるで犯人を追跡する刑事のような執拗さである。氏の自己紹介では「ナマケモノのプログラマ」とか謙遜されているが、これはとてもナマケモノにできる仕事ではない。 基中の基として W3C CSS 2.1 の次の章を抑えておきたい。 8 Box model 9 Visual formatting model 10 Visual formatting mode

    HTML要素の位置取得 - elm200 の日記(旧はてなダイアリー)
  • CSS における display, position, float プロパティの相互関係 - elm200 の日記(旧はてなダイアリー)

    趣旨 要素を描画する位置や大きさに関係する重要な 3 つのプロパティがある。display, position, float である。この3者は複雑に絡みあっていて、いつも頭が爆発しそうになる。今日は、これを整理することから始めたい。 注意事項 まず注意。 私は W3C CSS 2.1 を勉強中の身で、すべての項目にわたってきちんと理解しているとはとてもいえない。したがって、誤りも多く含まれると思うので、その点を留意してほしい。逆に間違っている場所を教えていただけると助かります。ただ、CSS 2.1 はあまりに複雑で、そのままでは頭に入らないので、「なぜこのルールは存在するのか?」ということを常に考えながら勉強していこうと思っている。これからの文章で「このルールってこういう趣旨だよな〜」とかブツブツ言っているかもしれないが、読みたい人は読めばよし、読みたくなければスルーしてほしい。 用語定

    CSS における display, position, float プロパティの相互関係 - elm200 の日記(旧はてなダイアリー)
    yuanying
    yuanying 2008/02/02
  • 安全なログローテーション - elm200 の日記(旧はてなダイアリー)

    ログローテーションの落とし穴 Rails でのデフォルトのロガーは、Ruby 標準添付の Logger クラスを少し変えたものである。ログのサイズが大きくなったとき、サイズやら日付やらを基準にログのアーカイブ化を行う(ログローテーション)することが多い。一番簡単な方法は Developmentモードのログを日毎にローテートする みたいなやり方だ。しかし、複数の Ruby インスタンスがひとつのログファイルを共有すると、うまく動かないのだ。典型的なのは Mongrel Cluster で複数の Rails インスタンスを運用している状況だ。ログローテーションが起こった直後から、"Status: 500 Internal Server Error" というエラーメッセージを吐いて Rails アプリが動かなくなってしまう。 これは、Logger がローテーション時に、 現行のログファイルをアー

    安全なログローテーション - elm200 の日記(旧はてなダイアリー)
  • multiparameter assignment を応用したフォームの入力 - elm200 の日記(旧はてなダイアリー)

    たとえば次のようなフォームは時々見かける。 あなたのご興味(複数選択可) コンピュータ 旅行 車 ... これを Rails でうまく扱う方法を考えてみる。 User モデルに interests という文字型のカラムを設けることにしよう。たとえば車と旅行に興味があれば、"|" を区切り文字として、interests カラムに "車|旅行"のように格納することにする。 View には次のように記述する。 <input type="checkbox" name="user[interests(1s)]" value="コンピュータ"/>コンピュータ <input type="checkbox" name="user[interests(2s)]" value="旅行" />旅行 <input type="checkbox" name="user[interests(3s)]" value="

    multiparameter assignment を応用したフォームの入力 - elm200 の日記(旧はてなダイアリー)
  • ユニットテストから link_to や url_for を使う方法 - Rails で行こう!

    リンクや URL の HTML を生成してくれるヘルパメソッド link_to や url_for をユニットテストで使いたいことがあるかもしれない。これらは基的にコントローラかビューのコンテキストで使うことが前提になっているから、ユニットテストではそのままでは使えない。次のような工夫が必要になる。 1. ユニットテストの先頭でヘルパメソッドの格納されているモジュールをインクルード たとえば EntryTest というユニットテストで、link_to や url_for が使いたいとする。 url_for は ActionController::UrlWriter, link_to は ActionController::UrlWriter にあるから、 class EntryTest < Test::Unit::TestCase fixtures :entries include Ac

    ユニットテストから link_to や url_for を使う方法 - Rails で行こう!
  • file_column プラグイン内部構造 - elm200 の日記(旧はてなダイアリー)

    file_column の内部構造についてメモ。 Rails におけるファイルアップロードの仕組みについて。 まず file_column を使わずにどうやってファイルをアップロードするのかというところから始める。 Entry モデルに image というファイル用のカラムがあったとする。アップロード用のフォームは次のような感じ。 <% form_tag({:action => 'create'}, :multipart => true) do %> <%= file_field 'entry', 'image' %></p> <% end %> file_field() は という HTML を生成するヘルパメソッドである。form_tag() で :multipart => true と指定されていることに注意。これがないとアップロードできない。 アップロードされたファイルを受け取るコ

    file_column プラグイン内部構造 - elm200 の日記(旧はてなダイアリー)
  • Ruby-GetText の導入 - elm200 の日記(旧はてなダイアリー)

    趣旨 私の心はいまだに ActiveHeart にはあるものの、世の中の趨勢はどうやら Ruby-GetText に傾きつつある模様。一念発起して Ruby-GetText を使ってみた。 とりあえずやりたいことは、 フォームの Vaildation 時のエラーメッセージの日語化 (カラム名の日語化を含む) である。この目標達成に絞って考える。 Thanks to these websites ネタ元のサイトに感謝の意を表しつつ。 Rails のためのものぐさな Web アプリケーションの国際化手法 私のような怠け者にはぴったり。 Ruby-GetText ご家 包括的である分、初心者にはいささかとっつきにくいかも。 Ruby-GetText の導入 % sudo gem install gettextこれで OK。他にパッケージは特に必要ないようだ。Ruby-GetText はバイ

    Ruby-GetText の導入 - elm200 の日記(旧はてなダイアリー)
  • Generator の歩き方 - elm200 の日記(旧はてなダイアリー)

    趣旨 script/generate はいわずと知れた Rails のコードジェネレータである。 % cd $RAILSAPP % ruby script/generate scaffold MyModelなどとして使う。このコードでは MyModel に関するコードの雛形が生成されるわけだ。 今日は、この script/generate がどのように動作するか、しつこく追いかけてみる。 (コードジェネレータの内部構造については Generatorプラグインの作り方 に簡潔に書かれている。とてもおすすめ。瀧口さん、いつもお世話になります(ペコリ)) コマンドが実行されるまで まずは、$RAILSAPP/script/generate の中身をのぞいてみよう。*1 #!/usr/bin/env ruby require File.dirname(__FILE__) + '/../config

    Generator の歩き方 - elm200 の日記(旧はてなダイアリー)
  • 1