Archive for category Ruby on Rails

子要素を再帰的に取ってくるストアドプロシージャ

Time to Read

10分

なぜ

MySQLは、WITH RECURSIVE文をサポートしていないため、たとえば以下のような自己参照テーブル “comments”

+------------+--------------+------+-----+---------+----------------+
| Field      | Type         | Null | Key | Default | Extra          |
+------------+--------------+------+-----+---------+----------------+
| id         | int(11)      | NO   | PRI | NULL    | auto_increment |
| parent_id  | int(11)      | YES  |     | NULL    |                |
| body       | varchar(255) | YES  |     | NULL    |                |
| created_at | datetime     | YES  |     | NULL    |                |
| updated_at | datetime     | YES  |     | NULL    |                |
+------------+--------------+------+-----+---------+----------------+

において、あるレコードを起点とした、その子/孫レコードすべてを取ってくる、ということがSQL一回ではしづらい。

Ruby on Railsなら acts_as_tree 等を用いることができそうだが、何度もSQLを投げるため、よりパフォーマンスを上げたいのであれば、例えばストアドプロシージャに頼る等が考えられる。

Read the rest of this entry »

 

GMate – ScreenCast 撮ってみました

Time to Read

3分

 

 

 


 

GMate Screencast(test) from Udzura on Vimeo.

先日の記事では大変分かりにくいかと思いましたので、練習も兼ねてScreenCast撮ってみた。

 

[Ruby on Rails]GMateが熱い件

Time to Read

45分

概要

私、一応職業としては、主にRuby on Railsで開発をしているプログラマなんですが、Railsの開発環境については以下のように変遷してきました。

  • NetBeans for Ruby on Windows
  • NetBeans for Ruby on Ubuntu
  • emacs + Rinari on Ubuntu

開発用マシンのOSはここ一年ぐらいUbuntuでやってます。

UbuntuのGNOME環境では(GNOMEなら他もそうなんでしょうが)、標準で「gedit」というエディタがついてきます。

軽量で、Ruby、PHP、JavaScript、HTML等多くの言語のシンタックスハイライトが最初から用意されていて、Windows風の操作感なので、僕のような「薄い」Linuxユーザにはとても優しい感じなんですね。ちょっとしたファイルの編集には以前からemacsではなくこっちを使っていました。

そういう中、「GMate」というものの存在を知りまして。

これが、本当に便利で、最近の開発は全部「gedit + GMate」でやっています。

主に、以下のような機能があります。僕はTextMateを使ったことが無いんですけど、概ね同じような機能が実装されているんではないかと思います。その上で、最初から日本語使えますし。

  • 大幅なシンタックスハイライトの拡張。cucumberのフィーチャーを色分けしてくれるのって、GMateぐらいじゃないか(w
  • コード補完。大雑把な感じだが、意外と役立つ
  • 各種設定ファイルへのホットキー
  • partialを一発切り分け
  • ファイル内全文検索。それも、あるプロジェクトに含まれるファイルすべてについて
  • 正規表現での文字列置換
  • 文字列操作ユーティリティの追加。行移動、複製など
  • TextMate風のたくさんのテーマ追加
  • その他、細かく、Rails向けに使い勝手を向上している

興味を持った方のための導入手順+詳細は以下。

Read the rest of this entry »

 

検証したいRailsプラグインのメモ

Resque

Github謹製、Redisと連携するやつ。非同期ジョブ実行をサポートする。

ジョブ監視のWebUIがついてくる。Sinatraベースで、カスタマイズも楽そう。

また、cron風の定期実行ジョブを仕掛けるプラグインもあるようだ。

個人的に、webブラウザから簡単にジョブを登録したり監視したりする要件があるので、割と揃ってる感じが気になる。ぜひ試してみたいです。

DataFabric

DataFabric provides flexible database connection switching for ActiveRecord.

具体的にはshardingとreplicationを実現してくれる。一昔前はacts_as_readonlyableがメジャーだったのだが、最近はメンテナンスされていないようで、2.3.x系では動作が怪しいらしい(リンク先に貴重なパッチ情報があります)。

とはいってもこちらのDataFabricも、、最終更新が今年とは言え、1月だったりする。。。それでも、2.3系で動きやすいのがどっちかといえばDataFabricに軍配が上がるだろう。gemでインストールできるようだし。

なんにしても、実際動かしてみないことにはよくわからないので、こちらも検証記事でも書こうかなと思う。

 

Radiant CMSのExtensionを作る – タグ追加篇

目次

タグ追加の参考サイト

後者は、Radiant内で実際に使われているタグ定義、要はソースの一部。これが一番参考になる。チラチラ見ながら読み進めていただきたい。

Read the rest of this entry »