<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>大徳日記 &#187; Rails</title>
	<atom:link href="http://www.saitoudaitoku.com/wordpress/?cat=17&#038;feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.saitoudaitoku.com/wordpress</link>
	<description>飲むのが好きなパソコンお○くの日記</description>
	<lastBuildDate>Thu, 01 Sep 2011 14:18:29 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4.2</generator>
		<item>
		<title>Rails 2.3でのSessionの有効期限を延ばす方法</title>
		<link>http://www.saitoudaitoku.com/wordpress/?p=925</link>
		<comments>http://www.saitoudaitoku.com/wordpress/?p=925#comments</comments>
		<pubDate>Tue, 26 May 2009 13:43:42 +0000</pubDate>
		<dc:creator>daitoku</dc:creator>
				<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://www.saitoudaitoku.com/wordpress/?p=925</guid>
		<description><![CDATA[あまり、ネットで検索しても出てこないのでメモ。Railsのセッション(Cookie)はブラウザーが終了すると消えてしまう。で、ブラウザーが終了した後も残す方法だが、以前のRails(おそらく2.2以前）だと、enviro [...]]]></description>
			<content:encoded><![CDATA[<p>あまり、ネットで検索しても出てこないのでメモ。Railsのセッション(Cookie)はブラウザーが終了すると消えてしまう。で、ブラウザーが終了した後も残す方法だが、以前のRails(おそらく2.2以前）だと、environment.rbあたりに次のように書く。</p>
<blockquote><p>ActionController::Base.session_options[:session_expires] = Time.local(2009, 1)
</p></blockquote>
<p>詳しくは以下のサイトにある。</p>
<p><a href="http://d.hatena.ne.jp/zariganitosh/20081001/1222841011">sessionに有効期限を設定する時の試練 &#8211; ザリガニが見ていた&#8230;。</a></p>
<p>が、やってみても思ったようにいかず、ブラウザーを終了するとセッションも失われてしまう。いろいろとネットを検索してみたところ、次のページにたどりついた。</p>
<p><a href="http://groups.google.co.jp/group/rubyonrails-talk/browse_thread/thread/fad938718ac26e23">Active Record Session expiration in Rails 2.3 &#8211; Ruby on Rails: Talk | Google グループ</a></p>
<p>いわく、</p>
<blockquote><p>Oh, I found the reason</p>
<p>:session_expires has been replaced by :expire_after. </p></blockquote>
<p>とのこと。確認していないが、expire_afterてことは、最後にアクセスしてからの有効期間が指定出来るのだろうか？</p>
<p>（追記）↑出来るようです。リロードするたびにCookieのexpire日次が更新されてます。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.saitoudaitoku.com/wordpress/?feed=rss2&#038;p=925</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>mod_rails試してみました。</title>
		<link>http://www.saitoudaitoku.com/wordpress/?p=492</link>
		<comments>http://www.saitoudaitoku.com/wordpress/?p=492#comments</comments>
		<pubDate>Thu, 08 May 2008 13:39:50 +0000</pubDate>
		<dc:creator>daitoku</dc:creator>
				<category><![CDATA[Rails]]></category>

		<guid isPermaLink="false">http://www.saitoudaitoku.com/wordpress/?p=492</guid>
		<description><![CDATA[以前、書いたようにRailsアプリの実行環境を作るのはいささか面倒だ。PHPアプリのようにサーバーにアップするだけでは動かず、ちょっと面倒である。 大徳日記 » Railsのアプリの実行環境について調べてみました が、最 [...]]]></description>
			<content:encoded><![CDATA[<p>以前、書いたようにRailsアプリの実行環境を作るのはいささか面倒だ。PHPアプリのようにサーバーにアップするだけでは動かず、ちょっと面倒である。</p>
<p><a href="http://www.saitoudaitoku.com/wordpress/?p=457">大徳日記 » Railsのアプリの実行環境について調べてみました</a></p>
<p>が、最近Passenger(mod_rails)なるものが出てきて話題になっているので試してみた。インストールに参考にしたのは次のページ。</p>
<p><a href="http://rails20.jp/2008/04/passenger/">Rails 2.0 » ホスティングサービスでもRailsが利用できるようになるかも、な「Passenger」</a></p>
<p>LoadModuleの設定などを書いておけばあとは簡単だ。仮想ホストのドキュメント・ルートがrailsアプリのpublicディレクトリーになっていればそれでＯＫ。またサブディレクトリの場合も、</p>
<blockquote><p>
&lt;virtualhost *:80&gt;<br />
    ServerName www.phusion.nl<br />
    DocumentRoot /websites/phusion<br />
    RailsBaseURI /rails                # This line has been added.<br />
&lt;/virtualhost&gt;
</p></blockquote>
<p>としておけばＯＫである。上の例では/railsがrailsアプリのpublicディレクトリーへのシンボリックリンクになっている。詳しくはマニュアルにある。</p>
<p><a href="http://www.modrails.com/documentation/Users%20guide.html#deploying_to_sub_uri">Passenger users guide</a></p>
<p>さてここで疑問に思ったのが、「じゃあ、仮想ホスト毎に１つのRailsアプリしかホスティングできないのか？」ということ。RailsBaseURIを2つ以上指定してもちゃんと動くのか実験してみた。hogeとpiyoという２つのRailsアプリを2つ作ってそれぞれx,yのサブディレクトリにリンク。apacheの設定は次の通り</p>
<blockquote><p>
RailsBaseURI /x/rails<br />
RailsBaseURI /y/rails
</p></blockquote>
<p>さっそくブラウザーでアクセスしてみるとちゃんとどちらも動いていた。すかさず直前のエントリーのコメントでさいとさんに教えてもらった方法でruby1.8のプロセスを見てみる。</p>
<blockquote><p>
UID        PID  PPID  C STIME TTY          TIME CMD<br />
root     11021 11020  0 16:51 ?        00:00:00 Passenger spawn server<br />
root     20271 11021  3 22:23 ?        00:00:00 Passenger FrameworkSpawner: 2.0.2<br />
daitoku  20272 20271  0 22:23 ?        00:00:00 Passenger ApplicationSpawner: /home/daitoku/work/hoge<br />
daitoku  20274     1  0 22:23 ?        00:00:00 Rails: /home/daitoku/work/hoge<br />
daitoku  20281 20271  0 22:23 ?        00:00:00 Passenger ApplicationSpawner: /home/daitoku/work/piyo<br />
daitoku  20283     1  0 22:23 ?        00:00:00 Rails: /home/daitoku/work/piyo
</p></blockquote>
<p>rootで動いている上の２つのプロセス(11021と20271)はトップレベルで各アプリ毎に振り分けるためのサーバーなのだろう。で、1レイヤー下に各アプリ毎に振り分けるサーバーがいてそれぞれhogeアプリが20272、piyoアプリが20281ぽい。で、実際にリクエストを処理するのが20274と20283なのではないだろうか？</p>
<p>ためしにabでhogeに対して5並列の負荷をかけてみると、案の定Rails:で始まるプロセスが増えている。1つ多く6プロセスなのは余分に１つ立ち上げているのだろう。</p>
<blockquote><p>UID        PID  PPID  C STIME TTY          TIME CMD<br />
root     11021 11020  0 16:51 ?        00:00:00 Passenger spawn server<br />
root     20271 11021  0 22:23 ?        00:00:00 Passenger FrameworkSpawner: 2.0.2<br />
daitoku  20412 20271  1 22:29 ?        00:00:00 Passenger ApplicationSpawner: /home/daitoku/work/hoge<br />
daitoku  20414     1 12 22:29 ?        00:00:00 Rails: /home/daitoku/work/hoge<br />
daitoku  20418     1  5 22:29 ?        00:00:00 Rails: /home/daitoku/work/hoge<br />
daitoku  20421     1  7 22:29 ?        00:00:00 Rails: /home/daitoku/work/hoge<br />
daitoku  20423     1  1 22:29 ?        00:00:00 Rails: /home/daitoku/work/hoge<br />
daitoku  20425     1  3 22:29 ?        00:00:00 Rails: /home/daitoku/work/hoge<br />
daitoku  20434     1 21 22:29 ?        00:00:00 Rails: /home/daitoku/work/hoge
</p></blockquote>
<p>さらにこの状態で5並列でpiyoにも負荷をかけてみたら、別途piyoも6プロセス起動した。長くなるのでプロセス一覧は割愛するが、hogeのrubyプロセスはhogeの処理だけ、piyoのrubyプロセスはpiyoの処理だけ行うということが判明。うまくして１つのRailsプロセスがhogeもpiyoも処理できるようにするとすごいかも。</p>
<p>いやいやmod_rails便利です。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.saitoudaitoku.com/wordpress/?feed=rss2&#038;p=492</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>第１回RESTful本読書会</title>
		<link>http://www.saitoudaitoku.com/wordpress/?p=487</link>
		<comments>http://www.saitoudaitoku.com/wordpress/?p=487#comments</comments>
		<pubDate>Mon, 14 Apr 2008 14:23:03 +0000</pubDate>
		<dc:creator>daitoku</dc:creator>
				<category><![CDATA[Rails]]></category>
		<category><![CDATA[REST]]></category>

		<guid isPermaLink="false">http://www.saitoudaitoku.com/wordpress/?p=487</guid>
		<description><![CDATA[RESTful本でプレゼントが当たったからというわけではないが、RESTful読書会に参加してきました。本当はプレゼントのTシャツを着て行きたかったのだが風邪ぎみなので断念。が、私の他にもプレゼントをもらったt-wada [...]]]></description>
			<content:encoded><![CDATA[<p> <a href="http://www.saitoudaitoku.com/wordpress/?p=463">RESTful本でプレゼントが当たった</a>からというわけではないが、<a href="http://kunit.jp/restful/wiki/index.php?%C2%E81%B2%F3%C6%C9%BD%F1%B2%F1">RESTful読書会</a>に参加してきました。本当はプレゼントのTシャツを着て行きたかったのだが風邪ぎみなので断念。が、私の他にもプレゼントをもらったt-wadaさんはばっちり着てきてました。さすがです。</p>
<p>今回の範囲は、１章、２章、３章だったがみんないろいろ熱い議論をしたくて集まっているだけあって１章からスパークしていました。以下、今回の収穫と感想。</p>
<ul>
<li>監訳者の山本さんのRESTful本へのサイン</li>
<li>RESTful本を読んだら、次はWEB+DB Vol42の鼎談（ていだん）を読むべし。<a href="http://gihyo.jp/dev/serial/01/rest">動画</a>もあるよ。</li>
<li>２章のサンプルは横着せずちゃんと写経して自分で動かしてみると理解が進む</li>
<li>PHPの人が多かった</li>
</ul>
<p>また会場にはもちろんRESTに肯定的な人が多い中、その中でも客観的な分析をしていた<a href="http://capsctrl.que.jp/kdmsnr/diary/20080412.html">kdmsnrさんの意見</a>が興味深かったです。</p>
<p>残念ながら次回は仕事で参加できない予定。RESTは最近なにかと話題になっているもののまだまだで、これらどのように発展していくのかが楽しみです。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.saitoudaitoku.com/wordpress/?feed=rss2&#038;p=487</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>map.resourcesとmap.resource</title>
		<link>http://www.saitoudaitoku.com/wordpress/?p=477</link>
		<comments>http://www.saitoudaitoku.com/wordpress/?p=477#comments</comments>
		<pubDate>Sun, 02 Mar 2008 09:13:22 +0000</pubDate>
		<dc:creator>daitoku</dc:creator>
				<category><![CDATA[Rails]]></category>

		<guid isPermaLink="false">http://www.saitoudaitoku.com/wordpress/?p=477</guid>
		<description><![CDATA[以前無邪気にもベータ版の本の間違いを見つけて送ったなどと書いたがよくよく見てみると間違えていたのは自分だったことが判明。お恥ずかしい限りです。しかもろくにコメントを読まずに引用しているし。 簡単に説明するとRails2. [...]]]></description>
			<content:encoded><![CDATA[<p>以前無邪気にもベータ版の<a href="http://www.saitoudaitoku.com/wordpress/?p=474">本の間違いを見つけて送った</a>などと書いたがよくよく見てみると間違えていたのは自分だったことが判明。お恥ずかしい限りです。しかもろくにコメントを読まずに引用しているし。</p>
<p>簡単に説明するとRails2.0からconfig/routes.rbに以下のようにルーティングを設定することにより</p>
<blockquote><p>route.resources articles</p></blockquote>
<p>RESTfulな思想に基づいて自動的にリソースarticleのCRUD処理が規約に従ってマッピングされる。で、このリソース(この場合はarticles)は通常複数形のところをこの本では特別に単数形で使われていたのだが、私は気付かずに「おいおい、新規のリソース作成は複数形のPOST /friendsでしょう」と書いたのだがこれは私の間違い。よく見てみるとちゃんと本にも前のページに</p>
<blockquote><p>map.resource :session</p>
<p>Note that we’re using map.resource (singular) here, not plural as is usually the case. For a given user, we only need one session. The singular form generates routes and helpers using the singular name (session) as we’ll see in minute.</p></blockquote>
<p>と書いてある。ちなみにsingular=単数形、plural=複数形です。しかも私の的外れなコメントに対して</p>
<blockquote><p>Mike says:<br />
Actually, it’s a singular resource (map.resource :session), so in the form tag you use the singular form.–Daitoku Saitou</p></blockquote>
<p>と親切に書いてあった。嗚呼、穴があったら入りたいです…。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.saitoudaitoku.com/wordpress/?feed=rss2&#038;p=477</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>本のベータ版</title>
		<link>http://www.saitoudaitoku.com/wordpress/?p=474</link>
		<comments>http://www.saitoudaitoku.com/wordpress/?p=474#comments</comments>
		<pubDate>Tue, 26 Feb 2008 14:19:17 +0000</pubDate>
		<dc:creator>daitoku</dc:creator>
				<category><![CDATA[Rails]]></category>
		<category><![CDATA[エクスペリエンス]]></category>

		<guid isPermaLink="false">http://www.saitoudaitoku.com/wordpress/?p=474</guid>
		<description><![CDATA[The Pragmatic Bookshelf &#124; Advanced Rails Recipesなる本はまだ出版されていない。が、読むことができる。なぜなら私はベータ版の状態でPDFで購入しているからだ。このPDF版を買 [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.pragprog.com/titles/fr_arr">The Pragmatic Bookshelf | Advanced Rails Recipes</a>なる本はまだ出版されていない。が、読むことができる。なぜなら私はベータ版の状態でPDFで購入しているからだ。このPDF版を買った人はいち早くベータ版の原稿を読むことができるし、紙の本も買うことが出来る。紙のバージョンの本は出版された後に配送されてくる。PDF版を買った人は最新版が読める上、間違いを見つけると投稿することも出来る。</p>
<p>今日、最新版のPDFが出来たよーというメールが来た。以前、間違いかと思って<a href="http://www.pragprog.com/titles/fr_arr/errata">Errataのページ</a>に投稿していたので早速見てみると、</p>
<blockquote><p>Mike says:<br />
Actually, it&#8217;s a singular resource (map.resource :session), so in the form tag you use the singular form.&#8211;Daitoku Saitou</p></blockquote>
<p>なるコメントとともにちゃんと直っていた。ちょっと嬉しい。日本の出版界も取り入れればいいと思うんだけど、PDFの形式で出版前に代金をとって販売というのが日本の出版業界では何かの問題になっているのかも知れないですね。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.saitoudaitoku.com/wordpress/?feed=rss2&#038;p=474</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>thin入れてみました</title>
		<link>http://www.saitoudaitoku.com/wordpress/?p=455</link>
		<comments>http://www.saitoudaitoku.com/wordpress/?p=455#comments</comments>
		<pubDate>Tue, 12 Feb 2008 12:23:07 +0000</pubDate>
		<dc:creator>daitoku</dc:creator>
				<category><![CDATA[Rails]]></category>

		<guid isPermaLink="false">http://www.saitoudaitoku.com/wordpress/?p=455</guid>
		<description><![CDATA[rails 1.8.6以上が必要です。debianのstableは1.8.5なのでいったんrubyを全部抜いて sudo apptitude purge ruby1.8 testingの(1.8.6)を入れます。 sud [...]]]></description>
			<content:encoded><![CDATA[<p>rails 1.8.6以上が必要です。debianのstableは1.8.5なのでいったんrubyを全部抜いて</p>
<blockquote><p>sudo apptitude purge ruby1.8</p></blockquote>
<p>testingの(1.8.6)を入れます。</p>
<blockquote><p>
sudo aptitude install ruby1.8/testing<br />
sudo aptitude install ruby1.8-dev/testing<br />
sudo aptitude install rubygems/testing<br />
sudo gem install thin
</p></blockquote>
<p>まだMongrelみたくクラスターを起動するような機能はないようなので、<a href="http://groups.google.com/group/thin-ruby/browse_thread/thread/2812e5abf41c37bb">自作する必要があるようです。</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.saitoudaitoku.com/wordpress/?feed=rss2&#038;p=455</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Railsのアプリの実行環境について調べてみました</title>
		<link>http://www.saitoudaitoku.com/wordpress/?p=457</link>
		<comments>http://www.saitoudaitoku.com/wordpress/?p=457#comments</comments>
		<pubDate>Mon, 11 Feb 2008 14:35:01 +0000</pubDate>
		<dc:creator>daitoku</dc:creator>
				<category><![CDATA[Rails]]></category>

		<guid isPermaLink="false">http://www.saitoudaitoku.com/wordpress/?p=457</guid>
		<description><![CDATA[そういえば前回のRails勉強会でRailsアプリを公開する際のノウハウを聞けると思って参加してみたものの詳しい人がおらず分からずじまい。ネットでいろいろと調べたので晒しておきます。間違いを見つけたら教えてください。 予 [...]]]></description>
			<content:encoded><![CDATA[<p>そういえば<a href="http://d.hatena.ne.jp/syttru/20080120/1200841259">前回のRails勉強会</a>でRailsアプリを公開する際のノウハウを聞けると思って参加してみたものの詳しい人がおらず分からずじまい。ネットでいろいろと調べたので晒しておきます。間違いを見つけたら教えてください。</p>
<p>予備知識は以下の通り。</p>
<ul>
<li>アプリケーションディレクトリでscript/serverで3000番ポートでWEBrickという定番サーバーが起動する</li>
<li>Railsではデフォルトで３つの環境（development, test, production)が作られるので、公開する場合はRAILS_ENV=productionをセットして起動</li>
<li>中でもLIGHTtpdやMongrelというサーバーがポピュラー</li>
<li>でもでもMongrelの作者がキレて最近開発をやめそう</li>
</ul>
<p>調べているうちに最初に気づいたことは<strong>「１つのRailsインスタンス(１つのRubyプロセス）が同時に処理できるHTTPリクエストは１つだけ」</strong>ということである。びっくりした。念のため２つのブラウザーを立ち上げて、長い間sleepするコントローラーにリクエストを投げると、もうひとつのブラウザーでは簡単なリクエストにもかかわらず１つめのブラウザーのsleepが終わるまで待たされたので間違いないようだ。<a href="http://www.infoq.com/news/2007/05/ruby-threading-futures">The Futures of Ruby Threading</a>のささださんコメントにもあるが、RubyのVMではGlobal Interpreter Lock (GIL)を取得するので同時に動けるスレッドは１つだけだ。この制限は現行のRuby1.8からRuby1.9(YARV)になってユーザーレベルスレッド（グリーンスレッド）からカーネルスレッドになっても同じである。</p>
<blockquote><p>
As you know, YARV support native thread. It means that you can run each  Ruby thread on each native thread concurrently.</p>
<p>It doesn&#8217;t mean that every Ruby thread runs in parallel. YARV has  global VM lock (global interpreter lock) which only one running Ruby thread has. This decision maybe makes us happy because we can run most of the extensions written in C without any modifications.</p></blockquote>
<p>では複数のリクエストを同時に処理したい場合はどうするのだろうか？これには複数のRubyプロセスをあらかじめ起動しておき複数のプロセスで処理することで対応する。1プロセス＝1スレッドというわけだ。このあたりは1プロセス＝複数スレッドというJavaの世界とは異なる。<strong>最初はいまどきプロセス単位で並列かよとも思ったが、よくよく考えてみたらWebアプリは並列して動かしてもお互いの処理は独立していてお互いに協調する必要はほとんどないのでプロセス単位の並列化でもいいのかも知れない。</strong>Rails2.0からセッションもCookieStoreになったし。で、複数プロセスを起動するための方法としては大きく分けて２つあり、仮にFastCGI方式とMongrel方式と呼ぶことにする。</p>
<p>まず比較的トラディショナルな方式がFastCGI方式だ。FastCGIはPerlなど別のLL言語でも使われる方式で、あらかじめ複数のRubyプロセスを常駐しておいてそれらをフロントのWebサーバーから呼び出す。Webサーバーとしては、Apacheだといろいろと問題があるらしくRailsの世界ではLIGHTtpd(通称Lightly)という軽量Webサーバーが使われるのが一般的なようだ。Webサーバーと常駐しているRubyプロセス間の通信はソケット通信で行う。LIGHTtpdは静的コンテンツも高速に処理できるためLIGHTtpd+FastCGIで完結し割とすっきりな構成となる。</p>
<p>もうひとつの方式が最近メジャーになりつつあるMongrel方式だ。これは、MongrelというWebサーバーを使って1ポート＝１Mongrelサーバー＝１Rubyプロセスで複数のMongrelサーバーを起動する。例えば5並列で処理したい場合、５つのMongrelサーバー（5つのRubyプロセス）を起動してポート番号50,000から50,004で待ち受けて処理する。ただMongrelサーバーの作者は<a href="http://slashdot.jp/articles/08/01/02/0046222.shtml">Ruby on Railsはゲットーだ</a>にあるように開発をやめようとしているので、<a href="http://blog.s21g.com/articles/337">ポストMongrel時代のWebサーバ</a>にあるように最近では<a href="http://code.macournoyer.com/thin/">Thin</a>など別のサーバーが注目されている。</p>
<p>Mongrel方式の場合、複数のポートで処理を待つので外部に公開する場合はMongrelだけでは不十分で、１つのポートで待ち受けてリクエストを複数のMongrelに分配するリバースプロキシー＋ロードバランサーが必要になってくる。このロードバランサーにはいろいろとあって一番お手軽なのはApacheのモジュールの<a href="http://httpd.apache.org/docs/2.2/ja/mod/mod_proxy_balancer.html">mod_proxy_balancer</a>だ。他にもこの種のソフトには<a href="http://www.apsis.ch/pound/">Pound</a>や<a href="http://swiftiply.swiftcore.org/">Swiftiply</a>や<a href="http://nginx.net/">nginx</a>などお腹いっぱいの充実ぶりだ。</p>
<p>結局どの方式にしてもそれなりに複雑であり、フロントとバックエンドの組み合わせとなると無限にある。この状況に対して、<a href="http://www.rubyinside.com/no-true-mod_ruby-is-damaging-rubys-viability-on-the-web-693.html">No True “mod_ruby” Is Damaging Ruby’s Viability On The Web</a>などで「だからなかなかRubyのブログや掲示板が流行らないんだ！」と問題提起されている。ちなみにこのページはRubyのWebアプリのトポロジーに複雑さにとどまらずスレッドの話などの議論も行われており興味深い。またこのページの作者による簡単にRubyアプリをデプロイをめざして<a href="http://switchpipe.org/">SwitchPipe</a>なる試みもある。</p>
<p>さて気になるパフォーマンスは<a href="http://">くまくまーの人のブログ</a>にクアッドコアでの測定結果がのっているが、これによると意外にLIGHTtpd+FastCGIが一番のようだ。またすでにApacheを動かしている場合はApache2 + mod_proxy_balancer + Mongrelが一番素直だと思った。</p>
<p>またApacheなどからバックエンドに飛ばす場合のURLのパスの書き換えはどうするの？問題についてはこれまた<a href="http://wota.jp/ac/?date=20070605">くまくまーの人のブログ</a>にある。このエントリーは面白いので最初から最後までじっくりと読むことをおすすめします。</p>
<p>でもこれら以外にまったく違う形式としてwarにしてJRubyアプリとしてJavaのアプリケーションサーバーにデプロイというのもあるそうですが、それはまだ調べ中なのでまたの機会に…。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.saitoudaitoku.com/wordpress/?feed=rss2&#038;p=457</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>NetBeans+Rails</title>
		<link>http://www.saitoudaitoku.com/wordpress/?p=445</link>
		<comments>http://www.saitoudaitoku.com/wordpress/?p=445#comments</comments>
		<pubDate>Wed, 30 Jan 2008 17:34:54 +0000</pubDate>
		<dc:creator>daitoku</dc:creator>
				<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://www.saitoudaitoku.com/wordpress/?p=445</guid>
		<description><![CDATA[前にSIM氏も絶賛していたし、昨日もAR氏もなかなかいいといっていたのでNetBeansを入れて試してみた。以下、メモ インストールする前にあらかじめJDK 5かJDK 6をインストールしておく必要あり ダウンロードパッ [...]]]></description>
			<content:encoded><![CDATA[<p>前にSIM氏も絶賛していたし、昨日もAR氏もなかなかいいといっていたのでNetBeansを入れて試してみた。以下、メモ</p>
<ul>
<li>インストールする前にあらかじめJDK 5かJDK 6をインストールしておく必要あり</li>
<li>ダウンロードパッケージはRubyを選択</li>
<li>Tools -&gt; Plugins -&gt; Updatesはしてもいい</li>
<li>Tools -&gt; Ruby Gems -&gt; Updatesはだめ。Rails 2が入ってしまって動かなくなる</li>
<li>JDKに付属のDerby(Embedded)を使うにはC:\Program Files\Sun\JavaDB\lib\derby.jarをC:\Program Files\NetBeans 6.0\ruby1\jruby-1.0.2\libにコピー</li>
<li>テーブルの中身を見るためにはDerbyのURLを指定する必要があるが、相対パスのjdbc:derby:db/development.dbだとうまくいかないべたにjdbc:derby:C:\Users\daitoku\Documents\NetBeansProjects\RailsApplication\db\development.dbとするとなんとか。スキーマはSA</li>
</ul>
<p>SQLite3を使ってからというものすっかりサーバー起動が不要なファイル形式が好きになってしまった。もはやcreate dbもcreate tableも打たなくてもいいのはものぐさな私としては実に魅力的。１００件ぐらいしか入っていない開発用DBにクラサバのリレーショナルDBなんて１００年早いわっなどと思う。しかも勝手にSQLite3やDerbyって簡易的なDBだから相関副照会やOuter Joinって使えないと思っていたら問題なく使えるようだ。</p>
<p>さて肝心のIDEの機能だがちょっと触ってみた感じではEclipseっぽくコード補完もしてくれるしなかなかである。そのうちRails 2にも対応するでしょう。それにしても家の２４インチのモニターでIDEが動いているのを初めて見たのだがとってもステキでした。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.saitoudaitoku.com/wordpress/?feed=rss2&#038;p=445</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ruby談義＠新宿</title>
		<link>http://www.saitoudaitoku.com/wordpress/?p=444</link>
		<comments>http://www.saitoudaitoku.com/wordpress/?p=444#comments</comments>
		<pubDate>Wed, 30 Jan 2008 15:45:24 +0000</pubDate>
		<dc:creator>daitoku</dc:creator>
				<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://www.saitoudaitoku.com/wordpress/?p=444</guid>
		<description><![CDATA[Ruby談義をということでNAIST時代のAR氏と新宿でタイ料理。確かザガットサーベイにも載っているピッチーファーというタイ料理店なのだがいつのまにか広い2号店が出来ておりその2号店で食事。その名もピッチーファー2th。 [...]]]></description>
			<content:encoded><![CDATA[<p>Ruby談義をということでNAIST時代のAR氏と新宿でタイ料理。確かザガットサーベイにも載っているピッチーファーというタイ料理店なのだがいつのまにか広い2号店が出来ておりその2号店で食事。その名もピ<a href="http://gourmet.yahoo.co.jp/0006711139/M0013016690/">ッチーファー2th</a>。英語がさほど得意でもない私でもそれって2ndの間違いでは？とつっこみたくなる。&#8221;2th&#8221;なる単語があるのかと思い検索してみたらこの店のページが1番上だった。うーん。</p>
<p>で、Rubyだけでなくいろいろとディープな話をしてたらあっという間に終電の時間。とても楽しかったです。それにしても２軒目に行ったドイツのビールの店は高かった。おいしかったけど。で、その店でドイツワインの赤というものをはじめて飲んだらなかなかだった。実は有名なのだろうか？</p>
]]></content:encoded>
			<wfw:commentRss>http://www.saitoudaitoku.com/wordpress/?feed=rss2&#038;p=444</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RESTful Webサービス</title>
		<link>http://www.saitoudaitoku.com/wordpress/?p=436</link>
		<comments>http://www.saitoudaitoku.com/wordpress/?p=436#comments</comments>
		<pubDate>Wed, 16 Jan 2008 19:53:17 +0000</pubDate>
		<dc:creator>daitoku</dc:creator>
				<category><![CDATA[Rails]]></category>
		<category><![CDATA[REST]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[書評]]></category>

		<guid isPermaLink="false">http://www.saitoudaitoku.com/wordpress/?p=436</guid>
		<description><![CDATA[何かと話題な本なのでプチッとクリックして英語版を買って積読していたのだが、昨年末に本屋で日本語版を見つけて泣きながらレジに…。 主張は、「インターネットでWebサービスを公開するんだったら、メソッドを公開するよりも、 U [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.amazon.co.jp/gp/redirect.html%3FASIN=4873113539%26tag=saitoudaitoku-22%26lcode=xm2%26cID=2025%26ccmID=165953%26location=/o/ASIN/4873113539%253FSubscriptionId=1N9AHEAQ2F6SVD97BE02" title="Click and drag this image to the post editor"><img src="http://ecx.images-amazon.com/images/I/21RXsMNvdwL.jpg" align="left" hspace="10" vspace="10" width="123" /></a>何かと話題な本なのでプチッとクリックして英語版を買って積読していたのだが、昨年末に本屋で日本語版を見つけて泣きながらレジに…。</p>
<p>主張は、「インターネットでWebサービスを公開するんだったら、メソッドを公開するよりも、 URIにマッピングしてリソースをいろいろ公開したほうがいいよ。そうすると、リソースにブックマークできるし、URLを他人に知らせることが出来るし、リソース同士で相互にリンクも張ることでプログラムがリンクをたどれるし。あとHTTPにはちょうどいい感じでCRUD(Create, Read, Update, Delte)に相当するメソッド(Post, Get, Put, Delete)があるから、公開するリソースへのアクセスはこれらのHTTPのメソッドを使ってさ。で、このコンセプトをROA(Resource Oriented Architecture)と呼ぼうぜ！」といったところか。</p>
<p>これを読むと沸々と「リソースに全部URIをつけて公開するのはいいと思う。意味のあるURLは分かりやすいし。そう思うとWebサービスでない普通のWebアプリもこの規約に従えば、いいことはあっても悪いことはないのではないだろうか？さしてポリシーも無くURLを決めるぐらいだったら、WebアプリでもURLに関してはRESTfulにしちゃってもいいのでは？後でそのままWebサービスとして公開するのも簡単だし。」</p>
<p>などと思ったりしていたのだが、Railsはすでにそうなっていた。以下、<a href="http://peepcode.com/products/rails2-pdf">Rails2 PDF</a>より</p>
<blockquote><p>Rails 2 makes no apologies for its all-in attitude about RESTful development and replaces the standard script/generate scaffold with the scaffold_resource functionality from 1.2. The general attitude　seems to be &#8220;Why wouldn&#8217;t you want to create RESTful scaffolding?&#8221;.<br />
There&#8217;s not much not to like with the RESTful generation – giving you RESTful forms in the view templates and the appropriate RESTful structure in your controllers.</p></blockquote>
<p>教訓：英語版の技術書を買うんだったら和訳が出るまでに読みきらないと悲しい結果になる</p>
]]></content:encoded>
			<wfw:commentRss>http://www.saitoudaitoku.com/wordpress/?feed=rss2&#038;p=436</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Rails勉強会@東京第25回に行ってきました</title>
		<link>http://www.saitoudaitoku.com/wordpress/?p=424</link>
		<comments>http://www.saitoudaitoku.com/wordpress/?p=424#comments</comments>
		<pubDate>Mon, 17 Dec 2007 15:31:36 +0000</pubDate>
		<dc:creator>daitoku</dc:creator>
				<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://www.saitoudaitoku.com/wordpress/?p=424</guid>
		<description><![CDATA[最近、Rubyという言語とRuby on Railsというフレームワークにはまって趣味で勉強してたりするのだが、いかんせん周りにほとんど詳しい人がいないのでつまらん！というわけで週末にRails勉強会なるものに参加してき [...]]]></description>
			<content:encoded><![CDATA[<p>最近、Rubyという言語とRuby on Railsというフレームワークにはまって趣味で勉強してたりするのだが、<strong>いかんせん周りにほとんど詳しい人がいないのでつまらん！</strong>というわけで週末に<a href="http://wiki.fdiary.net/rails/?RailsMeetingTokyo-0025">Rails勉強会</a>なるものに参加してきました。</p>
<p>勉強会の流れは前半と後半２つのセッションにわかれており、事前あるいは当日にみんなで議論してセッション内容を決め、希望者に合わせて前半、後半の時間割と部屋割りをその場で決めてそれぞれ自分の好きなセッションに参加できる形式。運営は非常に完成度が高く初参加の私でも気持ちよく参加できました。</p>
<p>前半のセッションは、Yuumi3さんの初心者セッションに参加。パソコンの無い私は教科書を忘れた小学生のようにテスト駆動開発で有名なt-wadaさんのパソコンで見せてもらう。どうもです。&gt;t-wadaさん。先生を入れて4人という少人数なのでいろいろ聞けました。以下、独学ではなかなか学べない収穫。</p>
<ul>
<li>Scaffoldは&#8221;スカフォード&#8221;と発音するらしい</li>
<li>RailsのマニュアルはRDocなので自分ローカルで生成できる</li>
<li>SQLite3はDBの起動もDB作成も不要なので小規模開発にはお手軽</li>
<li>script/generate modelは引数で一気にカラムも指定できる（こういうのがうれしい）</li>
<li>script/consoleが便利</li>
<li>統合環境はまだいまひとつで玄人はだいたいvimかemacsでマクロ</li>
<li>DSLにはオレオレDSLと言語内DSLがある</li>
</ul>
<p>後半のセッションは、ほぼ全員が目当てにしている笹田さんの1.9の基調講演セッション。やはり1.9.1はクリスマスに出るとのこと。その他、細かい言語使用をどうするかについての熱い議論。一番、おおっと思ったのはブロックパラメーターがブロックローカルになるとかそのあたりの話。</p>
<p>それにしても一人で知り合いもいない趣味の集まりに行ったのははじめてかも。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.saitoudaitoku.com/wordpress/?feed=rss2&#038;p=424</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
