This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/98

ブログの記事をエントリーと呼ぶかアーティクルと呼ぶかというお話。

Railsで書けばこんな感じになります。

class Blog < ActiveRecord::Base
  has_many :entries
  has_many :articles, :through => :entries
end
エントリーは「記入する」というアクティビティで、ブログと記事(Article)はリソースなので、ABD的に考えると何の呵責もなくすっきりと理解できますね。すばらしい!

This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/98

posted by Png genki on Mon 11 Sep 2006 at 15:13

This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/97

すでにあるかもしれないですが、gemのサブコマンド補完関数です。

_gem () {
  `gem help commands | grep '^  *' | sed 's/^ *//' | sed 's/  *.*//' | sed 's/^/compadd /'`
}

compdef _gem gem
時間ができたら zsh はもっと詳しく調べてみたいですね。

This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/97

posted by Png genki on Sun 10 Sep 2006 at 02:31

This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/96

ZenTestは、RubyのTDD(テスト駆動開発)フレームワークの一つです。 TDDを行うのに便利な機能がいろいろあるのですが、特にautotestが気に入っています。

autotestをRAILS_ROOTで起動しておくと、編集したファイルに関係があるテストだけを自動的に実行して、結果を表示してくれます。

以前紹介した、テスト結果の色付けをしてくれる「RedGreen」と併用すると、さらに気分良くTDDを行う事ができます。 どうしてもテストコードを書くのが面倒、という方にも是非お勧めしたい一品です。

インストールもGemからできるので簡単です。

# gem install ZenTest
あとは、RAILS_ROOTに.autotestファイルを作って(空っぽで構いません)
$ autotest
とやればOKです。コード編集用と テスト結果表示用にTerminalを二つ並べておくと見やすいです。

This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/96

posted by Png genki on Fri 8 Sep 2006 at 02:39

This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/95

Model同士の関係をグラフで表示するプラグイン」に、かずひこさんのコントリビューションをマージしました。

新たに、モデル同士の関係図を出力する rake タスクが加わりました。以下のようにして使用します。

$ rake model_graph [FORMAT=jpg] 
FORMATの指定は省略可能です。

プラグインリポジトリはこちらになります。ご自由にご利用ください。

http://svn.labs.drecom.jp/rails/plugins/trunk/model_graph/
バージョン番号を振っていなかったので、もともとのバージョンを0.1として、今回のリリースはバージョン0.2という事にしておきます。

かずひこさん、どうもありがとうございますー。

This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/95

posted by Png genki on Mon 4 Sep 2006 at 22:52

This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/94

度々忘れがちなので備忘録。

ActiveRecordのhas_manyアソシエーションなどを使うと、コレクションに対するアクセサが追加されます。

class Group < ActiveRecord::Base
  has_many :members
end
このとき、コレクションに対して以下のようにARオブジェクトを追加すると、
group.members << Member.new(params[:member])
group.new_record?が真の場合はMemberはそのままコレクションに追加され、DBは変化しませんが、group.new_record?が偽の場合は、Memberは直ちにsaveされ、DBに格納されます。

group.new_record?が偽の場合にDBを変更せずにMemberをコレクションに追加したい場合は、以下のようにbuildメソッドを利用します。

group.members.build(params[:member])
余談ですが、リソース系のオブジェクトはcreateよりもnewを使う事が多いですね。 Ajaxでちょっとずつリソースを作っていって、完成したところでsaveでDBに格納。 逆にActivity系のオブジェクトは、createで作成と同時にDBに格納する感じです。

This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/94

posted by Png genki on Mon 4 Sep 2006 at 17:45

This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/93

Railsのプラグインの仕組みはとても便利ですが、スタイルシートや画像ファイル、JavaScriptなどのAssetを含むプラグインを作成するのがちょっと面倒です。

今のところ、次のような方法が使われています(もしくは使ってないけど考えられます)

install.rb/uninstall.rbを使う
プラグインのインストールスクリプトを使い、Assetをpublic以下にコピーしたり削除したりします。script/plugin install/removeコマンドの実行と同時に処理されるので、利用者側からすると手間が少なくて済みます。
rake install_foo_plugin
プラグインのインストール用Rakeタスクをつくり、その中でpublic以下にファイルをコピーしたり削除したりします。 利用者は最初に一度rakeコマンドを実行する手間が増えますが、あまり面倒では無いと思います。
RailsEnginesを使う
Enginesプラグインフレームワークを利用する方法です。Enginesが無いと使えないプラグインになってしまいますが、コピーしたり削除したりする必要が無いので楽です。
Generatorを内蔵する
Assetを生成するGeneratorをプラグインに内臓します。 ファイルの衝突検出などもできるし、Generatorならではの安心感があるので、この方法が一番美しいような気がしないでも無いですが、作るのはちょっと面倒かもしれません。
Asset配置用のGeneratorを内蔵して、install.rb/uninstall.rbでgenerate/destroyするのが一番良さそうかな。

This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/93

posted by Png genki on Fri 1 Sep 2006 at 14:22

This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/92

Railsでテスト時のメッセージに色をつける方法の紹介です。

# gem install redgreen --source require.errtheblog.com
これだけでも、以下のようなコマンドを実行すると、色つきのメッセージが出てきます。
$ rg test/unit/xxxxx_test.rb
さらに、rakeコマンドからテストを起動した時にも利用できるようにしてみましょう。 RAILS_ROOT/test/test_helper.rbファイルに以下の記述を追加します。
require 'redgreen'
これでOK。あとはおもむろにrakeコマンドを実行すれば、色つきのテスト結果が表示されます。

This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/92

posted by Png genki on Wed 30 Aug 2006 at 18:08

This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/91

かなり前から愛用している、英語の類義語検索の老舗Thesaurus.comですが、リニューアルされていてびっくり。

古色蒼然としたデザインがノスタルジックで良かったのですが、これも時代の流れでしょうかね。

This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/91

posted by Png genki on Wed 30 Aug 2006 at 16:27

This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/90

8/27日のRails勉強会@東京#9に参加してきました。前回に引き続いてドリコム東京オフィスでの開催でしたが、大きなトラブルも無く、無事に終わってよかったです。

さて勉強会のほうですが、今回も今までと同様にオープンスペース形式で、前半・後半に分かれて6つのセッションが行われました。

今回は、前半に「LL Ringの家計簿アプリの中身を詳しく(+Award on Railsのソースを読む)」、後半は「has_one :throughを作る」に参加しました。

■LL Ringの家計簿アプリの中身を詳しく(+Award on Railsのソースを読む)

前日に開催されたLL Ringの模様を、かずひこさんとLL Ringに参加した方々が語ってくれました。LL Ringには参加したかったのですが、都合が合わなくて参加できなかったので、いろいろと話が聞けてよかったです。来年は参加したいですね。

それにしても、acts_as_taggableは便利ですね。便利といえば、Dave Thomas氏作のannotated_modelsも非常に便利ですね。

$ ./script/plugin install -x http://svn.pragprog.com/Public/plugins/annotate_models
$ rake annotate_models
とやるだけで、Modelクラスの定義ファイルにスキーマの定義がコメントで追加されます。これは凄く便利。さすがは達人。

最後に、川村さんのmap.resoucesがいかに素晴らしいかという話を聴きました。

PUT /messages/1;edit
GET /messages/1;edit
の「;」はあえて醜く見えるようになっているのですね。editはshowでAjax使ってやるべき、というのが今後のRailsの流れになるのかな。

■has_one :throughを作る

後半は、Yuguiさん作のhas_one :throughのパッチを作って送ろう、というセッションに参加しました。

Railsのパッチを送る時は、テストコードも一緒に送る必要があるのですが、
ActiveRecord周りのテストコードがとても複雑で、テストを考えるのが大変です。Judeファイルを見ながらテストコードの設計方針を考えているうちに、だんだんとABDの話が中心になってきて、大いに盛り上がりました。

羽生さんのABDの資料をみんなでつついていろいろ議論した結果、ようやくABDに対する真の理解が得られた感触がありました。舞波さんが、habtmルネッサンス宣言をするなど、 非常に熱いセッションでした。

最終的に、has_one :throughはプラグインとして公開し、Railsのコアメンバーのbitsweet氏を説得するためにユースケースを考えるという方向にまとまり、めでたしめでたしです。

■懇親会

非常に充実した懇親会でした。

改行の美醜の件、RJSの件、C++はLLかどうか、 横幅80文字はオールドタイプ説、Eclipseを使うとディスプレイがデカくなって行く法則、rails.vimを使いこなす話、RailsEditorは肌に合わない件、Generatorプラグインの話、Engines.startがかっこ悪い話、などなど。

has_one :throughとhabtm_renaissanceが非常に楽しみ。はぶさんを囲むRails使いの団の開催時期も気になります。

This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/90

posted by Png genki on Mon 28 Aug 2006 at 09:59

This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/89

将来的には修正される可能性がありますが、現状のRuby on Railsでは、

render_component :controller => 'entry', :action => 'show', :layout => false
のように、render_componentでlayoutをfalseに指定しても、layoutを無効化する事ができません (「render_component :layout => false doesn't work」参照)

そこで、render_compenentの呼び出し元のコントローラに応じて、レイアウトを自由に設定する方法を紹介します。この方法を使えば、render_componentでlayoutを無効化する事ができるようになります。

やりかたは、render_compenentから呼び出されるアクションの記述を以下のようにするだけです。

EntryController < ApplicationController
  def show
    case parent_controller
    when TopController; render :layout => false
    when RankingController; render :layout => 'ranking'
    end
  end
end
Ruby on Railsでは、render_componentからアクションが呼び出された場合、呼び出し元のコントローラがparent_controllerに設定されます。これを利用して、呼び出しもとのコントローラに応じてレイアウトを自由に変更することができます。

This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/89

posted by Png genki on Sat 26 Aug 2006 at 05:02
Contents
エントリーとABD
gemのサブコマンド補完関数
ZenTestのautotestがとても快適
model_graph 0.2 Release!
ActiveRecord: コレクションの挙動
Assetを含むRailsプラグインの実装方法
RailsのテストでRed Green Yellow
Thesaurus.comがリニューアル
Rails勉強会@東京#9レポート
コンポーネントのレイアウトを自在に操る
Comments
瀧内元気: MacOS版は以下にあります * [genki/ViMouse](https://githu... '23-1
KingofSmack: Here also good reads for this mobile applicatio... '14-5
Spencer: You don't have to re-compile it, this version w... '14-4
staiano: Any chance we can get a recompile for 10.9? '14-1
dsjf: https://gist.github.com/6bf1bf2c3cbb5eb6e7a7 これ... '13-1
Services from s21g
twpro(ツイプロ)
Twitterプロフィールを快適検索
地価2009
土地の値段を調べてみよう
MyRestaurant
自分だけのレストラン手帳
Formula
ブログに数式を埋め込める数式コミュニティ