Ruby on Rails
ベトナム人 Rubyist の第一人者である Đào Thanh Ngọc さんがなぜ OpenKH という CMS を作る決意をしたか、その理念について説明している記事が、インターネットコミュニティに適合するモデルは何か?です。とても格調高い記事で、面白くて一気に日本語に訳…
ベトナムの Ruby コミュニティというエントリで、cntt.tv というサイトを紹介した。このサイトが、事実上、ベトナム人による唯一の Ruby コミュニティになっている。日本に住むベトナム人の Đào Thanh Ngọc さんによって運営が行われている。このサイトは Op…
ベトナムには Ruby コミュニティがあるのか?ネットを検索してみたところ、非常に興味ぶかいスレッドに遭遇した。http://cntt.tv/nodes/show/388cntt.tv (CCTT = Công nghệ thông tin, 情報工学)というサイトでの議論である。このサイトの主催者は、Ngoc Da…
ベトナムには PHP コミュニティはしっかりあるようである。 彼らの根城は、http://forum.tvphp.net/。その中にちょっと面白いエントリがあったので、紹介する。なかなか辛らつな Rails 批判である。http://forum.tvphp.net/showthread.php?t=8186ベトナム語…
概要 日付を表示する datetime_select, date_select を日本語化するプラグインである DateHelperJa。2007年4月に Rails 1.2.x 向けとして、最初にリリースした。その後、一部の人々の間で細々と使われ続けたらしい。ありがたいことである。Rails 2.1 対応版…
Selenium on Rails というプラグインがある。Selenium というウェブベースのテストスイートを Rails で使いやすくするためのプラグインである。 とりあえずこのプラグインを Rails 2.2 にインストールするところまでやってみた。実は、Selenium は正式には、…
Debian etch の Rails 2.2.2 で sqlite3 を使おうとして微妙にハマったのでメモ。以下の3手順で sqlite3 が Rails で使用可能になる。 % sudo aptitude install sqlite3 % sudo aptitude install sqlite3-dev % sudo gem install sqlite3-ruby
このサイトによれば、W3C-DTF とは、「1997年9月に W3C の会員企業である Reuters Limited が W3C に提出した ISO 8601の日付形式のプロファイル」で、正確には W3C の正式規格ではないとのこと*1。しかし RSS 方面では幅を利かせているらしく、この validat…
以前も書いたような気がするが、気にせずメモ。will_paginate はページ表示するとき便利な Ruby gem である。 @users = User.paginate(:all, :page => params[:page], :per_page => 30, :order => "created_at DESC") みたいな感じで、ActiveRecord::Base の…
趣旨 Rails 2.0 になって、ページ送りの機能が Rails 本体から消えてしまった。will_paginate という gem か、 paginating_find というプラグインを使うのがいまは普通であるらしい。私は will_paginate で、ちょっとページ送り部分の表示をカスタマイズして…
Capistrano とは、要するに他の複数のサーバのシェルをローカルから一斉に操作できるツール。デプロイに使うのが代表的な用途。 初心者向けの分かりやすい解説サイトは、FFTTというところの Capistranoというエントリ。 % capify (パス名) で(パス名)にあ…
趣旨 Rails でアプリケーションを作成すると、もれなくついてくる prototype.js とその仲間たち。prototype.js は Ruby 風の API を備え、その意味では素敵なのだが、老舗な分、設計が古臭く、拡張性に乏しい。私の見るところ、拡張性の高さでは jQuery がよ…
趣旨 インプレース編集を可能とする in_place_editor_field。prototype.js 系はアレなので、jQuery 版を作ってみた。といっても、完全互換ではない。mouse hover がらみの処理は省略。みなさんなりの実装をするときの参考にしてもらえれば幸いです。 使い方 …
趣旨 Rails の in_place_editor_field メソッドの本体は、prototype 系ライブラリ script.aculo.us の controls.js にある Ajax.InPlaceEditor である。InPlaceEditor は、フォーム表示に関して、実はあまり柔軟性がない。任意のフォームは使えないだろうか…
Chad Fowler 著「Rails レシピ」の「レシピ 01 同一画面でのフォーム編集」で取り上げられているインプレース編集機能。これは、あるレコードを変更するときに、変更画面に画面遷移することなく、その場で変更ができるという便利な機能だ。もっとも「Ajax ら…
Rails 2.0 では対応されたかもしれないが、Rails 1.2 の時代には Time クラスに to_json メソッドが正しく定義されていなかった。「Timeオブジェクトに対するto_jsonメソッド呼び出し」によれば、 ActiveSupport::JSON::Encoders::define_encoder(Time) do |…
基本中の基本ではあるが、案外よく理解していない Cookie について、調べてみた。 基本概念 Wikipedia "HTTP Cookie" によれば、「HTTP cookie(エイチティーティーピークッキー、単にCookieとも表記される)は、RFC 2965などで定義されたHTTPにおけるWebサ…
基本概念 JSONP (JSON with Padding) とは、HTML 文書において、Javascript を使って SCRIPT 要素を動的に追加することにより、リモートサーバへのリクエスト・データの取得を可能にする技術である。 JSON という名前はついているが、取得できるデータは JSO…
趣旨 Rails アプリでプロトタイプを作ったときに、BASIC 認証を掛けて限定公開したいと思うときがあるかもしれない。ところが Rails ではそれが案外難しい。Apache をかませないと BASIC 認証ができないからだ。そこで WEBrick を使って BASIC 認証を行うよ…
趣旨 GETA を Ruby を使って操作する GETA-Ruby ブリッジを作ってみた、というのが昨日までの話。そこで今度は Rails プラグインを作ってみた。Tar ball でインストールするよりはるかに簡単だ。Rails 使いの方は是非試してみてほしい。 前提条件 GETA 第2版…
いま Rails::Generator のクラス群を見直していたのだが、自分でGenerator の歩き方などというエントリを書いておきながら早くも理解不能になっていてびびった。ここで、自分自身への備忘の意味でエントリを記す。(自己中なエントリですんません)Generator…
テストにフィクスチャ(テストデータ)は欠かせない。普通、次のように使う。 class FooTest < Test::Unit::TestCase fixtures :foos, :bars # 読み込む対象のフィクスチャを指定 end こうするとテストのメソッドが呼ばれる前に test/fixturs にあるフィクス…
仕事仲間から ActiveRecord::Base#[:属性名]= と ActiveRecord::Base#(属性名)= の違いをたずねられた。 そこでちょっとしらべてみた。たとえば Entry という AR クラスがあるとして、そこに title という属性があるとしよう。 entry = Entry.find(:first) e…
ログローテーションの落とし穴 Rails でのデフォルトのロガーは、Ruby 標準添付の Logger クラスを少し変えたものである。ログのサイズが大きくなったとき、サイズやら日付やらを基準にログのアーカイブ化を行う(ログローテーション)することが多い。一番…
ar_fixtures の出力はなんだかダサくない? データベースから yaml 形式のフィクスチャを抽出するプラグインとしては、ar_fixtures がある。さっきインストールして使ってみたけど、どうも yaml の出力が気に入らない。たとえば次のような感じになってしまう…
file_column はイメージファイルをアップロードするときにはとても重宝する。ただ気に入らないのはイメージファイルを public の直下にどんどん保存していくことだ。正確には $RAILSAPP/public/(モデル名)/(カラム名)/(ID) というディレクトリを作ってそこに…
ActiveRecord 向けのビューヘルパーメソッドを使いたい 複雑な検索条件などをフォーム上で表現するとき、ページのリロード時の値の保存や値のパースに便利なように、モデルクラスを利用したいときがあるかもしれない。たとえば、 <%= select 'search_cond', …
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…
たとえば次のようなフォームは時々見かける。 あなたのご興味(複数選択可) コンピュータ 旅行 車 ... これを Rails でうまく扱う方法を考えてみる。User モデルに interests という文字型のカラムを設けることにしよう。たとえば車と旅行に興味があれば、"|"…
たとえば title:string, body:text という2つの属性を持つモデル Entry があったとする。そこで次のような validation を掛けたとしよう。 class Entry < ActiveRecord::Base validates_presence_of :title validates_presence_of :body end これに対する入…