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

今月もRails勉強会@東京に参加してきました。前回に引き続いてドリコム東京オフィスでの開催でした。勉強会の開催も今回で二桁に突入ですね。参加者の数も多くなってきて盛況です。

さて、今回も前半・後半に分かれてオープンスペース形式で行われました。前半は「Rails1.2を先取り」、後半は「Capistrano1.2」に参加しました。

■Rails1.2を先取り

Rails1.1.6から現在までのChangeLogを淡々と読んでいきました。

実際読んでみると、Rails本体に対しては大きな機能追加はほとんど無く、script.aculo.usやprototype.js周辺に機能追加が多かった印象です。特にActiveRecord周辺はほとんど変更されていませんでした。

とはいえ、細かい修正点はたくさんあり、すべては紹介しきれないので、いくつか面白そうなものだけピックアップしておきます。

□link_to_functionがブロックをとるようになった

link_to_functionがブロックを指定できるようになり、 

link_to_function("Show me more", nil, :id => "more_link") do |page|
  page[:details].visual_effect  :toggle_blind
  page[:more_link].replace_html "Show me less"
end
というようなことができるようになります。クライアントサイドで完結するような静的なエフェクトは、こうやって直接書いたほうがよさそうですね。

□String#to_jsonが高速化

前田さんのパッチが採用されて、長い文字列のto_json呼び出しが高速化されました。

また、Rails1.2ではまだ本体に取り入れられない可能性が高いですが、ActiveResource関連のコミットもたくさんありました。

■Capistrano1.2

序盤はCapistrano(旧SwitchTower)の基本的なことを振り返りました。 

後半は、Capistrano1.2のChangeLogを読みつつ、確かRails勉強会#2ぐらいでしたでしょうか、gorouさんの「SwitchTowerの光と影」というセッションで語られた影の部分が1.2ではどうなってるんだろう、というあたりを検証しました。

Capistrano1.2の新機能としては、web, app, dbの3種類以外ののロールを追加できるようになったのが面白いですね。あとは、スレッドを使って複数台のサーバを並列に処理するようになったようです。

ただ、肝心の影の部分はあんまり改善されていないような感じです。パスワード認証の場合はパスワードを統一しないといけないし、鍵認証にする場合にkeychainが使えず、サーバ上に秘密鍵を置いておかないといけなかったり、という部分ですね。

■懇親会
懇親会では、主にmaihaさんやyamazさんと話していました。
アーロンチェアの話題が盛り上がってましたね。やはりエンジニアにとって椅子は重要。

あと、RailsChatで話題になっていたdelegateの話とか。オブジェクトに対するdelegationではなくて、決まった値や関数に対するdelegateの方法として、

class Foo
  delegate :bar, :to => "5#"
end 

Foo.new.bar #=> 5
のように記述すれば良いんじゃないかと提案したところ、maihaさんが喜んでくれたのでよかったです。あきらかに反則技ですが。

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

posted by Png genki on Mon 25 Sep 2006 at 12:20

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

しばらくRuby on Railsを使ってきて、あったらいいなあという機能がいくつか出てきたので、時間ができたときのためにメモ。

script/rename
クラス名とかモジュール名を簡単にリネームできる機能が欲しいですね。 現状はなかなか面倒なので、最初にクラス名を決めるときに結構悩んでしまいます。 script/generateみたいにsvnを考慮してリネームしてくれると素晴らしいですね。
renderキュー
renderの呼び出しをキューに保存しておいて、after_filterで良い感じにマージして出力してくれる機能。キューが空っぽならrender :nothing => trueですね。 メソッド名はdefered_renderとかかな。
まだあったような気がしますが、思い出せなくなったのでまた今度。

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

posted by Png genki on Sun 24 Sep 2006 at 01:02

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

新しいアルファサービスとして、DrecomWantedがオープンしました。

開発に関わった皆さん、ひとまずお疲れさまです!

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

posted by Png genki on Thu 21 Sep 2006 at 13:03

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

ちょっとはまる。

■下記はOK
validates_length_of :product_code, :maximum => 255, :if => Proc.new { |mono| mono.product_code != nil}

■下記はNG
validates_length_of :product_code, :maximum => 255, :allow_nil => true http://rails.office.drecom.jp/hibi/archive/31

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

posted by Png satoko on Thu 21 Sep 2006 at 04:13

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

Document/Viewアーキテクチャでは、Documentが変更されると、Viewが無効化されて再描画されるような機構が備わっています。

Ruby on Railsでも、ModelとViewの関係を明確化して、Modelの変更をafter_updateで検知してJuggernautでクライアントに通知し、JavaScriptで対応するViewの表示を更新するような機構があればスマートかも。 ModelとControllerを一対一対応にして(ActiveResourceとも相性が良さそう)、 ビューに階層構造を持たせる感じですね。

Alexから聞いた話だと、Juggernautの次のリリースはかなり良い感じになるみたいなので、それが出たらちょっと作ってみたいような。

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

posted by Png genki on Wed 20 Sep 2006 at 12:10

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

Ruby on Railsでは、コントローラの挙動をテストするためにFunctionalテストという仕組みがあります。 実際にページを取得し、レンダリング結果のタグを解析したり、リダイレクト先が正しいかどうか、指定したIDのタグが出力されているかどうか、などなど、様々なテストを行う事ができます。

そこで、ログインした状態でないとアクセスできないようなページのテストを記述するために、Cookieやセッションを使ってテストを記述する必要が出てきます。しかし、こちら(Rails - Functional Test with Cookie)で報告されているように、FunctionalテストでCookieを使用する方法には若干癖があり、ドキュメントも少ないようなので、使い方をまとめておきます。

Cookieを設定する場合は、@requestを通して以下のように行います。

@request.cookies['name'] = CGI::Cookie.new('name', value)
ポイントは、キー(name)としてシンボルを使わない事です。コントローラ内で参照する側では、シンボルを使って参照しても問題ない(to_sされている)のですが、Cookieを設定するテストコード側では、キーを文字列で指定する必要があります。 'name'を二度指定しなければならず、若干かっこ悪い感じですね。

ちなみに、コントローラ内から参照されるcookiesは、ActionController::CookieJarクラスのインスタンス変数です。 ところが、@request.cookiesはただのHashなので、その辺のミスマッチを埋めるためにこのような指定を行う必要が出てきます。

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

posted by Png genki on Mon 18 Sep 2006 at 05:17

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

http://www.ruby-lang.org/ja/man/?cmd=view;name=String#intern

p "foo".intern
=> :foo

備忘録に。
へーーー
便利だなぁ、rubyは。 http://rails.office.drecom.jp/hibi/archive/30

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

posted by Png satoko on Fri 15 Sep 2006 at 03:54

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

備忘録。これは便利!
Rubyレシピブック 268の技のレシピNo.111です。

array = [1, 2, 3]
str = array.join(",")
p str        #"1, 2, 3"


http://rails.office.drecom.jp/hibi/archive/29

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

posted by Png satoko on Thu 14 Sep 2006 at 14:51

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

ActiveRecord::Baseにfind_or_create_by_カラム名というのがあるらしい。

探して、なかったら作るという便利なもの。
AWDRにも載ってないみたいだし。

ノグはすごいねー http://rails.office.drecom.jp/hibi/archive/28

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

posted by Png satoko on Thu 14 Sep 2006 at 12:46

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

家のネットワークでは、DHCPを利用していたのですが、
Windows->DebianにアクセスするのにIPアドレスが毎回変わるため、
windowsのhostsを変更したりととても面倒。
瀧内さんに相談したところ、固定できますよという話!


DebianはNATを使用。

下記のファイルを編集。
#/etc/network/interfaces
--------------------------------------------------
# The primary network interface
auto eth0
#iface eth0 inet dhcp
iface eth0 inet static
address 192.168.1.20
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255 #ここは255を使うのが定石
gateway 192.168.1.1


#/etc/init.d/networking restart
で設定更新!


いや〜楽チンです。
これで一つバッドノウハウが減った。
瀧内さん、感謝です♪ http://rails.office.drecom.jp/hibi/archive/27

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

posted by Png satoko on Thu 14 Sep 2006 at 11:26
Contents
Rails勉強会@東京#10レポート
Railsに欲しい機能
DrecomWantedアルファバージョンがリリース
validates_length_ofの:allow_nilが効きません 
Viewの更新とAjaxとDVAと
FunctionalテストでCookieを使う方法
シンボル(:user)の動的生成 
配列を「,」で連結し文字列に 
User.find_or_create_by_id 
IPを固定にする 
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
ブログに数式を埋め込める数式コミュニティ