<?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>func09 &#187; ruby</title>
	<atom:link href="http://www.func09.com/wordpress/archives/category/ruby/feed" rel="self" type="application/rss+xml" />
	<link>http://www.func09.com/wordpress</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Mon, 06 Feb 2012 04:25:55 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Rails3.1.rc4 とsprockets 2.0.0.beta.11 のバグ</title>
		<link>http://www.func09.com/wordpress/archives/1235</link>
		<comments>http://www.func09.com/wordpress/archives/1235#comments</comments>
		<pubDate>Thu, 14 Jul 2011 02:11:23 +0000</pubDate>
		<dc:creator>haga</dc:creator>
				<category><![CDATA[ruby]]></category>
		<category><![CDATA[ruby on rails]]></category>

		<guid isPermaLink="false">http://www.func09.com/wordpress/?p=1235</guid>
		<description><![CDATA[Rails3.1.rc4 と sprockets 2.0.0.beta.11 は相性が悪く /assets/以下のルーティングに失敗してしまうので Gemfileで下記のようにする gem 'sprockets', '! [...]]]></description>
			<content:encoded><![CDATA[<p>Rails3.1.rc4 と sprockets 2.0.0.beta.11 は相性が悪く</p>

<p>/assets/以下のルーティングに失敗してしまうので</p>

<p>Gemfileで下記のようにする</p>

<div class="codecolorer-container ruby blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">gem <span style="color:#996600;">'sprockets'</span>, <span style="color:#996600;">'!= 2.0.0.beta.11'</span></div></div>
]]></content:encoded>
			<wfw:commentRss>http://www.func09.com/wordpress/archives/1235/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rails（Rack）のHTTPステータスコードとシンボル名早見表</title>
		<link>http://www.func09.com/wordpress/archives/1226</link>
		<comments>http://www.func09.com/wordpress/archives/1226#comments</comments>
		<pubDate>Wed, 29 Jun 2011 09:17:16 +0000</pubDate>
		<dc:creator>haga</dc:creator>
				<category><![CDATA[ruby on rails]]></category>

		<guid isPermaLink="false">http://www.func09.com/wordpress/?p=1226</guid>
		<description><![CDATA[Railsのコントローラーで、ステータスコードを返すときは head 200 のように、ステータスコードの数字で返すこともできますが head :ok のように、数字の代わりにシンボルを使うこともできます。 しかしRai [...]]]></description>
			<content:encoded><![CDATA[<p>Railsのコントローラーで、ステータスコードを返すときは</p>

<div class="codecolorer-container ruby blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">head <span style="color:#006666;">200</span></div></div>

<p>のように、ステータスコードの数字で返すこともできますが</p>

<div class="codecolorer-container ruby blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">head <span style="color:#ff3333; font-weight:bold;">:ok</span></div></div>

<p>のように、数字の代わりにシンボルを使うこともできます。</p>

<p>しかしRailsのリファレンスを眺めていても :ok 以外のシンボル名がわからなかったので調べてまとめました。</p>

<p>参考：<a href="http://rubydoc.info/gems/rack/1.2.1/Rack/Utils">http://rubydoc.info/gems/rack/1.2.1/Rack/Utils</a></p>

<div class="codecolorer-container ruby blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color:#008000; font-style:italic;"># 確認方法</span><br />
<span style="color:#6666ff; font-weight:bold;">Rack::Utils</span>.<span style="color:#9900CC;">status_code</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#ff3333; font-weight:bold;">:bad_gateway</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#008000; font-style:italic;"># =&amp;gt; 502</span></div></div>

<p>ちなみに、辞書にないシンボルを渡すと問答無用で500を返します。ですから、500を返すときは</p>

<div class="codecolorer-container ruby blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">head <span style="color:#ff3333; font-weight:bold;">:ng</span></div></div>

<p>と、やっています。</p>

<table border="1">
<tbody>
<tr>
<th>コード</th>
<th>名前</th>
<th>シンボル</th>
</tr>
<tr>
<td>100</td>
<td>Continue</td>
<td>:continue</td>
</tr>
<tr>
<td>101</td>
<td>Switching Protocols</td>
<td>:switching_protocols</td>
</tr>
<tr>
<td>102</td>
<td>Processing</td>
<td>:processing</td>
</tr>
<tr>
<td>200</td>
<td>OK</td>
<td>:ok</td>
</tr>
<tr>
<td>201</td>
<td>Created</td>
<td>:created</td>
</tr>
<tr>
<td>202</td>
<td>Accepted</td>
<td>:accepted</td>
</tr>
<tr>
<td>203</td>
<td>Non-Authoritative Information</td>
<td>:non_authoritative_information</td>
</tr>
<tr>
<td>204</td>
<td>No Content</td>
<td>:no_content</td>
</tr>
<tr>
<td>205</td>
<td>Reset Content</td>
<td>:reset_content</td>
</tr>
<tr>
<td>206</td>
<td>Partial Content</td>
<td>:partial_content</td>
</tr>
<tr>
<td>207</td>
<td>Multi-Status</td>
<td>:multi_status</td>
</tr>
<tr>
<td>226</td>
<td>IM Used</td>
<td>:im_used</td>
</tr>
<tr>
<td>300</td>
<td>Multiple Choices</td>
<td>:multiple_choices</td>
</tr>
<tr>
<td>301</td>
<td>Moved Permanently</td>
<td>:moved_permanently</td>
</tr>
<tr>
<td>302</td>
<td>Found</td>
<td>:found</td>
</tr>
<tr>
<td>303</td>
<td>See Other</td>
<td>:see_other</td>
</tr>
<tr>
<td>304</td>
<td>Not Modified</td>
<td>:not_modified</td>
</tr>
<tr>
<td>305</td>
<td>Use Proxy</td>
<td>:use_proxy</td>
</tr>
<tr>
<td>306</td>
<td>Reserved</td>
<td>:reserved</td>
</tr>
<tr>
<td>307</td>
<td>Temporary Redirect</td>
<td>:temporary_redirect</td>
</tr>
<tr>
<td>400</td>
<td>Bad Request</td>
<td>:bad_request</td>
</tr>
<tr>
<td>401</td>
<td>Unauthorized</td>
<td>:unauthorized</td>
</tr>
<tr>
<td>402</td>
<td>Payment Required</td>
<td>:payment_required</td>
</tr>
<tr>
<td>403</td>
<td>Forbidden</td>
<td>:forbidden</td>
</tr>
<tr>
<td>404</td>
<td>Not Found</td>
<td>:not_found</td>
</tr>
<tr>
<td>405</td>
<td>Method Not Allowed</td>
<td>:method_not_allowed</td>
</tr>
<tr>
<td>406</td>
<td>Not Acceptable</td>
<td>:not_acceptable</td>
</tr>
<tr>
<td>407</td>
<td>Proxy Authentication Required</td>
<td>:proxy_authentication_required</td>
</tr>
<tr>
<td>408</td>
<td>Request Timeout</td>
<td>:request_timeout</td>
</tr>
<tr>
<td>409</td>
<td>Conflict</td>
<td>:conflict</td>
</tr>
<tr>
<td>410</td>
<td>Gone</td>
<td>:gone</td>
</tr>
<tr>
<td>411</td>
<td>Length Required</td>
<td>:length_required</td>
</tr>
<tr>
<td>412</td>
<td>Precondition Failed</td>
<td>:precondition_failed</td>
</tr>
<tr>
<td>413</td>
<td>Request Entity Too Large</td>
<td>:request_entity_too_large</td>
</tr>
<tr>
<td>414</td>
<td>Request-URI Too Long</td>
<td>:request_uri_too_long</td>
</tr>
<tr>
<td>415</td>
<td>Unsupported Media Type</td>
<td>:unsupported_media_type</td>
</tr>
<tr>
<td>416</td>
<td>Requested Range Not Satisfiable</td>
<td>:requested_range_not_satisfiable</td>
</tr>
<tr>
<td>417</td>
<td>Expectation Failed</td>
<td>:expectation_failed</td>
</tr>
<tr>
<td>422</td>
<td>Unprocessable Entity</td>
<td>:unprocessable_entity</td>
</tr>
<tr>
<td>423</td>
<td>Locked</td>
<td>:locked</td>
</tr>
<tr>
<td>424</td>
<td>Failed Dependency</td>
<td>:failed_dependency</td>
</tr>
<tr>
<td>426</td>
<td>Upgrade Required</td>
<td>:upgrade_required</td>
</tr>
<tr>
<td>500</td>
<td>Internal Server Error</td>
<td>:internal_server_error</td>
</tr>
<tr>
<td>501</td>
<td>Not Implemented</td>
<td>:not_implemented</td>
</tr>
<tr>
<td>502</td>
<td>Bad Gateway</td>
<td>:bad_gateway</td>
</tr>
<tr>
<td>503</td>
<td>Service Unavailable</td>
<td>:service_unavailable</td>
</tr>
<tr>
<td>504</td>
<td>Gateway Timeout</td>
<td>:gateway_timeout</td>
</tr>
<tr>
<td>505</td>
<td>HTTP Version Not Supported</td>
<td>:http_version_not_supported</td>
</tr>
<tr>
<td>506</td>
<td>Variant Also Negotiates</td>
<td>:variant_also_negotiates</td>
</tr>
<tr>
<td>507</td>
<td>Insufficient Storage</td>
<td>:insufficient_storage</td>
</tr>
<tr>
<td>510</td>
<td>Not Extended</td>
<td>:not_extended</td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.func09.com/wordpress/archives/1226/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cucumber + Capybara で RESTful API な ファイルアップロード</title>
		<link>http://www.func09.com/wordpress/archives/1207</link>
		<comments>http://www.func09.com/wordpress/archives/1207#comments</comments>
		<pubDate>Wed, 16 Feb 2011 10:15:11 +0000</pubDate>
		<dc:creator>haga</dc:creator>
				<category><![CDATA[ruby]]></category>
		<category><![CDATA[ruby on rails]]></category>

		<guid isPermaLink="false">http://www.func09.com/wordpress/?p=1207</guid>
		<description><![CDATA[冴えないタイトルですみません。メモです。 Cucumber + Capybara で RESTful APIをテストする場合は シナリオ: コメント投稿APIからコメントを投稿できる &#160; もし &#160;パラ [...]]]></description>
			<content:encoded><![CDATA[<p>冴えないタイトルですみません。メモです。</p>

<p>Cucumber + Capybara で RESTful APIをテストする場合は</p>

<div class="codecolorer-container text blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">シナリオ: コメント投稿APIからコメントを投稿できる<br />
&nbsp; もし &nbsp;パラメーター &quot;body&quot; に &quot;こんにちは！&quot; を設定する<br />
&nbsp; かつ &nbsp;&quot;コメント投稿API&quot;を&quot;POST&quot;で送信する<br />
&nbsp; ならば ステータスコードは &quot;201&quot; であること</div></div>

<div class="codecolorer-container ruby blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">もし <span style="color:#006600; font-weight:bold;">/</span>^パラメーター <span style="color:#996600;">&quot;([^&quot;</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">*</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#996600;">&quot; に &quot;</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#91;</span>^<span style="color:#996600;">&quot;]*)&quot;</span> を設定する$<span style="color:#006600; font-weight:bold;">/</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>param_name, value<span style="color:#006600; font-weight:bold;">|</span><br />
&nbsp; <span style="color:#0066ff; font-weight:bold;">@params</span> <span style="color:#006600; font-weight:bold;">||</span>= <span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">&#125;</span><br />
&nbsp; <span style="color:#0066ff; font-weight:bold;">@params</span>.<span style="color:#9900CC;">merge</span>!<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#123;</span><br />
&nbsp; &nbsp; param_name.<span style="color:#9900CC;">to_sym</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> value<br />
&nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span><br />
<span style="color:#9966CC; font-weight:bold;">end</span><br />
<br />
もし <span style="color:#006600; font-weight:bold;">/</span>^<span style="color:#996600;">&quot;([^&quot;</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">*</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#996600;">&quot;を&quot;</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#91;</span>^<span style="color:#996600;">&quot;]*)&quot;</span>で送信する$<span style="color:#006600; font-weight:bold;">/</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>page_name, http_method<span style="color:#006600; font-weight:bold;">|</span><br />
&nbsp; send<span style="color:#006600; font-weight:bold;">&#40;</span>http_method.<span style="color:#9900CC;">downcase</span>.<span style="color:#9900CC;">to_sym</span>, path_to<span style="color:#006600; font-weight:bold;">&#40;</span>page_name<span style="color:#006600; font-weight:bold;">&#41;</span>, <span style="color:#0066ff; font-weight:bold;">@params</span><span style="color:#006600; font-weight:bold;">&#41;</span><br />
<span style="color:#9966CC; font-weight:bold;">end</span><br />
<br />
ならば <span style="color:#006600; font-weight:bold;">/</span>^ステータスコードは <span style="color:#996600;">&quot;([^&quot;</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">*</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#996600;">&quot; であること$/ do |status_code|<br />
&nbsp; response.status.should eq(status_code.to_i)<br />
end</span></div></div>

<p>こんな感じでテストを書いています。（「コメント投稿API」はpath.rbで定義しておきます）</p>

<p>さて、本題ですが画像のアップロードでハマりました。<br />
ハマった仮定は省きますが、<a href="http://rdoc.info/github/jnicklas/capybara/ccced2/Capybara/Driver/RackTest">CapybaraがRack::Test</a>をドライバーとして使っているので、Rack::Test::UploadFile を使ってファイルアップロード周りのコードを簡略化できます。</p>

<div class="codecolorer-container text blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">シナリオ: コメント投稿APIから画像付きのコメントを投稿できる<br />
&nbsp; もし &nbsp;パラメーター &quot;body&quot; に &quot;こんにちは！&quot; を設定する<br />
&nbsp; かつ &nbsp;パラメーター &quot;image&quot; に &quot;sample.png&quot; をファイルとして設定する<br />
&nbsp; かつ &nbsp;&quot;コメント投稿API&quot;を&quot;POST&quot;で送信する<br />
&nbsp; ならば ステータスコードは &quot;201&quot; であること</div></div>

<div class="codecolorer-container ruby blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">もし <span style="color:#006600; font-weight:bold;">/</span>^パラメーター <span style="color:#996600;">&quot;([^&quot;</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">*</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#996600;">&quot; に &quot;</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#91;</span>^<span style="color:#996600;">&quot;]*)&quot;</span> をファイルとして設定する$<span style="color:#006600; font-weight:bold;">/</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>param_name, file_path<span style="color:#006600; font-weight:bold;">|</span><br />
&nbsp; file = <span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#9900CC;">join</span><span style="color:#006600; font-weight:bold;">&#40;</span>Rails.<span style="color:#9900CC;">root</span>, <span style="color:#996600;">'features/fixtures/images'</span> file_path<span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span><br />
&nbsp; content_type = <span style="color:#6666ff; font-weight:bold;">MIME::Types</span>.<span style="color:#9900CC;">type_for</span><span style="color:#006600; font-weight:bold;">&#40;</span>file.<span style="color:#9900CC;">path</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006666;">0</span><span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color:#9900CC;">to_s</span><br />
&nbsp; <span style="color:#0066ff; font-weight:bold;">@params</span> <span style="color:#006600; font-weight:bold;">||</span>= <span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">&#125;</span><br />
&nbsp; <span style="color:#0066ff; font-weight:bold;">@params</span>.<span style="color:#9900CC;">merge</span>!<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#123;</span><br />
&nbsp; &nbsp; param_name.<span style="color:#9900CC;">to_sym</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> Rack::<span style="color:#CC00FF; font-weight:bold;">Test</span>::UploadedFile.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span>file.<span style="color:#9900CC;">path</span>, content_type<span style="color:#006600; font-weight:bold;">&#41;</span><br />
&nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span><br />
<span style="color:#9966CC; font-weight:bold;">end</span></div></div>

<p>Rack::Test::UpoadFileの使い方などは、Rack::TestのRSpecを見るとわかりやすかったです。<br />
<a href="https://github.com/brynary/rack-test/blob/master/spec/rack/test/multipart_spec.rb">https://github.com/brynary/rack-test/blob/master/spec/rack/test/multipart_spec.rb</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.func09.com/wordpress/archives/1207/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[rails][mongoid] MongoidでMapReduce</title>
		<link>http://www.func09.com/wordpress/archives/1200</link>
		<comments>http://www.func09.com/wordpress/archives/1200#comments</comments>
		<pubDate>Sat, 12 Feb 2011 17:14:47 +0000</pubDate>
		<dc:creator>haga</dc:creator>
				<category><![CDATA[ruby]]></category>
		<category><![CDATA[ruby on rails]]></category>

		<guid isPermaLink="false">http://www.func09.com/wordpress/?p=1200</guid>
		<description><![CDATA[メモです。 RailsでMongoidを試していろいろやっているのですが、SQLでGROUPとか使う系の処理は、Mongoidに備わっているgroupメソッドよりもmap_reduceメソッドの方が良さそうなのでした。  [...]]]></description>
			<content:encoded><![CDATA[<p>メモです。</p>

<p>RailsでMongoidを試していろいろやっているのですが、SQLでGROUPとか使う系の処理は、Mongoidに備わっているgroupメソッドよりもmap_reduceメソッドの方が良さそうなのでした。</p>

<p>MapReduce<br />
<a href="http://www.mongodb.org/display/DOCSJP/MapReduce#MapReduce-map%E3%83%95%E3%82%A1%E3%83%B3%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3">http://www.mongodb.org/display/DOCSJP/MapReduce#MapReduce-map%E3%83%95%E3%82%A1%E3%83%B3%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3</a><br /></p>

<p>map_reduce method in Class: Mongo::Collection<br />
<a href="http://api.mongodb.org/ruby/current/Mongo/Collection.html#map_reduce-instance_method">http://api.mongodb.org/ruby/current/Mongo/Collection.html#map_reduce-instance_method</a></p>

<p>例えばPointというコレクションがあって、ユーザーごとのポイントを集計してソートしたいという場合、以下のようなコードで集計＆ソートできました。</p>

<div class="codecolorer-container ruby blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">m =<span style="color:#006600; font-weight:bold;">&lt;&lt;-</span>EOT<br />
function<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#123;</span><br />
&nbsp; emit<span style="color:#006600; font-weight:bold;">&#40;</span>this.<span style="color:#9900CC;">user_id</span>, <span style="color:#006600; font-weight:bold;">&#123;</span> <br />
&nbsp; &nbsp; point: this.<span style="color:#9900CC;">point</span><br />
&nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
<span style="color:#006600; font-weight:bold;">&#125;</span><br />
EOT<br />
<br />
r =<span style="color:#006600; font-weight:bold;">&lt;&lt;-</span>EOT<br />
function<span style="color:#006600; font-weight:bold;">&#40;</span>key, values<span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#123;</span><br />
&nbsp; var sum = <span style="color:#006666;">0</span>;<br />
&nbsp; values.<span style="color:#9900CC;">forEach</span><span style="color:#006600; font-weight:bold;">&#40;</span>function<span style="color:#006600; font-weight:bold;">&#40;</span>value<span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#123;</span><br />
&nbsp; &nbsp; sum <span style="color:#006600; font-weight:bold;">+</span>= value.<span style="color:#9900CC;">point</span>;<br />
&nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;<br />
&nbsp; <span style="color:#0000FF; font-weight:bold;">return</span> <span style="color:#006600; font-weight:bold;">&#123;</span><br />
&nbsp; &nbsp; point: sum<br />
&nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span>;<br />
<span style="color:#006600; font-weight:bold;">&#125;</span><br />
EOT<br />
Point.<span style="color:#9900CC;">collection</span>.<span style="color:#9900CC;">map_reduce</span><span style="color:#006600; font-weight:bold;">&#40;</span>m,r<span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">find</span>.<span style="color:#9900CC;">sort</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'value.point'</span>, <span style="color:#ff3333; font-weight:bold;">:desc</span><span style="color:#006600; font-weight:bold;">&#41;</span></div></div>

<p>慣れればもっと複雑なことができるんだろうけど、mongodb自体よくわかってないので・・。</p>

<p>ここを参考にしました：
MongoDB, Mongoid and Map/Reduce <br />
<a href="http://nsaunders.wordpress.com/2010/08/09/mongodb-mongoid-and-mapreduce/">http://nsaunders.wordpress.com/2010/08/09/mongodb-mongoid-and-mapreduce/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.func09.com/wordpress/archives/1200/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>[rails] resque-web にだけBasic認証をかける方法</title>
		<link>http://www.func09.com/wordpress/archives/1194</link>
		<comments>http://www.func09.com/wordpress/archives/1194#comments</comments>
		<pubDate>Fri, 04 Feb 2011 03:42:07 +0000</pubDate>
		<dc:creator>haga</dc:creator>
				<category><![CDATA[ruby]]></category>
		<category><![CDATA[ruby on rails]]></category>
		<category><![CDATA[rack]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[resque]]></category>

		<guid isPermaLink="false">http://www.func09.com/wordpress/?p=1194</guid>
		<description><![CDATA[メモです。 非同期処理にResqueを使う場合、/resque にアクセスすることでResqueのジョブ管理画面を利用できます。 公開する場合、管理画面には認証をかけておきたいので、簡単にBasic認証をかけます。 Ra [...]]]></description>
			<content:encoded><![CDATA[<p>メモです。</p>

<p>非同期処理にResqueを使う場合、/resque にアクセスすることでResqueのジョブ管理画面を利用できます。</p>

<p>公開する場合、管理画面には認証をかけておきたいので、簡単にBasic認証をかけます。</p>

<p>Rails.root にあるconfig.ruを編集します。</p>

<div class="codecolorer-container ruby blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color:#CC0066; font-weight:bold;">require</span> ::<span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#9900CC;">expand_path</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'../config/environment'</span>, &nbsp;<span style="color:#0000FF; font-weight:bold;">__FILE__</span><span style="color:#006600; font-weight:bold;">&#41;</span><br />
<span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'resque/server'</span><br />
<span style="color:#008000; font-style:italic;"># run Rack::URLMap.new</span><br />
<span style="color:#008000; font-style:italic;"># &nbsp; &quot;/&quot; &nbsp; &nbsp; &nbsp; =&gt; MyApp::Application,</span><br />
<span style="color:#008000; font-style:italic;"># &nbsp; &quot;/resque&quot; =&gt; Resque::Server.new</span><br />
<br />
map <span style="color:#996600;">'/'</span> <span style="color:#9966CC; font-weight:bold;">do</span><br />
&nbsp; run <span style="color:#6666ff; font-weight:bold;">MyApp::Application</span><br />
<span style="color:#9966CC; font-weight:bold;">end</span><br />
<br />
map <span style="color:#996600;">'/resque'</span> <span style="color:#9966CC; font-weight:bold;">do</span><br />
&nbsp; use <span style="color:#6666ff; font-weight:bold;">Rack::Auth::Basic</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>user, passwd<span style="color:#006600; font-weight:bold;">|</span><br />
&nbsp; &nbsp; user == <span style="color:#996600;">'admin'</span> <span style="color:#006600; font-weight:bold;">&amp;&amp;</span> passwd == <span style="color:#996600;">'passwd'</span><br />
&nbsp; <span style="color:#9966CC; font-weight:bold;">end</span><br />
&nbsp; run <span style="color:#6666ff; font-weight:bold;">Resque::Server</span>.<span style="color:#9900CC;">new</span><br />
end<span style="color:#006600; font-weight:bold;">%</span></div></div>

<p>これで「admin/passwd」で認証が掛かりました。</p>

<p>Rackって便利っすねー。</p>

<p>参考：<a href="http://akr97.com/capsule/?tag=ruby&#038;paged=3
http://akr97.com/capsule/?tag=ruby&#038;paged=3">http://akr97.com/capsule/?tag=ruby&amp;paged=3</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.func09.com/wordpress/archives/1194/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[rails] rspecでJSONをテストする</title>
		<link>http://www.func09.com/wordpress/archives/1185</link>
		<comments>http://www.func09.com/wordpress/archives/1185#comments</comments>
		<pubDate>Thu, 27 Jan 2011 01:00:29 +0000</pubDate>
		<dc:creator>haga</dc:creator>
				<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://www.func09.com/wordpress/?p=1185</guid>
		<description><![CDATA[rspecで簡単にJSONの構造をテストしたい時に使えるTIPS # spec/support/custom_matchers.rb RSpec::Matchers.define :have_json do &#124;selec [...]]]></description>
			<content:encoded><![CDATA[<p>rspecで簡単にJSONの構造をテストしたい時に使えるTIPS</p>

<div class="codecolorer-container ruby blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color:#008000; font-style:italic;"># spec/support/custom_matchers.rb</span><br />
<span style="color:#6666ff; font-weight:bold;">RSpec::Matchers</span>.<span style="color:#9900CC;">define</span> <span style="color:#ff3333; font-weight:bold;">:have_json</span> <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>selector<span style="color:#006600; font-weight:bold;">|</span><br />
&nbsp; match <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span>response_body<span style="color:#006600; font-weight:bold;">|</span><br />
&nbsp; &nbsp; selector.<span style="color:#CC0066; font-weight:bold;">gsub!</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">/</span>_<span style="color:#006600; font-weight:bold;">/</span>,<span style="color:#996600;">'-'</span><span style="color:#006600; font-weight:bold;">&#41;</span><br />
&nbsp; &nbsp; json = JSON.<span style="color:#9900CC;">parse</span><span style="color:#006600; font-weight:bold;">&#40;</span>response_body<span style="color:#006600; font-weight:bold;">&#41;</span><br />
&nbsp; &nbsp; prefix = <span style="color:#9966CC; font-weight:bold;">case</span> json<br />
&nbsp; &nbsp; <span style="color:#9966CC; font-weight:bold;">when</span> <span style="color:#CC0066; font-weight:bold;">Array</span><br />
&nbsp; &nbsp; &nbsp; <span style="color:#996600;">&quot;/objects/object&quot;</span><br />
&nbsp; &nbsp; <span style="color:#9966CC; font-weight:bold;">when</span> <span style="color:#CC00FF; font-weight:bold;">Hash</span><br />
&nbsp; &nbsp; &nbsp; <span style="color:#996600;">&quot;/hash&quot;</span><br />
&nbsp; &nbsp; <span style="color:#9966CC; font-weight:bold;">end</span><br />
&nbsp; &nbsp; doc = <span style="color:#6666ff; font-weight:bold;">Nokogiri::XML</span><span style="color:#006600; font-weight:bold;">&#40;</span>json.<span style="color:#9900CC;">to_xml</span><span style="color:#006600; font-weight:bold;">&#41;</span><br />
&nbsp; &nbsp; doc.<span style="color:#9900CC;">search</span><span style="color:#006600; font-weight:bold;">&#40;</span>prefix <span style="color:#006600; font-weight:bold;">+</span> selector<span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">size</span> <span style="color:#006600; font-weight:bold;">&gt;</span> <span style="color:#006666;">0</span><br />
&nbsp; <span style="color:#9966CC; font-weight:bold;">end</span><br />
<span style="color:#9966CC; font-weight:bold;">end</span></div></div>

<p>have_jsonというカスタムマッチャを用意します。
JSONをXMLに変換し、nokogiriを使ってxpathで検索します。</p>

<div class="codecolorer-container ruby blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="ruby codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color:#008000; font-style:italic;"># 試してないので動かないかも・・</span><br />
<span style="color:#008000; font-style:italic;"># ex:response json</span><br />
<span style="color:#008000; font-style:italic;"># &nbsp;{</span><br />
<span style="color:#008000; font-style:italic;"># &nbsp; &nbsp;&quot;hoge&quot; : </span><br />
<span style="color:#008000; font-style:italic;"># &nbsp; &nbsp;{</span><br />
<span style="color:#008000; font-style:italic;"># &nbsp; &nbsp; &nbsp;&quot;id&quot; : 1,</span><br />
<span style="color:#008000; font-style:italic;"># &nbsp; &nbsp; &nbsp;&quot;name&quot; : &quot;aaaaaa&quot;,</span><br />
<span style="color:#008000; font-style:italic;"># &nbsp; &nbsp; &nbsp;&quot;body&quot; : &quot;bbbbbbbbbbbb&quot;,</span><br />
<span style="color:#008000; font-style:italic;"># &nbsp; &nbsp;}</span><br />
<span style="color:#008000; font-style:italic;"># &nbsp;} </span><br />
describe HogesController<br />
&nbsp; context <span style="color:#996600;">&quot;GET /hoge/1.json&quot;</span><br />
&nbsp; &nbsp; it <span style="color:#996600;">&quot;should have [:id, :name, :body] in response JSON&quot;</span> <span style="color:#9966CC; font-weight:bold;">do</span><br />
&nbsp; &nbsp; &nbsp; get <span style="color:#ff3333; font-weight:bold;">:show</span>, <span style="color:#ff3333; font-weight:bold;">:id</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#006666;">1</span>, :<span style="color:#CC0066; font-weight:bold;">format</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#ff3333; font-weight:bold;">:json</span><br />
&nbsp; &nbsp; &nbsp; response.<span style="color:#9900CC;">body</span>.<span style="color:#9900CC;">should</span> have_json<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;/hoge/id&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; response.<span style="color:#9900CC;">body</span>.<span style="color:#9900CC;">should</span> have_json<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;/hoge/name&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; response.<span style="color:#9900CC;">body</span>.<span style="color:#9900CC;">should</span> have_json<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;/hoge/body&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span><br />
&nbsp; &nbsp; <span style="color:#9966CC; font-weight:bold;">end</span><br />
&nbsp; <span style="color:#9966CC; font-weight:bold;">end</span><br />
<span style="color:#9966CC; font-weight:bold;">end</span></div></div>

<p>サンプルはこんな感じ
JSONの中身から、検索したいキーを、xpathで指定します。
キーが見つかれば、テストが通ります。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.func09.com/wordpress/archives/1185/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Railsのイケてる管理画面を生成するプラグイン「Typus」</title>
		<link>http://www.func09.com/wordpress/archives/1136</link>
		<comments>http://www.func09.com/wordpress/archives/1136#comments</comments>
		<pubDate>Sun, 12 Dec 2010 01:00:54 +0000</pubDate>
		<dc:creator>haga</dc:creator>
				<category><![CDATA[ruby]]></category>
		<category><![CDATA[ruby on rails]]></category>
		<category><![CDATA[日記]]></category>

		<guid isPermaLink="false">http://www.func09.com/wordpress/?p=1136</guid>
		<description><![CDATA[（この記事はRuby Advent Calendar jp: 2010 : ATNDの12日目です。前日はbash0C7さんでした。） 今日はRubyでイケてる管理画面を生成する「Typus」を紹介します。 Typusは [...]]]></description>
			<content:encoded><![CDATA[<p>（この記事は<a href="http://atnd.org/events/10430">Ruby Advent Calendar jp: 2010</a> : ATNDの12日目です。前日は<a href="http://d.hatena.ne.jp/bash0C7/20101211/RubyAdventCalendar_jp2010">bash0C7</a>さんでした。）</p>

<p><img class="alignnone size-full wp-image-1137" title="typus_top" src="http://www.func09.com/wordpress/wp-content/uploads/typus_top.png" alt="" width="560" height="200" /></p>

<p>今日はRubyでイケてる管理画面を生成する「Typus」を紹介します。</p>

<p>Typusは</p>

<ul>
    <li>デザインがシンプルで素敵</li>
    <li>認証機能つき（認証なし・HTTP認証・DB認証から選べます）</li>
    <li>ユーザーの権限制御が可能</li>
    <li>Rails3で動く</li>
    <li>テンプレートのカスタマイズが楽</li>
</ul>

<p>という点でイケてます。</p>

<p>Rails2からRails3になって、様々なプラグインの定番が切り替わった印象を受けていますが、TypusもActiveScaffoldに変わって定番になるだろうなぁと思うので、是非使ってみてください。</p>

<p><a href="https://github.com/fesplugas/typus">https://github.com/fesplugas/typus</a></p>

<h3>用意</h3>

<p>まずは、Rails3で簡単なプロジェクトを作ります。ユーザーモデルとタスクモデルを生成します。</p>

<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">%</span> rails new todo<br />
<span style="color: #000000; font-weight: bold;">%</span> <span style="color: #7a0874; font-weight: bold;">cd</span> todo<br />
<span style="color: #000000; font-weight: bold;">%</span> rails generate model user username:string<br />
<span style="color: #000000; font-weight: bold;">%</span> rails generate model task title:string completed:boolean user_id:integer<br />
<span style="color: #000000; font-weight: bold;">%</span> rake db:migrate</div></div>

<p>準備OKです。</p>

<h3>Gemfile編集</h3>

<p>Gemfileにtypusを追加します。</p>

<div class="codecolorer-container text blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">gem 'typus', :git =&gt; 'https://github.com/fesplugas/typus.git'</div></div>

<p>Bundleを更新します。</p>

<div class="codecolorer-container text blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">% bundle<br />
Fetching https://github.com/fesplugas/typus.gitremote: Counting objects: 36226, done.<br />
remote: Compressing objects: 100% (13705/13705), done.<br />
remote: Total 36226 (delta 21273), reused 35447 (delta 20675)<br />
Receiving objects: 100% (36226/36226), 3.81 MiB | 428 KiB/s, done.<br />
Resolving deltas: 100% (21273/21273), done.<br />
Fetching source index for http://rubygems.org/<br />
Using rake (0.8.7)<br />
… 略<br />
Using typus (3.0.3) from https://github.com/fesplugas/typus.git (at master)<br />
Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.</div></div>

<h3>ジェネレーターを実行して、管理画面を生成する</h3>

<div class="codecolorer-container bash blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">%</span> rails g typus<br />
create &nbsp;config<span style="color: #000000; font-weight: bold;">/</span>typus<span style="color: #000000; font-weight: bold;">/</span>README<br />
create &nbsp;config<span style="color: #000000; font-weight: bold;">/</span>initializers<span style="color: #000000; font-weight: bold;">/</span>typus.rb<br />
create &nbsp;config<span style="color: #000000; font-weight: bold;">/</span>initializers<span style="color: #000000; font-weight: bold;">/</span>typus_resources.rb<br />
以下略</div></div>

<p><img class="alignnone size-full wp-image-1145" title="Tasks" src="http://www.func09.com/wordpress/wp-content/uploads/Tasks.jpg" alt="" width="560" height="356" /></p>

<p>できあがり！
イヤッホゥ、超簡単！</p>

<h3>さらにカスタムしたいなら</h3>

<p>ドキュメントを参考のこと
<a href="http://core.typuscms.com/"> http://core.typuscms.com/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.func09.com/wordpress/archives/1136/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>[ラペコ] mixiチェックボックスに対応しました</title>
		<link>http://www.func09.com/wordpress/archives/1002</link>
		<comments>http://www.func09.com/wordpress/archives/1002#comments</comments>
		<pubDate>Fri, 10 Sep 2010 16:33:33 +0000</pubDate>
		<dc:creator>haga</dc:creator>
				<category><![CDATA[ruby on rails]]></category>
		<category><![CDATA[ラペコ]]></category>

		<guid isPermaLink="false">http://www.func09.com/wordpress/?p=1002</guid>
		<description><![CDATA[昨日、mixiの新プラットフォームの発表会、mixi meetup 2010 が行われ、僕も参加してきました。 mixiコネクトはmixi pluginとmixi graph api という２つに分かれました。 予想以上 [...]]]></description>
			<content:encoded><![CDATA[<p>昨日、mixiの新プラットフォームの発表会、mixi meetup 2010 が行われ、僕も参加してきました。</p>

<p>mixiコネクトはmixi pluginとmixi graph api という２つに分かれました。</p>

<p>予想以上にmixiの本気を感じることができて、今後はmixiへの対応もどんどんとりいれていこうと思いました。</p>

<p>ので、帰ってきてさっそく本日から一般でも使えるようになったmixiチェックボタンをラペコに追加してみました。</p>

<p>こんな感じ</p>

<p><img src="http://www.func09.com/wordpress/wp-content/uploads/36e4ce5bed1a9347fb786d1f1b2a042a.jpg" alt="" title="満面の笑み。 - ラペコ 美味しそう！を共有するサービス" width="492" height="275" class="alignnone size-full wp-image-1003" /></p>

<p>クリックするとポップアップが立ち上がり、
mixiのアクティビティに表示されて、マイミクにペコフォトをチェックしたことを知らせることができます。</p>

<p>どうぞ、チェックしてみてください。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.func09.com/wordpress/archives/1002/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mitaka.rb #10 でLTした</title>
		<link>http://www.func09.com/wordpress/archives/995</link>
		<comments>http://www.func09.com/wordpress/archives/995#comments</comments>
		<pubDate>Thu, 09 Sep 2010 15:54:50 +0000</pubDate>
		<dc:creator>haga</dc:creator>
				<category><![CDATA[ruby]]></category>
		<category><![CDATA[日記]]></category>

		<guid isPermaLink="false">http://www.func09.com/wordpress/?p=995</guid>
		<description><![CDATA[Mitaka.rb #10 でLTをさせていただきました。 http://atnd.org/events/7542 ラペコについての紹介LTでした ラペコについてView more presentations from  [...]]]></description>
			<content:encoded><![CDATA[<p>Mitaka.rb #10 でLTをさせていただきました。</p>

<p><a href="http://atnd.org/events/7542">http://atnd.org/events/7542</a></p>

<p>ラペコについての紹介LTでした</p>

<div style="width:425px" id="__ss_5165104"><strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/func09/ss-5165104" title="ラペコについて">ラペコについて</a></strong><object id="__sse5165104" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=2-100909104858-phpapp02&#038;stripped_title=ss-5165104" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed name="__sse5165104" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=2-100909104858-phpapp02&#038;stripped_title=ss-5165104" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object><div style="padding:5px 0 12px">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/func09">func09</a>.</div></div>

<p>Mitaka.rb主催者でもあり、今回LTのお誘いをいただいた@ysakaki さん、運営の方々、ありがとうございました。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.func09.com/wordpress/archives/995/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Rails3][Mongoid] スレッド式掲示板を作ってみた</title>
		<link>http://www.func09.com/wordpress/archives/980</link>
		<comments>http://www.func09.com/wordpress/archives/980#comments</comments>
		<pubDate>Mon, 16 Aug 2010 02:22:38 +0000</pubDate>
		<dc:creator>haga</dc:creator>
				<category><![CDATA[ruby]]></category>
		<category><![CDATA[ruby on rails]]></category>
		<category><![CDATA[activerecord]]></category>
		<category><![CDATA[mongodb]]></category>
		<category><![CDATA[mongoid]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[rails3]]></category>

		<guid isPermaLink="false">http://www.func09.com/wordpress/?p=980</guid>
		<description><![CDATA[Rails3で簡単なサンプルを作ってみた スレッド式掲示板です。 レスは追加できるけど、スレッド追加する機能は作り忘れた。 Mongoid版 http://github.com/func09/rails3_sample_ [...]]]></description>
			<content:encoded><![CDATA[<p>Rails3で簡単なサンプルを作ってみた
スレッド式掲示板です。</p>

<p><img class="alignnone size-medium wp-image-984" title="Bbs" src="http://www.func09.com/wordpress/wp-content/uploads/Bbs-300x282.jpg" alt="" width="300" height="282" /></p>

<p><img class="alignnone size-medium wp-image-983" title="Bbs-1" src="http://www.func09.com/wordpress/wp-content/uploads/Bbs-1-300x280.jpg" alt="" width="300" height="280" /></p>

<p>レスは追加できるけど、スレッド追加する機能は作り忘れた。</p>

<p><strong>Mongoid版</strong></p>

<p><a href="http://github.com/func09/rails3_sample_bbs/tree/mongoid-20100813">http://github.com/func09/rails3_sample_bbs/tree/mongoid-20100813</a></p>

<p><strong>ActiveRecord版</strong></p>

<p><a href="http://github.com/func09/rails3_sample_bbs/tree/activerecord-20100813">http://github.com/func09/rails3_sample_bbs/tree/activerecord-20100813</a></p>

<p>それぞれのREADMEに従えば動くはず。
rake db:seed でサンプルデータがインサートされるます。</p>

<p>Rails3だからといって、別段特殊なコードは書けなかった。
よくもわるくもいつもどおり書けた。</p>

<p><a href="http://github.com/func09/rails3_sample_bbs/zipball/mongoid-20100813">http://github.com/func09/rails3_sample_bbs/zipball/mongoid-20100813</a></p>

<p><a href="http://github.com/func09/rails3_sample_bbs/zipball/activerecord-20100813">http://github.com/func09/rails3_sample_bbs/zipball/activerecord-20100813</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.func09.com/wordpress/archives/980/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

