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 genki genki on Wed 30 Aug 2006 at 18:08 with 0 comments

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 genki genki on Wed 30 Aug 2006 at 16:27 with 33 comments

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 genki genki on Mon 28 Aug 2006 at 09:59 with 0 comments

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 genki genki on Sat 26 Aug 2006 at 05:02 with 0 comments

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

8/24発売の日経ソフトウエア10月号で、仕事で使えるRuby on Railsと題して、特集記事を書かせていただきました。

今月はRuby特集です。 プロコン出身者としては、プロコンの話が載ってて懐かしい…。

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

posted by genki genki on Fri 25 Aug 2006 at 16:01 with 0 comments

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

in_place_editor_fieldとかを使っていると、属性ごとに個別に妥当性検証を行いたい時がありますね。 そんなわけで、Modelの特定の属性(Attribute)だけ妥当性を検証する方法のメモです。

model[attribute] = some_value
if !model.valid? && model.errors.invalid?(attribute)
  # specified attribute is invalid!
end
あとは、in_place_editor_fieldもerrorsの中身をチェックして赤くなったり、メッセージを出したりしてくれると良いんですけど。

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

posted by genki genki on Thu 24 Aug 2006 at 03:00 with 0 comments

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

yamazのRails日記 を読んでいて、injectを使う局面を思いついたのでメモ。

目的は、Arrayから特定の条件を満たす要素に変換を掛けた結果を取得する事です。

[1,2,3].inject([]){|r,i| i!=2 ? r<<i.to_s : r} #=> ["1","3"]
ちょうどselectとmapを同時にかけたような感じになります。

逆に、mapした結果をselectしたい場合は

["a","ab","aab"].inject([]){|r,i| (s=i=~/b/) ? r<<s : r} #=> [1,2]
こんな風にすればOKですね。

※注 このエントリの内容は、隙あらばinject派(Rubyist SNS)のお遊びなので、通常は可読性を考えてselectとmapを使ったほうが無難です(8/22 16:56 追記)

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

posted by genki genki on Tue 22 Aug 2006 at 00:11 with 0 comments

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

Ruby on Railsでは、config/routes.rbファイルにURLとアクションの対応付けを記述します。 例えば、以下のように記述した場合;

map.connect 'for/:bar', :controller => 'foo', :action => 'show'
/foo/bazにアクセスすると、params[:bar]に'baz'が入った状態でFooController#showが呼び出されます。

しかし、/fooにアクセスするとRouting Errorになってしまいます。:barの指定を省略可能にするには、

map.connect 'for/:bar', :controller => 'foo', :action => 'show', :bar => 'default_value'
のように、デフォルトのbarの値を指定します。これによって、/fooでアクセスした時にはparams[:bar]は'default_value'となり、それ以外の場合には指定した値が入るようになります。デフォルト値にはnilを指定する事も可能です。

:controller、:action、:idの3つの特殊パラメータに関しては、最初から省略可能になっていますが、それ以外のパラメータについては、上記のようにデフォルト値を設定する事で、明示的に省略可能にする必要があります。

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

posted by genki genki on Mon 14 Aug 2006 at 02:50 with 0 comments

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

brazilさんのエントリ「そのリソースを訪問済みか判定する」で、visited擬似クラスによって訪問済みサイトの情報が漏洩してしまうという事が指摘されています。

確かにいろいろまずそうですね…。addRuleを使わなくても、background-imageとかで外部URLを指定して、そこへのアクセスを調べたら、動的にvisitedのルールを追加できなくても同じ事が出来そうです。

<style>
a#url-1:visited {
  background-image: url("http://accesscheck.com/?url=http://foo.bar.com/");
}
</style>
<a id="url-1" href="http://foo.bar.com/">foo.bar.com</a>
visited擬似クラス自体を無くす必要があるかも。

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

posted by genki genki on Sun 13 Aug 2006 at 00:57 with 0 comments

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

Ruby-GetText-Packageを用いてRubyアプリケーションの開発を行う場合、msgmerge等のコマンドを使うためにGNU GetTextもインストールして使う方法が一般的です。

しかし、Ruby-GetText-PackageにはRuby版のmsgmergeの実装であるrmsgmergeが同梱されているので、これを使うように指定する事で、GNU GetTextを使用せずにRuby-GetText-Package単体で多言語アプリケーションの開発を行う事ができます。

具体的には、環境変数MSGMERGE_PATHにrmsgmergeを指定すればOKです。 Rakeターゲットupdatepoを作っている場合は、rakeの実行時に下記のように指定する事もできます。

$ rake updatepo MSGMERGE_PATH=rmsgmerge
rmsgmergeにPATHが通っていれば、上記のようにコマンド名だけ指定すればOKですが、そうでない場合はフルパスで指定しましょう。 Windows環境の場合は、rmsgmerge.cmdのように末尾に.cmdをつける必要があるようです。

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

posted by genki genki on Sun 6 Aug 2006 at 00:57 with 0 comments

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

7/31(木)に開催されたGreeLabsのオープンソーステクノロジー勉強会#5に行ってきました。

今回はSRA OSS, Inc.日本支社 取締役支社長の石井達夫さんと、Greeのデザイナーの三野さんがスピーカーでした。Postgresの歴史と今後の話を石井さんが、ウェブデザインパターンの紹介を三野さんがされました。

PostgreSQLの歴史のお話も良かったですが、今後の話が面白かったです。 PostgreSQL8.2では、今まで苦手としていた大量の小さいテーブルに対する更新アクセスが高速化されるそうです。 pgpool II でのクラスタのカスケード接続のお話も、大変興味深いものでした。これと似たような事をMySQL5.1を使ってAPレベルでやりたいと思っていたのですが、もしかしたらpgpool IIで良いかもですね。

ウェブデザインパターンについては、前回に引き続き、今回はデザイナーからの視点で紹介していただきました。CSSをモジュール化し、Snippetとして利用できるようにしているという事や、Wikiを使ってブラッシュアップを重ねているという試みは、とても面白かったです。 情報源としては、下記のサイトが紹介されていました。

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

posted by genki genki on Wed 2 Aug 2006 at 10:22 with 0 comments

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

昨日、Award on Railsの参加者を招待してお疲れ会を行いました。

詳しい内容については、後日よしてつさんからもっと詳しいレポートがあるので省きますが、とても楽しかったです。それまで作品を通してしか知らなかった参加者の方々と、実際にお会いして話をする事ができました。 機会があったら、Rails勉強会とかでまたお会いできると良いですね。

4月に開始してから4ヶ月になりますが、期待していた以上に作品が集まり、内容も面白いものが多かったので良かったです。

参加者の皆様、ありがとうございました。 作品を使ってみて投票してくださった方々もありがとうございました。 後日抽選により、Award on Rails Tシャツ(暗闇で光る)とさくらインターネット様から提供いただいているUSBメモリーをプレゼントさせて頂きます。

ということで、また来年も開催できると良いです。 ありがとうございました。

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

posted by genki genki on Mon 31 Jul 2006 at 18:43 with 0 comments
Contents rssrss
光ファイバーを二次元振動させて走査するAR用ディスプレイ
因果の取り違え
Swift2's defer for CoffeeScript
mongodb-3.0からcreateIndexのdropDupsが無くなったらしい
mongodb-3.0以降のWiredTigerの設定を動的に変更する方法
一般楕円の高速生成アルゴリズムへの道標
farro mantecatoのレシピ
Droonga関連の記事のまとめ
RuntimeErrorの特定のメッセージに限定してrescueする方法
jQueryでscriptタグを実行せずにappendする
Comments rssrss
https://casino-pinco.clients.site/ https://casino-pinco.clients.site/: Pinco Casino регистрация открыла доступ к крутому ... 04/14 21:54
https://moscowremontnik.ru https://moscowremontnik.ru: Слышал много положительных отзывов о Московском ... 04/14 19:08
https://mellstroy.at https://mellstroy.at: Hi there! This is my first visit to your blog! We ... 04/14 19:03
https://russ-remont.ru/ https://russ-remont.ru/: Очень толковая статья, сохраню себе. 04/14 18:45
https://russ-remont.ru/ https://russ-remont.ru/: Приятно видеть профессиональный подход к делу. 04/14 17:56
https://russ-remont.ru/ https://russ-remont.ru/: Ваши советы сэкономили мне кучу времени. 04/14 17:39
https://russ-remont.ru/ https://russ-remont.ru/: Русский Ремонт — отличный выбор для тех, кто ценит... 04/14 17:26
https://www.remontexpress.ru https://www.remontexpress.ru: Радует, что компания работает официально по догово... 04/14 17:20