Ruby on Rails

[ベトナム]インターネットコミュニティに適合するモデルは何か?

ベトナム人 Rubyist の第一人者である Đào Thanh Ngọc さんがなぜ OpenKH という CMS を作る決意をしたか、その理念について説明している記事が、インターネットコミュニティに適合するモデルは何か?です。とても格調高い記事で、面白くて一気に日本語に訳…

OpenKH のインストール

ベトナムの Ruby コミュニティというエントリで、cntt.tv というサイトを紹介した。このサイトが、事実上、ベトナム人による唯一の Ruby コミュニティになっている。日本に住むベトナム人の Đào Thanh Ngọc さんによって運営が行われている。このサイトは Op…

ベトナムの Ruby コミュニティ

ベトナムには Ruby コミュニティがあるのか?ネットを検索してみたところ、非常に興味ぶかいスレッドに遭遇した。http://cntt.tv/nodes/show/388cntt.tv (CCTT = Công nghệ thông tin, 情報工学)というサイトでの議論である。このサイトの主催者は、Ngoc Da…

ベトナムの PHP コミュニティによる Rails 批判

ベトナムには PHP コミュニティはしっかりあるようである。 彼らの根城は、http://forum.tvphp.net/。その中にちょっと面白いエントリがあったので、紹介する。なかなか辛らつな Rails 批判である。http://forum.tvphp.net/showthread.php?t=8186ベトナム語…

DateHelperJa 0.2 リリース

概要 日付を表示する datetime_select, date_select を日本語化するプラグインである DateHelperJa。2007年4月に Rails 1.2.x 向けとして、最初にリリースした。その後、一部の人々の間で細々と使われ続けたらしい。ありがたいことである。Rails 2.1 対応版…

Selenium on Rails を Rails 2.2 で使う

Selenium on Rails というプラグインがある。Selenium というウェブベースのテストスイートを Rails で使いやすくするためのプラグインである。 とりあえずこのプラグインを Rails 2.2 にインストールするところまでやってみた。実は、Selenium は正式には、…

Rails 2.2 で sqlite3 を使う準備

Debian etch の Rails 2.2.2 で sqlite3 を使おうとして微妙にハマったのでメモ。以下の3手順で sqlite3 が Rails で使用可能になる。 % sudo aptitude install sqlite3 % sudo aptitude install sqlite3-dev % sudo gem install sqlite3-ruby

Rails で W3C-DTF

このサイトによれば、W3C-DTF とは、「1997年9月に W3C の会員企業である Reuters Limited が W3C に提出した ISO 8601の日付形式のプロファイル」で、正確には W3C の正式規格ではないとのこと*1。しかし RSS 方面では幅を利かせているらしく、この validat…

will_paginate の Collection クラスで使える属性

以前も書いたような気がするが、気にせずメモ。will_paginate はページ表示するとき便利な Ruby gem である。 @users = User.paginate(:all, :page => params[:page], :per_page => 30, :order => "created_at DESC") みたいな感じで、ActiveRecord::Base の…

will_paginate で表示をカスタマイズする

趣旨 Rails 2.0 になって、ページ送りの機能が Rails 本体から消えてしまった。will_paginate という gem か、 paginating_find というプラグインを使うのがいまは普通であるらしい。私は will_paginate で、ちょっとページ送り部分の表示をカスタマイズして…

Capistrano に関する個人的まとめ

Capistrano とは、要するに他の複数のサーバのシェルをローカルから一斉に操作できるツール。デプロイに使うのが代表的な用途。 初心者向けの分かりやすい解説サイトは、FFTTというところの Capistranoというエントリ。 % capify (パス名) で(パス名)にあ…

Rails ユーザのための jQuery 情報ソース

趣旨 Rails でアプリケーションを作成すると、もれなくついてくる prototype.js とその仲間たち。prototype.js は Ruby 風の API を備え、その意味では素敵なのだが、老舗な分、設計が古臭く、拡張性に乏しい。私の見るところ、拡張性の高さでは jQuery がよ…

jQuery を用いた in_place_editor_field

趣旨 インプレース編集を可能とする in_place_editor_field。prototype.js 系はアレなので、jQuery 版を作ってみた。といっても、完全互換ではない。mouse hover がらみの処理は省略。みなさんなりの実装をするときの参考にしてもらえれば幸いです。 使い方 …

Ajax.InPlaceEditor でさまざまなフォームを表示する

趣旨 Rails の in_place_editor_field メソッドの本体は、prototype 系ライブラリ script.aculo.us の controls.js にある Ajax.InPlaceEditor である。InPlaceEditor は、フォーム表示に関して、実はあまり柔軟性がない。任意のフォームは使えないだろうか…

Rails 2.0 で in_place_editor_field を使う

Chad Fowler 著「Rails レシピ」の「レシピ 01 同一画面でのフォーム編集」で取り上げられているインプレース編集機能。これは、あるレコードを変更するときに、変更画面に画面遷移することなく、その場で変更ができるという便利な機能だ。もっとも「Ajax ら…

JSON の日付型

Rails 2.0 では対応されたかもしれないが、Rails 1.2 の時代には Time クラスに to_json メソッドが正しく定義されていなかった。「Timeオブジェクトに対するto_jsonメソッド呼び出し」によれば、 ActiveSupport::JSON::Encoders::define_encoder(Time) do |…

Cookie について

基本中の基本ではあるが、案外よく理解していない Cookie について、調べてみた。 基本概念 Wikipedia "HTTP Cookie" によれば、「HTTP cookie(エイチティーティーピークッキー、単にCookieとも表記される)は、RFC 2965などで定義されたHTTPにおけるWebサ…

クリーンな JSONP リクエスト

基本概念 JSONP (JSON with Padding) とは、HTML 文書において、Javascript を使って SCRIPT 要素を動的に追加することにより、リモートサーバへのリクエスト・データの取得を可能にする技術である。 JSON という名前はついているが、取得できるデータは JSO…

らくらく BASIC 認証 on Rails

趣旨 Rails アプリでプロトタイプを作ったときに、BASIC 認証を掛けて限定公開したいと思うときがあるかもしれない。ところが Rails ではそれが案外難しい。Apache をかませないと BASIC 認証ができないからだ。そこで WEBrick を使って BASIC 認証を行うよ…

GETA-Ruby プラグイン公開

趣旨 GETA を Ruby を使って操作する GETA-Ruby ブリッジを作ってみた、というのが昨日までの話。そこで今度は Rails プラグインを作ってみた。Tar ball でインストールするよりはるかに簡単だ。Rails 使いの方は是非試してみてほしい。 前提条件 GETA 第2版…

Rails::Generator について

いま Rails::Generator のクラス群を見直していたのだが、自分でGenerator の歩き方などというエントリを書いておきながら早くも理解不能になっていてびびった。ここで、自分自身への備忘の意味でエントリを記す。(自己中なエントリですんません)Generator…

テストで特定メソッドでのみフィクスチャを読み込む

テストにフィクスチャ(テストデータ)は欠かせない。普通、次のように使う。 class FooTest < Test::Unit::TestCase fixtures :foos, :bars # 読み込む対象のフィクスチャを指定 end こうするとテストのメソッドが呼ばれる前に test/fixturs にあるフィクス…

ActiveRecord::Base の setter メソッドの謎

仕事仲間から ActiveRecord::Base#[:属性名]= と ActiveRecord::Base#(属性名)= の違いをたずねられた。 そこでちょっとしらべてみた。たとえば Entry という AR クラスがあるとして、そこに title という属性があるとしよう。 entry = Entry.find(:first) e…

安全なログローテーション

ログローテーションの落とし穴 Rails でのデフォルトのロガーは、Ruby 標準添付の Logger クラスを少し変えたものである。ログのサイズが大きくなったとき、サイズやら日付やらを基準にログのアーカイブ化を行う(ログローテーション)することが多い。一番…

データベースからテストフィクスチャを抽出する(to_yaml 不使用)

ar_fixtures の出力はなんだかダサくない? データベースから yaml 形式のフィクスチャを抽出するプラグインとしては、ar_fixtures がある。さっきインストールして使ってみたけど、どうも yaml の出力が気に入らない。たとえば次のような感じになってしまう…

file_column でイメージファイルの保存ディレクトリを変更する

file_column はイメージファイルをアップロードするときにはとても重宝する。ただ気に入らないのはイメージファイルを public の直下にどんどん保存していくことだ。正確には $RAILSAPP/public/(モデル名)/(カラム名)/(ID) というディレクトリを作ってそこに…

データベースにテーブルを作らずに ActiveRecord を利用する

ActiveRecord 向けのビューヘルパーメソッドを使いたい 複雑な検索条件などをフォーム上で表現するとき、ページのリロード時の値の保存や値のパースに便利なように、モデルクラスを利用したいときがあるかもしれない。たとえば、 <%= select 'search_cond', …

Migration の歩き方

Rails ではデータベースのテーブルを作成するのに、db/migrate/ にマイグレーション用のファイル # $RAILS_ROOT/db/migrate/001_create_entries.rb class CreateEntries < ActiveRecord::Migration def self.up create_table :entries do |t| t.column :titl…

multiparameter assignment を応用したフォームの入力

たとえば次のようなフォームは時々見かける。 あなたのご興味(複数選択可) コンピュータ 旅行 車 ... これを Rails でうまく扱う方法を考えてみる。User モデルに interests という文字型のカラムを設けることにしよう。たとえば車と旅行に興味があれば、"|"…

validation エラーの表示を validation 順に揃える

たとえば title:string, body:text という2つの属性を持つモデル Entry があったとする。そこで次のような validation を掛けたとしよう。 class Entry < ActiveRecord::Base validates_presence_of :title validates_presence_of :body end これに対する入…