Rails

お願い、待って。

PostgreSQLは丈夫だし、速度も出る。使いやすい。だけど結構でかいから、あまりばかすか使うと酷いことになる。 そして、フットプリントが小さくていけてるという噂のFirebird。ARは対応してるんだけど、残念ながらrake migrateが使えない。生SQLでcreate ta…

はじめてのなんとか。

OpenSearchへの対応方法がまとまった日本語のドキュメントはないものか。オリジナルの英語の読めばいいんだけど、日本語が有ればそっちの方がいい。

RJSの落とし穴。

Railsで日本語扱う(と言うか、UTF-8で動かす)場合、常套手段としてcontroller/application.rbで before_filter :set_chaset def set_charset @headers["Content-Type"] = "text/html; charset=utf-8" end とやってContent-Typeにcharsetを仕込みますけど、こ…

宛て先の書き方。

MNではトラックバックURLを、 http://marble.tarenari.jp/ghost/show/126/trackback/new のように、専用のURLにしています。この場合、トラックバック送信対象のページは/trackback/newを除いたURL。 かたやはてなダイアリーなど、はてなのおおかたのサービ…

タグ入力支援。

はてなブックマークの登録ページみたいに、クリックでのタグ入力を実現するJavaScriptのライブラリなんてないかな。自分でカーソル位置に挿入するコード書かなきゃダメ?

リサイクル。

断片キャッシュ(Fragment caching)を次のようにファイルとして保存してたとする。 ActionController::Base.fragment_cache_store = ActionController::Caching::Fragments::FileStore.new("/path/to/cache/directory") 普通の/foo/show/somethingの断片キャ…

gemはいってる。

Locomotiveの1系列の時は、bundleにあらかじめいくつかのメジャーなgemがインストール済みだったはずなんだけど、2系列になってからは削られてるみたい。 必要な場合はターミナル出して、 gem install なんとか で入れとかないと500出して止まっちゃう。 ち…

その場で編集。

In Place Editorで、値の書き換えが終わったらJavaScriptのコードを実行させたい*1んだけど、RailsのJavaScriptHelperでのやり方がよくわかんない。 <%= in_place_editor_field(:question, :str, {}, {:onComplete=>'test'}) %>ってやっても効かないし。そも…

間違い探し。

ActiveRecord::StatementInvalid in なんとか、って毎度おなじみのエラーをにらみつけながらいらいらいらいら。 単にAR::StatementInvaildって言われてもわかんないよ。ソース見てどうやらDBの構造がちゃんと取れてないらしいって言うのが分かったけど、もっ…

怒濤の。

なんかLocomotiveがやたらとアップデートされてる。 ついこの間2系列が出てますから1系列から移行しましょ。って気づいてなかったの私だけ?

不正クッキーの原因。

クッキーが破壊されてRailsアプリケーションが使えなくなる問題、原因わかったかも。 私は同じマシン上でポート番号だけ変えて複数のRailsアプリケーションを走らせてるんですが、あるアプリケーションでsessionに何か保存し、クッキーを作るとほかのアプリ…

腐ったクッキー。

シイラとかSafariとかの、WebKit系ブラウザを使ってRailsアプリ開発やってると、ごくたまに何も表示されなくなることがある。Firefoxに切り替えてやればちゃんと出るので、Rails側には問題がないにもかかわらず。 これがおこったときはクッキーを消してやれ…

逆戻り。

Locomotiveを入れ直したらPostgreSQLにつながらなくなっちゃった。 Host Name: iBook-G4 Date/Time: 2006-04-08 12:06:49.596 +0900 OS Version: 10.4.6 (Build 8I127) Report Version: 4 Command: ruby Path: /Applications/Locomotive/Bundles/ rails-1.0.…

1.1

Rails1.1のLocomotiveバンドルがリリ−スされたようです。近いうちにMNも移行させましょう。

Marble Noteの技術 5.データの活用のための機構(2)

Marble NoteではRSSの他に、現代的なWebアプリケーションの潮流どおりXML-RPC APIを提供しています。 この、「Marble Note XML-RPC API」を使うと外部のアプリケーションから簡単なコードでMN上のデータを取り出し、加工することが出来ます。Rubyでの例を取…

おそろい。

今まで、開発環境はSQLite、実行環境はPostgreSQLって構成でやってたんです。ActiveRecordが良きにはからってくれるから普段はDBMSの違いなんて気にならないんだけど、たまに違いが発現することがある。 実行環境で初めて分かるエラーとか、不安材料なので思…

繋がりに潜む落とし穴。

link_toメソッドは第一引数nameをそのまま出力する。そのため、適宜hメソッドでサニタイズしてやらないとXSS脆弱性が。 危ない危ない。

Eclipseとの競演。

RadRailsを久しぶりに試してみました。以前はインポート時に落ちてたのですが、正常動作。 これ、すばらしいです。Rubyシンタックスの色分けは当然、RHTMLのカラーリングにも対応。Rubyコード部分はアウトライン領域にモジュール定義、クラス定義、メソッド…

Marble Noteの技術 4.データの活用のための機構(1)

Marble Noteはこれだけである程度完結したシステムになっては居ますが、他のサービスと組み合わせることにより応用が利く設計になっています。ここで使われている技術の一つがRSS。MNシステムが保持している各種の時刻情報をこのフォーマットで提供すること…

Marble Noteの技術 3.ユーザ管理

いまのところMNではユーザサービスとしてブックマークとセレクションの二つの機能を用意しています。こういったユーザ個々人に合わせたパーソナライズを行う際に避けて通れないのが、個人認証。一般的にIDとパスワードを発行し、アクセスしてきたユーザが誰…

Marble Noteの技術 2.更新時刻の取得

各部分の仕掛けを見ていきましょう。 MNの重要な機能の一つとして、各ゴーストのネットワーク更新時刻を取得、表示する機能があります。この部分はRailsで作られた本体とは独立し、samidare*1を利用しています。 MNヘルパーやMNのWebインターフェースから登…

自動リンクするのしないの?

はてなダイアリーキーワード自動リンクAPIは、テキストを与えるとキーワードリンクをして返してくるXML-RPC APIです。 これ、HTMLタグ中の文字とかは上手く避けてリンクしてくれる。そうじゃ無いと使えないからある意味当然だけど。あと、アンカーで囲まれて…

ネストしたこたえ。

未設定航路 -Phase#2-航海日誌 - XML-RPC この疑問、http://manuals.rubyonrails.com/read/chapter/68を読めば一撃必殺。 class Test < ActionWebService::Struct member :name, [Name] member :count, :integer end class Name < ActionWebService::Struct …

ひとりふたやく。

ユーザモードとゲストモードの二つを持つWebアプリ開発だと、往々にしてログイン中としてないときの挙動を両方見たい時があります。当然その都度ログイン、ログアウトしても良いんだけど、MNの場合は認証を外部(TypeKey)にゆだねてる事もあってあんまりがし…

手品のような。

SQLite2は、ALTER TABLEが使えないので一度作ったテーブルの構造は変えられない。 しかしRailsの前に不可能は無いのかも。 $ script/generate migrate add_column n_add_column.rbを編集(nは連続した整数) class AddColumn < ActiveRecord::Migration def se…

FastCGIのチカラを。

ローカルのdevelopment環境、遅いよなあ、と思ってた。LocomotiveにはあらかじめFastCGI含まれてるのに。 ちゃんと効いてるの?と思ってちょっと調べた。 ……。 無効かっ。 public/.htaccessを書き換えて、 RewriteRule ^(.*)$ dispatch.fcgi [QSA,L] のコメ…

土台書き出し。

コントローラにscaffold1行書くんじゃなくて、ひな形をファイルとして吐いてほしい時は ./script/generate scaffold なまえ でOKだけど、これだと複数形でコントローラ/ビューを作ってくれる。 ./script generate controller なまえ なら単数型でやってくれ…

おめかし1.0。

Rails1.0になって、新規作成したプロジェクトのあちこちが派手になってる気がする。 Welcome aboardのページとかdatabase.ymlとか。特にWelcome aboardのページはびっくりしたぁ。

XML-RPC

ActionWebServiceでXML-RPC APIを提供するとき、データをstructでやり取りする場合はActionWebService::Structを継承して構造を定義して、それを使ってやればいい。 class Test ActionWebService::Struct member :name, :string member :count, :integer end…

Locomotive with Rails1.0

Locomotive用のRails1.0バンドルがmin、maxともに公開されました。これに入れ替えて、登録してあるアプリケーションの設定をぱちっと変えればRails1.0に入れ替え完了。gemを追加でインストールしてた場合はそれを足すのをお忘れなく。