<?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>UKSTUDIO &#187; Ruby</title>
	<atom:link href="http://ukstudio.jp/tag/ruby/feed/" rel="self" type="application/rss+xml" />
	<link>http://ukstudio.jp</link>
	<description>いわゆる86世代のブログです</description>
	<lastBuildDate>Wed, 11 Jan 2012 05:53:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
	<div id='fb-root'></div>
					<script type='text/javascript'>
						window.fbAsyncInit = function()
						{
							FB.init({appId: null, status: true, cookie: true, xfbml: true});
						};
						(function()
						{
							var e = document.createElement('script'); e.async = true;
							e.src = document.location.protocol + '//connect.facebook.net/en_US/all.js';
							document.getElementById('fb-root').appendChild(e);
						}());
					</script>	
						<item>
		<title>IPv6 Hackathonに参加してきた</title>
		<link>http://ukstudio.jp/2011/08/25/ipv6hackathon/</link>
		<comments>http://ukstudio.jp/2011/08/25/ipv6hackathon/#comments</comments>
		<pubDate>Thu, 25 Aug 2011 06:13:37 +0000</pubDate>
		<dc:creator>ukstudio</dc:creator>
				<category><![CDATA[article]]></category>
		<category><![CDATA[ipv6]]></category>
		<category><![CDATA[llplanets]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://ukstudio.jp/?p=896</guid>
		<description><![CDATA[この間のLL PlanetsでIPv6 Hackathonとやらに参加してきた。Ruby組は僕と @sugamasao と @takano32 の3人でチーム組んだ。 RailsはIPv6でも大丈夫っぽい 大丈夫っぽいっていうのは軽くさわった程度なので断言できるほどでもないため。IPv6でRailsを立ち上げたかったら上記のように&#8211;bを指定すれば大丈夫です。 rails server --b="::" -p 3000 Unicornの場合もオプションで大丈夫。 unicorn_rails -l '[::]:3000' あとはApacheは対応してるし一応なんとかなるのではないか。Nginxとかthinは調べてないのでわからないです。あとMySQLはIPv6に対応していないらしいけど、データベースはWebサーバから見えれば大丈夫だし何とかなるでしょう。きっと。 github.comやrubygems.orgはAAAAレコードがない digコマンド叩けばわかるけど、みんな大好きgithub.comとrubygems.orgにはAAAAレコードがありません。ということで、IPv6オンリーな環境だと使えないと思うのでトンネル掘るなりなんなりの対応が必要っぽい。 今回作ったもの ネタアプリを作っただけなので実装としてはそんなにおもしろいものでもないかな。 ひとつは、twitterの発言ひとつに対してIPv6のアドレスをひとつ割り振って、そのIPv6にリクエストがきたらそれに対応するtwitterの発言を表示させるというもの。ただのアドレスの無駄遣いですね。 あと1時間ぐらい僕の時間があまったので、その1時間でIPv6アドレスをキーとするストレージっぽいものを作った。あるIPv6に対してPOSTするとbodyの内容が保存されて、GETすると保存された内容が取得できるみたいな。更新はPUTだろっていう話もあったけど、時間が足りなかったのでした。 発表資料がそのうち公開されると思います。 Lightweight Language Planets : 公開資料 Net::HTTPとURI そのストレージのテストをするのにRubyでNet::HTTPとURIを使って画像をPOSTするコードを書いた。その時にちょっとハマったことがあるので説明しておく。 IPv6は:を使ってアドレスを区切るので、ポート部とわけるために[]を使うことがある。そのアドレスをURI.parseしたあとにURI::HTTP#hostで値を取得すると[]が残ったままになり、Net::HTTPは[]があるとどうやらダメっぽくてエラーがでる。パッと見コードに何も問題がなさそうに見えるので知っておかないとハマる人はハマりそう。実際に僕はハマりました。 で、たまたまURI::HTTP#hostnameというメソッドがみつけてこっちは[]を取り除く。このURI::HTTP#hostnameはるりまを見るとどこにも乗ってなくて、挙動の違いはバグかとも思ったりしたんだけどどうやら違うみたい。 Rubyのuri/generic.rbを見ると以下のように書いてあった。 # Since IPv6 addresses are wrapped by brackets in URIs, # this method returns IPv6 addresses wrapped by brackets. [...]]]></description>
			<content:encoded><![CDATA[				<div class='wpfblike' style='height: 40px;'><fb:like href='http://ukstudio.jp/2011/08/25/ipv6hackathon/' layout='default' show_faces='true' width='400' action='like' colorscheme='light' send='false' /></div><p>この間のLL PlanetsでIPv6 Hackathonとやらに参加してきた。Ruby組は僕と @sugamasao と @takano32 の3人でチーム組んだ。</p>
				<h2>RailsはIPv6でも大丈夫っぽい</h2>
				<p>大丈夫っぽいっていうのは軽くさわった程度なので断言できるほどでもないため。IPv6でRailsを立ち上げたかったら上記のように&#8211;bを指定すれば大丈夫です。</p>
				<pre><code>rails server --b="::"  -p 3000</code></pre>
<p>Unicornの場合もオプションで大丈夫。</p>
<pre><code>unicorn_rails -l '[::]:3000'</code></pre>
				<p>あとはApacheは対応してるし一応なんとかなるのではないか。Nginxとかthinは調べてないのでわからないです。あとMySQLはIPv6に対応していないらしいけど、データベースはWebサーバから見えれば大丈夫だし何とかなるでしょう。きっと。</p>
				<h2>github.comやrubygems.orgはAAAAレコードがない</h2>
				<p>digコマンド叩けばわかるけど、みんな大好きgithub.comとrubygems.orgにはAAAAレコードがありません。ということで、IPv6オンリーな環境だと使えないと思うのでトンネル掘るなりなんなりの対応が必要っぽい。</p>
				<h2>今回作ったもの</h2>
				<p>ネタアプリを作っただけなので実装としてはそんなにおもしろいものでもないかな。</p>
				<p>ひとつは、twitterの発言ひとつに対してIPv6のアドレスをひとつ割り振って、そのIPv6にリクエストがきたらそれに対応するtwitterの発言を表示させるというもの。ただのアドレスの無駄遣いですね。</p>
				<p>あと1時間ぐらい僕の時間があまったので、その1時間でIPv6アドレスをキーとするストレージっぽいものを作った。あるIPv6に対してPOSTするとbodyの内容が保存されて、GETすると保存された内容が取得できるみたいな。更新はPUTだろっていう話もあったけど、時間が足りなかったのでした。</p>
				<p>発表資料がそのうち公開されると思います。<br />
				<a href="http://ll.jus.or.jp/2011/slide.html">Lightweight Language Planets : 公開資料</a></p>
				<h2>Net::HTTPとURI</h2>
				<p>そのストレージのテストをするのにRubyでNet::HTTPとURIを使って画像をPOSTするコードを書いた。その時にちょっとハマったことがあるので説明しておく。</p>
				<p><script src="https://gist.github.com/1170083.js?file=ipv6.rb"></script></p>
				<p>IPv6は:を使ってアドレスを区切るので、ポート部とわけるために[]を使うことがある。そのアドレスをURI.parseしたあとにURI::HTTP#hostで値を取得すると[]が残ったままになり、Net::HTTPは[]があるとどうやらダメっぽくてエラーがでる。パッと見コードに何も問題がなさそうに見えるので知っておかないとハマる人はハマりそう。実際に僕はハマりました。</p>
				<p>で、たまたまURI::HTTP#hostnameというメソッドがみつけてこっちは[]を取り除く。このURI::HTTP#hostnameはるりまを見るとどこにも乗ってなくて、挙動の違いはバグかとも思ったりしたんだけどどうやら違うみたい。</p>
				<p>Rubyのuri/generic.rbを見ると以下のように書いてあった。</p>
				<blockquote><p>
				# Since IPv6 addresses are wrapped by brackets in URIs,<br />
				# this method returns IPv6 addresses wrapped by brackets.<br />
				# This form is not appropriate to pass socket methods such as TCPSocket.open.<br />
				# If unwrapped host names are required, use &#8220;hostname&#8221; method.<br />
				#<br />
				#   URI(&#8220;http://[::1]/bar/baz&#8221;).host #=> &#8220;[::1]&#8221;<br />
				#   URI(&#8220;http://[::1]/bar/baz&#8221;).hostname #=> &#8220;::1&#8243;
				</p></blockquote>
				<p>ということで、hostnameメソッドを使いましょうという話でした。</p>
				<div class='wpfblike' style='height: 40px;'><fb:like href='http://ukstudio.jp/2011/08/25/ipv6hackathon/' layout='default' show_faces='true' width='400' action='like' colorscheme='light' send='false' /></div>
]]></content:encoded>
			<wfw:commentRss>http://ukstudio.jp/2011/08/25/ipv6hackathon/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TDDBC 東京 1.6でサポートスタッフをやってきました</title>
		<link>http://ukstudio.jp/2011/08/04/tddbc_tokyo_1_6/</link>
		<comments>http://ukstudio.jp/2011/08/04/tddbc_tokyo_1_6/#comments</comments>
		<pubDate>Thu, 04 Aug 2011 08:22:31 +0000</pubDate>
		<dc:creator>ukstudio</dc:creator>
				<category><![CDATA[article]]></category>
		<category><![CDATA[RSpec]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[tddbc]]></category>

		<guid isPermaLink="false">http://ukstudio.jp/?p=889</guid>
		<description><![CDATA[TDD Boot Camp 東京 1.6にRubyのサポートスタッフとして参加してきた。 当初の予定ではあくまでサポートなのでペアプロには参加しない予定だったけど、Rubyのグループが5人で人数が奇数になってしまったので急遽ペアプロに参加することにした。 この辺は@t_wadaさんや主催の@pocketberserkerさんとも相談してペアとトリオのふたつに分けるっていう話もあったけれど、僕が「せっかくだからペアプロして帰ってもらいたい」と思ったので若干の迷いはあれどペアプロに参加することにしたのでした。Ruby組は@takahashimさんや@1syoさん、@kwappaさんたちが参加されていて彼らなら付きっ切りでサポートしなくても大丈夫そうというのも理由のひとつ。 コードレビューを見た感じだと一応はうまくいったんじゃないかなと思う。特に@1syoさんと@takahashimさんのペア(ダブル高橋!)は積極的に質問をしてくれたので、僕としても教えがいがあった(えらそう)。ただ、質問を受けると僕の方のペアプロが一時的に中断してしまうし、僕としても頭の切り替えが結構大変だったので出来ることならやはり参加者同士でペアが組めるといいんだろうなぁ。理想を言うと全部のペアをスタッフ+参加者にすることなんだろうけど、あまり現実的じゃなさそう。 今回、最初に僕とペアを組んだ方が(お名前を聞くのを忘れてしまった&#8230;)モダンなテストの書き方を知りたいと言うので、ある程度xUnit的なテストの書き方でペアプロを進めた後、がっつりRSpec的な書き方にリファクタリングするということをやってみた。他のペアもRSpecは初期のit "なんちゃらかんちゃら"の書き方をされていたので、コードレビュー時に共有できたのはよかったのかな。RSpecの書き方については言っちゃいけないということはないだろうから言っちゃうけどそのうちるびまの方に書く予定なのでお楽しみに。 Ruby組は全体的にTDDのサイクル自体はできていた感じで、内容としてはテストの書き方にフォーカスが移っていたように感じる。例えば、標準出力が絡むテストのやり方とか、システム時刻が絡むテストのやり方とかdescribe/contextの切り方とか。多分、TDDBCも回数が増えていくにつれ、こういう人達がどんどん増えてくると思うからTDDBCの次の道をしめせるといいんじゃないかと思った。参考図書はいくつかあるけど、例えばxUTPとかTDDBCからのジャンプアップがヘビーすぎるなぁという気もする。(もちろんいきなりあれを全部読めという話でもないんだけれど) 話は変わって当日のお題を再度ひとりで実装してみたので、コードを公開しておきます。 ukstudio/tddbc1.6 &#8211; GitHub あまりじっくり書いたって感じでもないので仕様漏れとかありそうだけど、テストコードの書き方の参考にはなるかと思います。@bleisさんみたいに細かに解説しようと思ったけど気力がないのでした。 そういえば今回のスタッフも若手が多いな。@bleisさんと俺が86世代、@kyonn_mmさんと@pocketberserkerさんがひとつだかふたつだか年下だっけ? 同世代の人が頑張ってるのはとても刺激になります。 最後に、主催の@pocketberserkerさん、講演をしてくださった@t_wadaさんをはじめ、スタッフの方々どうもお疲れ様でした。参加者のみなさま、どうもありがとうございました。 特に@pocketberserkerさんは佐賀の人なのにもかかわらず東京でTDDBC主催とか、そのパワフルさを見習いたい感じです。本当にお疲れ様でした。 おまけ]]></description>
			<content:encoded><![CDATA[				<div class='wpfblike' style='height: 40px;'><fb:like href='http://ukstudio.jp/2011/08/04/tddbc_tokyo_1_6/' layout='default' show_faces='true' width='400' action='like' colorscheme='light' send='false' /></div><p><a href="http://www.zusaar.com/event/agZ6dXNhYXJyDQsSBUV2ZW50GPGlAww">TDD Boot Camp 東京 1.6</a>にRubyのサポートスタッフとして参加してきた。</p>
				<p>当初の予定ではあくまでサポートなのでペアプロには参加しない予定だったけど、Rubyのグループが5人で人数が奇数になってしまったので急遽ペアプロに参加することにした。</p>
				<p>この辺は@t_wadaさんや主催の@pocketberserkerさんとも相談してペアとトリオのふたつに分けるっていう話もあったけれど、僕が「せっかくだからペアプロして帰ってもらいたい」と思ったので若干の迷いはあれどペアプロに参加することにしたのでした。Ruby組は@takahashimさんや@1syoさん、@kwappaさんたちが参加されていて彼らなら付きっ切りでサポートしなくても大丈夫そうというのも理由のひとつ。</p>
				<p>コードレビューを見た感じだと一応はうまくいったんじゃないかなと思う。特に@1syoさんと@takahashimさんのペア(ダブル高橋!)は積極的に質問をしてくれたので、僕としても教えがいがあった(えらそう)。ただ、質問を受けると僕の方のペアプロが一時的に中断してしまうし、僕としても頭の切り替えが結構大変だったので出来ることならやはり参加者同士でペアが組めるといいんだろうなぁ。理想を言うと全部のペアをスタッフ+参加者にすることなんだろうけど、あまり現実的じゃなさそう。</p>
				<p>今回、最初に僕とペアを組んだ方が(お名前を聞くのを忘れてしまった&#8230;)モダンなテストの書き方を知りたいと言うので、ある程度xUnit的なテストの書き方でペアプロを進めた後、がっつりRSpec的な書き方にリファクタリングするということをやってみた。他のペアもRSpecは初期の<code>it "なんちゃらかんちゃら"</code>の書き方をされていたので、コードレビュー時に共有できたのはよかったのかな。RSpecの書き方については言っちゃいけないということはないだろうから言っちゃうけどそのうちるびまの方に書く予定なのでお楽しみに。</p>
				<p>Ruby組は全体的にTDDのサイクル自体はできていた感じで、内容としてはテストの書き方にフォーカスが移っていたように感じる。例えば、標準出力が絡むテストのやり方とか、システム時刻が絡むテストのやり方とかdescribe/contextの切り方とか。多分、TDDBCも回数が増えていくにつれ、こういう人達がどんどん増えてくると思うからTDDBCの次の道をしめせるといいんじゃないかと思った。参考図書はいくつかあるけど、例えばxUTPとかTDDBCからのジャンプアップがヘビーすぎるなぁという気もする。(もちろんいきなりあれを全部読めという話でもないんだけれど)</p>
				<p>話は変わって当日のお題を再度ひとりで実装してみたので、コードを公開しておきます。</p>
				<p><a href="https://github.com/ukstudio/tddbc1.6">ukstudio/tddbc1.6 &#8211; GitHub</a></p>
				<p>あまりじっくり書いたって感じでもないので仕様漏れとかありそうだけど、テストコードの書き方の参考にはなるかと思います。@bleisさんみたいに細かに解説しようと思ったけど気力がないのでした。</p>
				<p>そういえば今回のスタッフも若手が多いな。@bleisさんと俺が86世代、@kyonn_mmさんと@pocketberserkerさんがひとつだかふたつだか年下だっけ? 同世代の人が頑張ってるのはとても刺激になります。</p>
				<p>最後に、主催の@pocketberserkerさん、講演をしてくださった@t_wadaさんをはじめ、スタッフの方々どうもお疲れ様でした。参加者のみなさま、どうもありがとうございました。</p>
				<p>特に@pocketberserkerさんは佐賀の人なのにもかかわらず東京でTDDBC主催とか、そのパワフルさを見習いたい感じです。本当にお疲れ様でした。</p>
				<p>おまけ<br />
				<script src="https://gist.github.com/1124762.js"> </script></p>
				<div class='wpfblike' style='height: 40px;'><fb:like href='http://ukstudio.jp/2011/08/04/tddbc_tokyo_1_6/' layout='default' show_faces='true' width='400' action='like' colorscheme='light' send='false' /></div>
]]></content:encoded>
			<wfw:commentRss>http://ukstudio.jp/2011/08/04/tddbc_tokyo_1_6/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>大江戸Ruby会議01で発表してきました</title>
		<link>http://ukstudio.jp/2011/04/11/odrk01/</link>
		<comments>http://ukstudio.jp/2011/04/11/odrk01/#comments</comments>
		<pubDate>Mon, 11 Apr 2011 13:20:41 +0000</pubDate>
		<dc:creator>ukstudio</dc:creator>
				<category><![CDATA[article]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Ruby会議]]></category>

		<guid isPermaLink="false">http://ukstudio.jp/?p=830</guid>
		<description><![CDATA[昨日は大江戸Ruby会議という名のasakusa.rbの生活発表会があったので、普段の生活で考えてることを発表してきた。ちなみに実はasakusa.rbの参加回数はそんなに多くなかったりする。当日のスライドと動画はこちら。KaigiFreaksは仕事がはやくてすごい。いつもありがとうございます! 大江戸Ruby会議 View more presentations from Yuki Akamatsu. 大江戸Ruby会議01 on Vimeo この発表について何か僕にもの申したい人がいたら@ukstudioかy.akamatsu[at]ukstudio.jpまで頂けるとありがたいです。 発表内容についてちょこっとだけ書いておこうかな。パブリックスピーカーの告白で言う「講演家がこう話せばよかったと思うスピーチ」にあたる部分。 タイトルに戦略ってあるけど、正直そもそもそういったものがあるのかよくわからない。CIとかは環境の話だし、TDDとかリファクタリングとかはスキルだしでそれらが「戦略」かと言われると違う気がする。 結局のところ、継続的に改善していくしかないと思うんだよなぁ。そうなると後はもう手を動かすか動かさないかの話になる。そんなことを考えたら終始「熱意を持って頑張って」みたいな話になってしまった。これはこれで妙に好評だったけど(母数80ぐらいのうちサンプリング5ぐらい)。ちなみに熱意がなくとも仕事だと割り切って手を動かしてももちろんいいと思います。 で、手を動かす前提となるとClean Codeを保てるかは個々の設計能力に依存してくる。そういうわけでRubyでClean Codeってどう実現するんだろうね?というところをSOLID原則を取り出して話をしたつもり。 終わった後に@t_wadaさんからRubyConfで似た話をした人がいるから動画を見た方がいいと言われ、今日twitterで動画を教えてもらった。 SOLID Ruby &#8211; Jim Weirich &#8211; Ruby Conference 2009 資料も豪快にgithubにあがっていて、こっちは@kakutaniさんに教えてもらった。お二人共ありがとうございます。 jimweirich/presentation_solid_ruby &#8211; GitHub まだ資料をざっと見ただけなんだけど、僕より全然良くできてるので皆さんこっちを見るといいです。まだまだ精進が足りない。 Rubyらしい設計って色々とまだ手探りなんだけど、参考になったのはRubyによるデザインパターンとかリファクタリング:Rubyエディションあたりかなぁ。 後はJavaだけど、Clean CodeとかAmazon.co.jp： アジャイルソフトウェア開発の奥義とか。両方とも結構ヘビーな本だけど勉強になる。 大江戸Ruby会議の全体的な感想は他のWeb日記力の高い人におまかせしたいと思うのでそちらをどうぞ。と言うのも、発表が最後の方だったので会議中ずっとそわそわしてたため、文章にまとめられるほどまだ消化できてないのだ。この辺はなかなか難しいところだけど、あの空気感の一旦を担えた(と思いたい)と言うことでよしとする。 最後に。発起人の@a_matsudaさん、実行委員長の@kakutaniさんを始め、スタッフ、発表者、参加者のみなさん、どうもありがとうございました!]]></description>
			<content:encoded><![CDATA[				<div class='wpfblike' style='height: 40px;'><fb:like href='http://ukstudio.jp/2011/04/11/odrk01/' layout='default' show_faces='true' width='400' action='like' colorscheme='light' send='false' /></div><p>昨日は大江戸Ruby会議という名のasakusa.rbの生活発表会があったので、普段の生活で考えてることを発表してきた。ちなみに実はasakusa.rbの参加回数はそんなに多くなかったりする。当日のスライドと動画はこちら。KaigiFreaksは仕事がはやくてすごい。いつもありがとうございます!</p>
				<div style="width:425px" id="__ss_7586768"><strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/ukstudio/ruby-7586768" title="大江戸Ruby会議">大江戸Ruby会議</a></strong><object id="__sse7586768" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=ruby-110411070235-phpapp01&#038;stripped_title=ruby-7586768&#038;userName=ukstudio" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed name="__sse7586768" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=ruby-110411070235-phpapp01&#038;stripped_title=ruby-7586768&#038;userName=ukstudio" 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/ukstudio">Yuki Akamatsu</a>.</div>
				</div>
				<p><a href="http://vimeo.com/channels/oedorubykaigi01">大江戸Ruby会議01 on Vimeo</a></p>
				<p>この発表について何か僕にもの申したい人がいたら@ukstudioかy.akamatsu[at]ukstudio.jpまで頂けるとありがたいです。</p>
				<p>発表内容についてちょこっとだけ書いておこうかな。<a href="http://www.amazon.co.jp/gp/product/487311473X?ie=UTF8&#038;ref_=sr_1_1&#038;qid=1302526992&#038;sr=8-1&#038;linkCode=shr&#038;camp=1207&#038;creative=8411&#038;tag=ukstudio0c-22">パブリックスピーカーの告白</a>で言う「講演家がこう話せばよかったと思うスピーチ」にあたる部分。</p>
				<p>タイトルに戦略ってあるけど、正直そもそもそういったものがあるのかよくわからない。CIとかは環境の話だし、TDDとかリファクタリングとかはスキルだしでそれらが「戦略」かと言われると違う気がする。</p>
				<p>結局のところ、継続的に改善していくしかないと思うんだよなぁ。そうなると後はもう手を動かすか動かさないかの話になる。そんなことを考えたら終始「熱意を持って頑張って」みたいな話になってしまった。これはこれで妙に好評だったけど(母数80ぐらいのうちサンプリング5ぐらい)。ちなみに熱意がなくとも仕事だと割り切って手を動かしてももちろんいいと思います。</p>
				<p>で、手を動かす前提となるとClean Codeを保てるかは個々の設計能力に依存してくる。そういうわけでRubyでClean Codeってどう実現するんだろうね?というところをSOLID原則を取り出して話をしたつもり。</p>
				<p>終わった後に@t_wadaさんからRubyConfで似た話をした人がいるから動画を見た方がいいと言われ、今日twitterで動画を教えてもらった。</p>
				<p><a href="http://confreaks.net/videos/185-rubyconf2009-solid-ruby">SOLID Ruby &#8211; Jim Weirich &#8211; Ruby Conference 2009</a></p>
				<p>資料も豪快にgithubにあがっていて、こっちは@kakutaniさんに教えてもらった。お二人共ありがとうございます。</p>
				<p><a href="https://github.com/jimweirich/presentation_solid_ruby">jimweirich/presentation_solid_ruby &#8211; GitHub</a></p>
				<p>まだ資料をざっと見ただけなんだけど、僕より全然良くできてるので皆さんこっちを見るといいです。まだまだ精進が足りない。</p>
				<p>Rubyらしい設計って色々とまだ手探りなんだけど、参考になったのは<a href="http://www.amazon.co.jp/gp/product/4894712857?ie=UTF8&#038;ref_=sr_1_1&#038;s=books&#038;qid=1302526019&#038;sr=8-1&#038;linkCode=shr&#038;camp=1207&#038;creative=8411&#038;tag=ukstudio0c-22">Rubyによるデザインパターン</a>とか<a href="http://www.amazon.co.jp/gp/product/4048678841?ie=UTF8&#038;ref_=sr_1_2&#038;s=books&#038;qid=1302526019&#038;sr=8-2&#038;linkCode=shr&#038;camp=1207&#038;creative=8411&#038;tag=ukstudio0c-22">リファクタリング:Rubyエディション</a>あたりかなぁ。</p>
				<p>後はJavaだけど、<a href="http://www.amazon.co.jp/gp/product/4048676881?ie=UTF8&#038;ref_=sr_1_1&#038;s=books&#038;qid=1302526151&#038;sr=1-1&#038;linkCode=shr&#038;camp=1207&#038;creative=8411&#038;tag=ukstudio0c-22">Clean Code</a>とか<a href="http://www.amazon.co.jp/gp/product/4797347783?ie=UTF8&#038;ref_=sr_1_2&#038;s=books&#038;qid=1302526151&#038;sr=1-2&#038;linkCode=shr&#038;camp=1207&#038;creative=8411&#038;tag=ukstudio0c-22">Amazon.co.jp： アジャイルソフトウェア開発の奥義</a>とか。両方とも結構ヘビーな本だけど勉強になる。</p>
				<p>大江戸Ruby会議の全体的な感想は他のWeb日記力の高い人におまかせしたいと思うのでそちらをどうぞ。と言うのも、発表が最後の方だったので会議中ずっとそわそわしてたため、文章にまとめられるほどまだ消化できてないのだ。この辺はなかなか難しいところだけど、あの空気感の一旦を担えた(と思いたい)と言うことでよしとする。</p>
				<p>最後に。発起人の@a_matsudaさん、実行委員長の@kakutaniさんを始め、スタッフ、発表者、参加者のみなさん、どうもありがとうございました!</p>
				<div class='wpfblike' style='height: 40px;'><fb:like href='http://ukstudio.jp/2011/04/11/odrk01/' layout='default' show_faces='true' width='400' action='like' colorscheme='light' send='false' /></div>
]]></content:encoded>
			<wfw:commentRss>http://ukstudio.jp/2011/04/11/odrk01/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IRCでミサワをいつも側に&#8230;</title>
		<link>http://ukstudio.jp/2010/12/24/misawa-ruby-recipe/</link>
		<comments>http://ukstudio.jp/2010/12/24/misawa-ruby-recipe/#comments</comments>
		<pubDate>Thu, 23 Dec 2010 18:45:30 +0000</pubDate>
		<dc:creator>ukstudio</dc:creator>
				<category><![CDATA[article]]></category>
		<category><![CDATA[Advent Calendar]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://ukstudio.jp/?p=778</guid>
		<description><![CDATA[このエントリーはRuby逆引きレシピAdvent Calendarの参加エントリです。担当は12月24日です。前日のエントリは@kei-sさんの Ruby逆引きレシピで作る、忙しい人のための『地獄のミサワの「女に惚れさす名言集」』- 札幌市西区です。 さて、私達プログラマが使うソフトウェアの中で最も起動時間の長いものは多分エディタでしょう。では次はなんでしょうか?そう、IRCですね!今回は逆引きレシピの中から「レシピ109 IRC botを作りたい」を紹介します。 レシピのサンプルコードを参考に「ミサワ」のキーワードに反応して地獄っぽい返答をするBOTを作ってみました。これでいつでもミサワ先輩のありがたい御言葉を頂戴することができますね! 上記のコードだとありがたい御言葉がハードコーディングされていますね。ミサワ先輩のありがたい御言葉はたくさんありますから全て書くのはあまり効率的ではありません。なのでRuby逆引きレシピAdvent Calendarの12月17日を担当した@june29さんの地獄のRuby札幌の「女に惚れさす逆引きレシピ集」 &#8211; 準二級.jpを参考に御言葉のかわりに画像へのパーマリンクを取得しておいて返答するという方法もありだと思います。 このエントリを書きはじめたのは火曜日でしたが、前日の@kei-sさんがまさかのミサワネタ。「おいおい天丼なんてレベルじゃねーぞ」状態でも動じない。それが俺の流儀だ。 さて、ミサワ先輩以上に偉大なレシピ先輩ですが、@noplansさんに頂いてから「○○やるにはどうするんだっけ」と思ったらレシピ先輩に聞くようになりました。Rubyのコードを書くときは横に置いておきたい一冊です!ありがとうございます!]]></description>
			<content:encoded><![CDATA[				<div class='wpfblike' style='height: 40px;'><fb:like href='http://ukstudio.jp/2010/12/24/misawa-ruby-recipe/' layout='default' show_faces='true' width='400' action='like' colorscheme='light' send='false' /></div><p>このエントリーは<a href="http://atnd.org/events/10901">Ruby逆引きレシピAdvent Calendar</a>の参加エントリです。担当は12月24日です。前日のエントリは@kei-sさんの <a href="http://d.hatena.ne.jp/kei-s/20101223/1293084650">Ruby逆引きレシピで作る、忙しい人のための『地獄のミサワの「女に惚れさす名言集」』- 札幌市西区</a>です。</p>
				<p><a href="http://ukstudio.jp/wp-content/uploads/2010/12/FxCam_12931282608781.jpg"><img src="http://ukstudio.jp/wp-content/uploads/2010/12/FxCam_12931282608781.jpg" alt="" title="FxCam_1293128260878" width="360" height="240" class="alignnone size-full wp-image-783" /></a></p>
				<p>さて、私達プログラマが使うソフトウェアの中で最も起動時間の長いものは多分エディタでしょう。では次はなんでしょうか?そう、<strong>IRC</strong>ですね!今回は逆引きレシピの中から「レシピ109 IRC botを作りたい」を紹介します。</p>
				<p>レシピのサンプルコードを参考に「ミサワ」のキーワードに反応して地獄っぽい返答をするBOTを作ってみました。これでいつでもミサワ先輩のありがたい御言葉を頂戴することができますね!</p>
				<p><script src="https://gist.github.com/753353.js?file=irc.rb"></script><br />
				<a href="http://ukstudio.jp/wp-content/uploads/2010/12/screenshot3.png"><img src="http://ukstudio.jp/wp-content/uploads/2010/12/screenshot3.png" alt="" title="screenshot3" width="711" height="125" class="alignnone size-full wp-image-781" /></a></p>
				<p>上記のコードだとありがたい御言葉がハードコーディングされていますね。ミサワ先輩のありがたい御言葉はたくさんありますから全て書くのはあまり効率的ではありません。なのでRuby逆引きレシピAdvent Calendarの12月17日を担当した@june29さんの<a href="http://june29.jp/2010/12/17/glamorous-rubysappororecipe/">地獄のRuby札幌の「女に惚れさす逆引きレシピ集」 &#8211; 準二級.jp</a>を参考に御言葉のかわりに画像へのパーマリンクを取得しておいて返答するという方法もありだと思います。</p>
				<p>このエントリを書きはじめたのは火曜日でしたが、前日の@kei-sさんがまさかのミサワネタ。「おいおい天丼なんてレベルじゃねーぞ」状態でも動じない。それが俺の流儀だ。</p>
				<p>さて、ミサワ先輩以上に偉大なレシピ先輩ですが、@noplansさんに頂いてから「○○やるにはどうするんだっけ」と思ったらレシピ先輩に聞くようになりました。Rubyのコードを書くときは横に置いておきたい一冊です!ありがとうございます!</p>
				<div class='wpfblike' style='height: 40px;'><fb:like href='http://ukstudio.jp/2010/12/24/misawa-ruby-recipe/' layout='default' show_faces='true' width='400' action='like' colorscheme='light' send='false' /></div>
]]></content:encoded>
			<wfw:commentRss>http://ukstudio.jp/2010/12/24/misawa-ruby-recipe/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>パスワード変更の機能をどこにもたせるべきか</title>
		<link>http://ukstudio.jp/2010/09/10/password_edit/</link>
		<comments>http://ukstudio.jp/2010/09/10/password_edit/#comments</comments>
		<pubDate>Fri, 10 Sep 2010 09:42:09 +0000</pubDate>
		<dc:creator>ukstudio</dc:creator>
				<category><![CDATA[article]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://ukstudio.jp/?p=688</guid>
		<description><![CDATA[ちょっと色々わからなくなったので、誰かのアドバイスを期待してここに書く。 簡単に前提を書くと、UserモデルのCRUDとは別にUserのパスワードを変更する画面が必要になった。Usersコントローラにpassword_editみたいなactionを書くのもあまりきれいじゃないなと思ってコントローラを分けることにした。 resources :users do resource :password end 確実にUserのレコードは必要になるので上記の用にネストさせることにした。ここで気になるのがpasswordのコントローラ名。通常PasswordsControllerになる。ただ、PasswordsController内の処理は確実にUserに依存する処理が入るため、これはこれであまりしっくりこない。別にPasswordsControllerを他で使う予定があるわけじゃないけど、User::PasswordsControllerの方がいい気がする。 resources :users do resource :password, :only => :edit, :module => 'user' end # app/controllers/user/passwords_controller.rb module User PasswordController < ApplicationController::Base ただ、たかがあるモデルのカラムの為にここまでする必要があるのか?そもそもリソースじゃないよなと思ったりもするわけで。やっぱりUsersコントローラにactionを用意する程度に留めるべきなのだろうか。 追記:10/09/11 やっぱりコントローラを作る(というよりresourcesを追加するのが)がおかしいと思いはじめ、結局気にしてるのはURLなので以下のようにしてみようかなと思う。 resources :user do match 'password/edit' => 'users#password_edit' end]]></description>
			<content:encoded><![CDATA[				<div class='wpfblike' style='height: 40px;'><fb:like href='http://ukstudio.jp/2010/09/10/password_edit/' layout='default' show_faces='true' width='400' action='like' colorscheme='light' send='false' /></div><p>ちょっと色々わからなくなったので、誰かのアドバイスを期待してここに書く。</p>
				<p>簡単に前提を書くと、UserモデルのCRUDとは別にUserのパスワードを変更する画面が必要になった。Usersコントローラにpassword_editみたいなactionを書くのもあまりきれいじゃないなと思ってコントローラを分けることにした。</p>
				<pre><code>resources :users do
  resource :password
end
</code></pre>
				<p>確実にUserのレコードは必要になるので上記の用にネストさせることにした。ここで気になるのがpasswordのコントローラ名。通常PasswordsControllerになる。ただ、PasswordsController内の処理は確実にUserに依存する処理が入るため、これはこれであまりしっくりこない。別にPasswordsControllerを他で使う予定があるわけじゃないけど、User::PasswordsControllerの方がいい気がする。</p>
				<pre><code>resources :users do
  resource :password, :only => :edit, :module => 'user'
end
</code></pre>
				<pre><code># app/controllers/user/passwords_controller.rb
module User
  PasswordController < ApplicationController::Base
</code></pre>
				<p>ただ、たかがあるモデルのカラムの為にここまでする必要があるのか?そもそもリソースじゃないよなと思ったりもするわけで。やっぱりUsersコントローラにactionを用意する程度に留めるべきなのだろうか。</p>
				<h3>追記:10/09/11</h3>
				<p>やっぱりコントローラを作る(というよりresourcesを追加するのが)がおかしいと思いはじめ、結局気にしてるのはURLなので以下のようにしてみようかなと思う。</p>
				<pre><code>resources :user do
  match 'password/edit' => 'users#password_edit'
end
</code></pre>
				<div class='wpfblike' style='height: 40px;'><fb:like href='http://ukstudio.jp/2010/09/10/password_edit/' layout='default' show_faces='true' width='400' action='like' colorscheme='light' send='false' /></div>
]]></content:encoded>
			<wfw:commentRss>http://ukstudio.jp/2010/09/10/password_edit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RSpec2+Rails3+autotest環境の構築</title>
		<link>http://ukstudio.jp/2010/09/03/rspec2_rails3_autotes/</link>
		<comments>http://ukstudio.jp/2010/09/03/rspec2_rails3_autotes/#comments</comments>
		<pubDate>Fri, 03 Sep 2010 05:36:14 +0000</pubDate>
		<dc:creator>ukstudio</dc:creator>
				<category><![CDATA[article]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[RSpec]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://ukstudio.jp/?p=678</guid>
		<description><![CDATA[9月からやる仕事がめでたく、Rails3.0 + Ruby1.9.2のお仕事なので色々と環境構築。とりあえず自動テストまわりやりました。 一応、環境を他と切り分けるために、rvmでアプリ用にgemsetを用意。アプリごとに簡単に環境を構築できるrvmマジ便利。 gem install bundler --pre gem install rails まずは、bundlerとrailsをインストール。次は適当なアプリを作って必要なgemのインストールなどを行う。テストはRSpecで書くので、-TをつけてTest/Unitは使わないようにする。 rails new demo -T 次に必要なgemをGemfileに記述。rspecとかを「テストだけだから」と思って、gropu :testにしたら、モデルを作成したときにTest/Unitのテストコードが作られたりしたので注意。githubのWikiを見るとautotestのgemは不要そうなんだけど、実際ないとうまくautotestが動かなかた。 bundle install あとはモデルを作って、テストが実行できればOK。 rails g rspec:install rails g model user rake autotest 追記 Twitterで@conceal_rsさんから補足ありました。ありがとうございます! .bbpBox22863518878 {background:url(http://s.twimg.com/a/1282682459/images/themes/theme1/bg.png) #000000;padding:20px;} p.bbpTweet{background:#fff;padding:10px 12px 10px 12px;margin:0;min-height:48px;color:#000;font-size:18px !important;line-height:22px;-moz-border-radius:5px;-webkit-border-radius:5px} p.bbpTweet span.metadata{display:block;width:100%;clear:both;margin-top:8px;padding-top:12px;height:40px;border-top:1px solid #fff;border-top:1px solid #e6e6e6} p.bbpTweet span.metadata span.author{line-height:19px} p.bbpTweet span.metadata span.author img{float:left;margin:0 7px 0 [...]]]></description>
			<content:encoded><![CDATA[				<div class='wpfblike' style='height: 40px;'><fb:like href='http://ukstudio.jp/2010/09/03/rspec2_rails3_autotes/' layout='default' show_faces='true' width='400' action='like' colorscheme='light' send='false' /></div><p>9月からやる仕事がめでたく、Rails3.0 + Ruby1.9.2のお仕事なので色々と環境構築。とりあえず自動テストまわりやりました。</p>
				<p>一応、環境を他と切り分けるために、rvmでアプリ用にgemsetを用意。アプリごとに簡単に環境を構築できるrvmマジ便利。</p>
				<pre>
gem install bundler --pre
gem install rails
</pre>
				<p>まずは、bundlerとrailsをインストール。次は適当なアプリを作って必要なgemのインストールなどを行う。テストはRSpecで書くので、-TをつけてTest/Unitは使わないようにする。</p>
				<pre>
rails new demo -T
</pre>
				<p>次に必要なgemをGemfileに記述。rspecとかを「テストだけだから」と思って、gropu :testにしたら、モデルを作成したときにTest/Unitのテストコードが作られたりしたので注意。githubの<a href='http://ja.wiki.github.com/rspec/rspec/autotest/'>Wiki</a>を見るとautotestのgemは不要そうなんだけど、実際ないとうまくautotestが動かなかた。</p>
				<p><script src="http://gist.github.com/563447.js?file=Gemfile"></script></p>
				<pre>
bundle install
</pre>
				<p>あとはモデルを作って、テストが実行できればOK。</p>
				<pre>
rails g rspec:install
rails g model user
rake
autotest
</pre>
				<h3>追記</h3>
				<p>Twitterで@conceal_rsさんから補足ありました。ありがとうございます!<br />
				<!-- http://twitter.com/conceal_rs/status/22863518878 --><br />
				<style type='text/css'>.bbpBox22863518878 {background:url(http://s.twimg.com/a/1282682459/images/themes/theme1/bg.png) #000000;padding:20px;} p.bbpTweet{background:#fff;padding:10px 12px 10px 12px;margin:0;min-height:48px;color:#000;font-size:18px !important;line-height:22px;-moz-border-radius:5px;-webkit-border-radius:5px} p.bbpTweet span.metadata{display:block;width:100%;clear:both;margin-top:8px;padding-top:12px;height:40px;border-top:1px solid #fff;border-top:1px solid #e6e6e6} p.bbpTweet span.metadata span.author{line-height:19px} p.bbpTweet span.metadata span.author img{float:left;margin:0 7px 0 0px;width:38px;height:38px} p.bbpTweet a:hover{text-decoration:underline}p.bbpTweet span.timestamp{font-size:12px;display:block}</style>
				<div class='bbpBox22863518878'>
				<p class='bbpTweet'>@<a class="tweet-url username" href="http://twitter.com/ukstudio" rel="nofollow">ukstudio</a> ZenTestとautotest-railsはなくても大丈夫ですよ。あとrspecは2.0.0.beta.20からwebratに依存しなくなったのでhave_selectorとか使えなくなってます。gem &#8216;webrat&#8217;もあった方がいいかも<span class='timestamp'><a title='Fri Sep 03 05:41:18 +0000 2010' href='http://twitter.com/conceal_rs/status/22863518878'>less than a minute ago</a> via <a href="http://termtter.org/" rel="nofollow">Termtter</a></span><span class='metadata'><span class='author'><a href='http://twitter.com/conceal_rs'><img src='http://a1.twimg.com/profile_images/327755757/twitterProfilePhoto_normal.jpg' /></a><strong><a href='http://twitter.com/conceal_rs'>Shin-ichiro OGAWA</a></strong><br/>conceal_rs</span></span></p>
				</div>
				<p> <!-- end of tweet --></p>
				<div class='wpfblike' style='height: 40px;'><fb:like href='http://ukstudio.jp/2010/09/03/rspec2_rails3_autotes/' layout='default' show_faces='true' width='400' action='like' colorscheme='light' send='false' /></div>
]]></content:encoded>
			<wfw:commentRss>http://ukstudio.jp/2010/09/03/rspec2_rails3_autotes/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>warden+railsでパスワード認証</title>
		<link>http://ukstudio.jp/2010/06/07/rails_warden/</link>
		<comments>http://ukstudio.jp/2010/06/07/rails_warden/#comments</comments>
		<pubDate>Mon, 07 Jun 2010 11:48:28 +0000</pubDate>
		<dc:creator>ukstudio</dc:creator>
				<category><![CDATA[article]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[warden]]></category>

		<guid isPermaLink="false">http://ukstudio.jp/?p=648</guid>
		<description><![CDATA[今作っているサービスが後々、OAuth、OpenIDあたりにも対応することになるかもしれないので、そのあたり柔軟に対応できそうなwardenを試してみました。 必要なgemはwardenとrails_wardenの2つ。 Userモデルは以下のような感じで。 次にgithubのページを参考にconfig/initializers/warden.rbを追加します。今回はパスワードで認証をしたいのでpasswordのstrategyを自分で追加します。(と言ってもほとんどサンプルと同じ) この後はUser.authenticateの中身をfind_by_login_and_passwordとかで実装してもいいのですが、それだとパスワードが平文になってしまうのでrestful_authenticationのコードを少し拝借することにします。 includeいているものがrestful_authenticationのコードです。適当にコピーしてlibにでも置いておくといいと思います。 これでpasswordとpassword_confirmationによるパスワードの確認、User#save時にパスワードをハッシュ化して保存してくれます。 後、一応ログイン処理するコントローラも載せておきます。 unauthenticatedが認証に失敗したときに遷移するアクションです。 正直、パスワード認証のことだけ考えるとちょっと面倒な気もします。パスワードの暗号化も自分で書かなければいけないし。ただ、上記のようにmoduleを別途用意しておけば作業の手間自体は結構軽減されので、そこまでは問題にならないかもしれません。 Strategyまわりについてはほとんど検証していませんが、色々と融通は効きそうな気もします。この辺は追々。 後はdeviseというwardenベースのライブラリもあるのでこれを試すのもありかなという気はします。ただ、deviseは色々とやり過ぎというか、多機能すぎてよくわからない感じもしますが・・・]]></description>
			<content:encoded><![CDATA[				<div class='wpfblike' style='height: 40px;'><fb:like href='http://ukstudio.jp/2010/06/07/rails_warden/' layout='default' show_faces='true' width='400' action='like' colorscheme='light' send='false' /></div><p>今作っているサービスが後々、OAuth、OpenIDあたりにも対応することになるかもしれないので、そのあたり柔軟に対応できそうなwardenを試してみました。</p>
				<p>必要なgemは<a href="http://github.com/hassox/warden">warden</a>と<a href="http://github.com/hassox/rails_warden">rails_warden</a>の2つ。</p>
				<p>Userモデルは以下のような感じで。<br />
				<script src="http://gist.github.com/428559.js?file=20100602075944_create_users.rb"></script></p>
				<p>次に<a href="http://github.com/hassox/rails_warden">githubのページ</a>を参考にconfig/initializers/warden.rbを追加します。今回はパスワードで認証をしたいのでpasswordのstrategyを自分で追加します。(と言ってもほとんどサンプルと同じ)</p>
				<p><script src="http://gist.github.com/428563.js?file=warden.rb"></script></p>
				<p>この後はUser.authenticateの中身をfind_by_login_and_passwordとかで実装してもいいのですが、それだとパスワードが平文になってしまうのでrestful_authenticationのコードを少し拝借することにします。</p>
				<p><script src="http://gist.github.com/428567.js?file=user.rb"></script><br />
				includeいているものがrestful_authenticationのコードです。適当にコピーしてlibにでも置いておくといいと思います。</p>
				<p>これでpasswordとpassword_confirmationによるパスワードの確認、User#save時にパスワードをハッシュ化して保存してくれます。</p>
				<p>後、一応ログイン処理するコントローラも載せておきます。<br />
				<script src="http://gist.github.com/428569.js?file=sessions_controller.rb"></script><br />
				unauthenticatedが認証に失敗したときに遷移するアクションです。</p>
				<p>正直、パスワード認証のことだけ考えるとちょっと面倒な気もします。パスワードの暗号化も自分で書かなければいけないし。ただ、上記のようにmoduleを別途用意しておけば作業の手間自体は結構軽減されので、そこまでは問題にならないかもしれません。</p>
				<p>Strategyまわりについてはほとんど検証していませんが、色々と融通は効きそうな気もします。この辺は追々。</p>
				<p>後は<a href="http://github.com/plataformatec/devise">devise</a>というwardenベースのライブラリもあるのでこれを試すのもありかなという気はします。ただ、deviseは色々とやり過ぎというか、多機能すぎてよくわからない感じもしますが・・・</p>
				<div class='wpfblike' style='height: 40px;'><fb:like href='http://ukstudio.jp/2010/06/07/rails_warden/' layout='default' show_faces='true' width='400' action='like' colorscheme='light' send='false' /></div>
]]></content:encoded>
			<wfw:commentRss>http://ukstudio.jp/2010/06/07/rails_warden/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>CentOS 5.4(EC2)にApache+PassengerでRails環境作る</title>
		<link>http://ukstudio.jp/2010/03/29/apache_passenger_rails_for_centos/</link>
		<comments>http://ukstudio.jp/2010/03/29/apache_passenger_rails_for_centos/#comments</comments>
		<pubDate>Mon, 29 Mar 2010 08:29:40 +0000</pubDate>
		<dc:creator>ukstudio</dc:creator>
				<category><![CDATA[article]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[CentOS]]></category>
		<category><![CDATA[EC2]]></category>
		<category><![CDATA[Passenger]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://ukstudio.jp/?p=605</guid>
		<description><![CDATA[後々、また参照する気がするので記録しておく。この手の環境構築系のドキュメントってWikiかなんかにみんなで情報集めたらそこそこ便利そうな気がするのだけどどうだろう。 Ruby、RubyGemsのインストール yumでRubyをインストールしようとすると、1.8.5が入ってしまうので仕方なくソースからインストール。 $ cd /usr/local/src $ sudo wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p249.tar.gz $ sudo tar zxvf ruby-1.8.7-p249.tar.gz $ cd ruby-1.8.7-p249 $ sudo ./configure $ sudo make $ sudo make install $ cd /usr/local/src $ sudo wget http://rubyforge.org/frs/download.php/69365/rubygems-1.3.6.tgz $ sudo tar zxvf rubygems-1.3.6 $ cd rubygems-1.3.6 $ sudo ruby setup.rb この時点で一応RubyGemsもインストール出来てはいるけれど、実際に使おうとするとエラーが発生する。どうやらzlibが入っていなかった模様。 $ sudo yum install zlib-devel $ cd [...]]]></description>
			<content:encoded><![CDATA[				<div class='wpfblike' style='height: 40px;'><fb:like href='http://ukstudio.jp/2010/03/29/apache_passenger_rails_for_centos/' layout='default' show_faces='true' width='400' action='like' colorscheme='light' send='false' /></div><p>後々、また参照する気がするので記録しておく。この手の環境構築系のドキュメントってWikiかなんかにみんなで情報集めたらそこそこ便利そうな気がするのだけどどうだろう。</p>
				<h2>Ruby、RubyGemsのインストール</h2>
				<p>yumでRubyをインストールしようとすると、1.8.5が入ってしまうので仕方なくソースからインストール。</p>
				<p><code>
				<pre>
$ cd /usr/local/src
$ sudo wget ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.7-p249.tar.gz
$ sudo tar zxvf ruby-1.8.7-p249.tar.gz
$ cd ruby-1.8.7-p249
$ sudo ./configure
$ sudo make
$ sudo make install
</pre>
				<p></code></p>
				<p><code>
				<pre>
$ cd /usr/local/src
$ sudo wget http://rubyforge.org/frs/download.php/69365/rubygems-1.3.6.tgz
$ sudo tar zxvf rubygems-1.3.6
$ cd rubygems-1.3.6
$ sudo ruby setup.rb
</pre>
				<p></code></p>
				<p>この時点で一応RubyGemsもインストール出来てはいるけれど、実際に使おうとするとエラーが発生する。どうやらzlibが入っていなかった模様。</p>
				<p><code>
				<pre>
$ sudo yum install zlib-devel
$ cd /usr/local/src/ruby-1.8.7-p249/ext/zlib
$ sudo extconf.rb --with-zlib-include=/usr/include --with-zlib-lib=/usr/lib
$ sudo make
$ sudo make install
</pre>
				<p></code></p>
				<h2>MySQLのインストール</h2>
				<p>こっちはyumからサクッとインストール。</p>
				<p><code>
				<pre>
$ sudo yum install mysql mysql-server mysql-devel
$ sudo /etc/initd.mysqld start
</pre>
				<p></code></p>
				<p>my.cnfの設定は/usr/share/mysql/以下からコピーしてきたりとか適当に。ユーザの設定とかも適当に。</p>
				<h2>Apache+Passenger</h2>
				<p>まずはApacheをサクッとインストール。</p>
				<p><code>
				<pre>
$ sudo yum install httpd-devel
</pre>
				<p></code></p>
				<p>そしてPassengerのインストール。</p>
				<p><code>
				<pre>
$ sudo gem install passenger
$ sudo passenger-install-apache2-module
</pre>
				<p></code></p>
				<p>ここでまたしてもエラー。どうやらOpenSSLが入っていないとかなんとか。<br />
				<code>
				<pre>
$ sudo yum install openssl-devel
$ cd /usr/local/src/ruby-1.8.7-p249/ext/openssl
$ sudo ruby extconf.rb
$ sudo make
$ sudo make install
</pre>
				<p></code></p>
				<p>これで無事Passengerがインストール出来る。</p>
				<p><code>
				<pre>
$ sudo passenger-install-apache2-module
</pre>
				<p></code></p>
				<p>最低限のPassengerの設定。この設定の内容はpassenger-install-apache2-moduleを実行した時に表示されているので確認しておくこと。</p>
				<p><code>
				<pre>
$ sudo vi /etc/httpd/conf.d/passenger.conf
LoadModule passenger_module /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.11/ext/apache2/mod_passenger.so
PassengerRoot /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.11
PassengerRuby /usr/local/bin/ruby
</pre>
				<p></code></p>
				<p>あとはhttpd.confのDocumentRootをRailsのpublicディレクトリにすればOK。<br />
				<code>
				<pre>
$ sudo vi /etc/httpd/conf/httpd.conf
DocumentRoot /path/to/rails/public
</pre>
				<p></code></p>
				<p>本当に最低限だけどとりあえずこれでPassengerでRailsを動かすことが出来るはず。ApacheやMySQLの自動起動はchkconfigを設定すればよい。Passengerの細かい設定は<a href='http://www.modrails.com/documentation/Users%20guide.html'>Passenger users guid</a>を参考に。</p>
				<div class='wpfblike' style='height: 40px;'><fb:like href='http://ukstudio.jp/2010/03/29/apache_passenger_rails_for_centos/' layout='default' show_faces='true' width='400' action='like' colorscheme='light' send='false' /></div>
]]></content:encoded>
			<wfw:commentRss>http://ukstudio.jp/2010/03/29/apache_passenger_rails_for_centos/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Gentoo+Passenger+rvm</title>
		<link>http://ukstudio.jp/2010/02/09/gentoo_passenger_rvm/</link>
		<comments>http://ukstudio.jp/2010/02/09/gentoo_passenger_rvm/#comments</comments>
		<pubDate>Tue, 09 Feb 2010 12:51:47 +0000</pubDate>
		<dc:creator>ukstudio</dc:creator>
				<category><![CDATA[article]]></category>
		<category><![CDATA[Gentoo]]></category>
		<category><![CDATA[Passenger]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[rvm]]></category>

		<guid isPermaLink="false">http://ukstudio.jp/?p=548</guid>
		<description><![CDATA[rvmのインストール rvmのインストールはgithubからやった。(rvm: Ruby Version Manager &#8211; Ways to install rvm.) 使うバージョンは、1.8.7。 rvm install 1.8.7 rvm 1.8.7 --default Passengerのインストール Gentooだと、Passengerはmaskされてるっぽいので/etc/portage/package.keywordsにwww-apache/passenger追加して、emerge passengerする。 Apacheの設定 /etc/conf.d/apacheに&#8221;-D PASSENGER&#8221;追加。 /etc/apache/vhosts.d/にvirtualhost追加。 &#60;VirtualHost *:80&#62; ServerName hoge.example.jp DocumentRoot /path/rails/public RailsBaseURI / &#60;Directory /path/rails/public&#62; Options FollowSymLinks AllowOverride None Order allow,deny Allow from all &#60;/Directory&#62; &#60;/VirtualHost&#62; /etc/apache2/modules.d/30_mod_passenger.confを修正。 PassengerRuby /home/ukstudio/.rvm/bin/ruby-1.8.7-p249 PassengerRoot /home/ukstudio/.rvm/gems/ruby-1.8.7-p249/gems/passenger-2.2.9/ あとはapacheを再起動すればOK。 なんか、rvmに&#8211;passengerオプションがあるのでそれを使うよう設定すれば、気軽にPassengerで使うrubyを返られる気がしなくもない。そこらへんはそのうちやる。]]></description>
			<content:encoded><![CDATA[				<div class='wpfblike' style='height: 40px;'><fb:like href='http://ukstudio.jp/2010/02/09/gentoo_passenger_rvm/' layout='default' show_faces='true' width='400' action='like' colorscheme='light' send='false' /></div><h2>rvmのインストール</h2>
				<p>rvmのインストールはgithubからやった。(<a href='http://rvm.beginrescueend.com/install/'>rvm: Ruby Version Manager &#8211; Ways to install rvm.</a>)</p>
				<p>使うバージョンは、1.8.7。</p>
				<p><code>
				<pre>rvm install 1.8.7
rvm 1.8.7 --default</pre>
				<p></code></p>
				<h2>Passengerのインストール</h2>
				<p>Gentooだと、Passengerはmaskされてるっぽいので/etc/portage/package.keywordsにwww-apache/passenger追加して、emerge passengerする。</p>
				<h2>Apacheの設定</h2>
				<p>/etc/conf.d/apacheに&#8221;-D PASSENGER&#8221;追加。</p>
				<p>/etc/apache/vhosts.d/にvirtualhost追加。</p>
				<pre><code>&lt;VirtualHost *:80&gt;
  ServerName hoge.example.jp
  DocumentRoot /path/rails/public
  RailsBaseURI /
  &lt;Directory /path/rails/public&gt;
    Options FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
  &lt;/Directory&gt;
&lt;/VirtualHost&gt;</code></pre>
				<p>/etc/apache2/modules.d/30_mod_passenger.confを修正。</p>
				<p><code>
				<pre>
PassengerRuby /home/ukstudio/.rvm/bin/ruby-1.8.7-p249
PassengerRoot /home/ukstudio/.rvm/gems/ruby-1.8.7-p249/gems/passenger-2.2.9/</pre>
				<p></code></p>
				<p>あとはapacheを再起動すればOK。</p>
				<p>なんか、rvmに&#8211;passengerオプションがあるのでそれを使うよう設定すれば、気軽にPassengerで使うrubyを返られる気がしなくもない。そこらへんはそのうちやる。</p>
				<div class='wpfblike' style='height: 40px;'><fb:like href='http://ukstudio.jp/2010/02/09/gentoo_passenger_rvm/' layout='default' show_faces='true' width='400' action='like' colorscheme='light' send='false' /></div>
]]></content:encoded>
			<wfw:commentRss>http://ukstudio.jp/2010/02/09/gentoo_passenger_rvm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Data APIの認証をClientLogin + Rubyで</title>
		<link>http://ukstudio.jp/2010/02/04/googe_data_api-clientlogin-ruby/</link>
		<comments>http://ukstudio.jp/2010/02/04/googe_data_api-clientlogin-ruby/#comments</comments>
		<pubDate>Wed, 03 Feb 2010 21:26:22 +0000</pubDate>
		<dc:creator>ukstudio</dc:creator>
				<category><![CDATA[article]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://ukstudio.jp/?p=530</guid>
		<description><![CDATA[とりあえずGoogle Mapで。他のサービスもservice変数を書き換えれば認証までは通るはず。クエリのPasswdをPasswordにしてて結構はまった。Unix文化め。 参考: Google Data API &#8211; Google Code]]></description>
			<content:encoded><![CDATA[				<div class='wpfblike' style='height: 40px;'><fb:like href='http://ukstudio.jp/2010/02/04/googe_data_api-clientlogin-ruby/' layout='default' show_faces='true' width='400' action='like' colorscheme='light' send='false' /></div><p><script src="http://gist.github.com/294044.js?file=google_client_login.rb"></script></p>
				<p>とりあえずGoogle Mapで。他のサービスもservice変数を書き換えれば認証までは通るはず。クエリのPasswdをPasswordにしてて結構はまった。Unix文化め。</p>
				<p>参考: <a href="http://code.google.com/intl/ja/apis/gdata/">Google Data API &#8211; Google Code</a></p>
				<div class='wpfblike' style='height: 40px;'><fb:like href='http://ukstudio.jp/2010/02/04/googe_data_api-clientlogin-ruby/' layout='default' show_faces='true' width='400' action='like' colorscheme='light' send='false' /></div>
]]></content:encoded>
			<wfw:commentRss>http://ukstudio.jp/2010/02/04/googe_data_api-clientlogin-ruby/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

