<?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; Rails</title>
	<atom:link href="http://ukstudio.jp/tag/rails/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>rails3でprimary keyとforeign keyをbig intにする</title>
		<link>http://ukstudio.jp/2012/01/11/rails3_primary_key_foreign_key_big_int/</link>
		<comments>http://ukstudio.jp/2012/01/11/rails3_primary_key_foreign_key_big_int/#comments</comments>
		<pubDate>Wed, 11 Jan 2012 05:53:43 +0000</pubDate>
		<dc:creator>ukstudio</dc:creator>
				<category><![CDATA[article]]></category>
		<category><![CDATA[Rails]]></category>

		<guid isPermaLink="false">http://ukstudio.jp/?p=912</guid>
		<description><![CDATA[以下は、PostgreSQLの例。 ActiveRecord::ConnectionAdapters::PostgreSQLAdapter::NATIVE_DATABASE_TYPES[:primary_key] = 'bigserial primary key' 外部キーの場合、t.references :userとか書いてると、ActiveRecord側でintegerがハードコーディングされているのでlimitオプションを付けるしかなさそう。 t.references :user, :limit => 8]]></description>
			<content:encoded><![CDATA[				<div class='wpfblike' style='height: 40px;'><fb:like href='http://ukstudio.jp/2012/01/11/rails3_primary_key_foreign_key_big_int/' layout='default' show_faces='true' width='400' action='like' colorscheme='light' send='false' /></div><p>以下は、PostgreSQLの例。<br />
				<code>
				<pre>ActiveRecord::ConnectionAdapters::PostgreSQLAdapter::NATIVE_DATABASE_TYPES[:primary_key] = 'bigserial primary key' </pre>
<p></code><br />
外部キーの場合、<code>t.references :user</code>とか書いてると、ActiveRecord側でintegerがハードコーディングされているのでlimitオプションを付けるしかなさそう。<br />
<code>
<pre>t.references :user, :limit => 8</pre>
				<p></code></p>
				<div class='wpfblike' style='height: 40px;'><fb:like href='http://ukstudio.jp/2012/01/11/rails3_primary_key_foreign_key_big_int/' layout='default' show_faces='true' width='400' action='like' colorscheme='light' send='false' /></div>
]]></content:encoded>
			<wfw:commentRss>http://ukstudio.jp/2012/01/11/rails3_primary_key_foreign_key_big_int/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RailsDevCon2010で話してきました</title>
		<link>http://ukstudio.jp/2010/11/22/railsdevcon2010/</link>
		<comments>http://ukstudio.jp/2010/11/22/railsdevcon2010/#comments</comments>
		<pubDate>Sun, 21 Nov 2010 15:56:21 +0000</pubDate>
		<dc:creator>ukstudio</dc:creator>
				<category><![CDATA[article]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[RailsDevCon]]></category>

		<guid isPermaLink="false">http://ukstudio.jp/?p=743</guid>
		<description><![CDATA[RailsDevCon2010、お疲れ様でした。主催かつ発表のお声をくれた@ysakakiさん、スタッフの方々、スピーカー、発表を聞いてくれたみなさま、どうもありがとうございました。 今回、「Railsプロジェクトを成功させるために現場ができること」というタイトルで話したけどびっくりするぐらいRailsに関係のない話。オマケ程度にちょこっと。以下、資料です。 Railsプロジェクトを成功させるために現場ができること -Railsdevcon2010 View more presentations from Yuki Akamatsu. テーマとしては、@ysakakiさんから声をかけて頂いた時に、[Railsの現場でまだまだバージョン管理すらしてないところあるよね。そういう基本的なところを改めて赤松さんの方から話して欲しい」と言うことだったので、個人的に基本的な所と言うと「TDD」と「バージョン管理」(できれば継続インテグレーションもいれたい)だったので、その変も踏まえて技術的負債というトピックを扱った。 具体的な話をしても、スクリーン上じゃコード読みづらいし、わかりにくいかなと思ったので少しぼかした形で発表したわけだけど、全体的にふわふわと掴みどころのない話になってしまったかもしれない。次どこかで発表する時、もしくはブログにでももっと具体的なコードレベルのことを書きたいな。 懇親会は二次会まで参加した。久しぶりに同世代の人と話せたのは楽しかった。ぜひぜひこれからも頑張ってほしい。]]></description>
			<content:encoded><![CDATA[				<div class='wpfblike' style='height: 40px;'><fb:like href='http://ukstudio.jp/2010/11/22/railsdevcon2010/' layout='default' show_faces='true' width='400' action='like' colorscheme='light' send='false' /></div><p>RailsDevCon2010、お疲れ様でした。主催かつ発表のお声をくれた@ysakakiさん、スタッフの方々、スピーカー、発表を聞いてくれたみなさま、どうもありがとうございました。</p>
				<p>今回、「Railsプロジェクトを成功させるために現場ができること」というタイトルで話したけどびっくりするぐらいRailsに関係のない話。オマケ程度にちょこっと。以下、資料です。</p>
				<div style="width:425px" id="__ss_5842321"><strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/ukstudio/rails-railsdevcon2010-5842321" title="Railsプロジェクトを成功させるために現場ができること -Railsdevcon2010">Railsプロジェクトを成功させるために現場ができること -Railsdevcon2010</a></strong><object id="__sse5842321" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=railsdevcon2010-101120020217-phpapp01&#038;stripped_title=rails-railsdevcon2010-5842321&#038;userName=ukstudio" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed name="__sse5842321" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=railsdevcon2010-101120020217-phpapp01&#038;stripped_title=rails-railsdevcon2010-5842321&#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>テーマとしては、@ysakakiさんから声をかけて頂いた時に、[Railsの現場でまだまだバージョン管理すらしてないところあるよね。そういう基本的なところを改めて赤松さんの方から話して欲しい」と言うことだったので、個人的に基本的な所と言うと「TDD」と「バージョン管理」(できれば継続インテグレーションもいれたい)だったので、その変も踏まえて技術的負債というトピックを扱った。</p>
				<p>具体的な話をしても、スクリーン上じゃコード読みづらいし、わかりにくいかなと思ったので少しぼかした形で発表したわけだけど、全体的にふわふわと掴みどころのない話になってしまったかもしれない。次どこかで発表する時、もしくはブログにでももっと具体的なコードレベルのことを書きたいな。</p>
				<p>懇親会は二次会まで参加した。久しぶりに同世代の人と話せたのは楽しかった。ぜひぜひこれからも頑張ってほしい。</p>
				<div class='wpfblike' style='height: 40px;'><fb:like href='http://ukstudio.jp/2010/11/22/railsdevcon2010/' layout='default' show_faces='true' width='400' action='like' colorscheme='light' send='false' /></div>
]]></content:encoded>
			<wfw:commentRss>http://ukstudio.jp/2010/11/22/railsdevcon2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>scopeでお手軽検索</title>
		<link>http://ukstudio.jp/2010/10/19/search_with_scope/</link>
		<comments>http://ukstudio.jp/2010/10/19/search_with_scope/#comments</comments>
		<pubDate>Mon, 18 Oct 2010 18:45:19 +0000</pubDate>
		<dc:creator>ukstudio</dc:creator>
				<category><![CDATA[article]]></category>
		<category><![CDATA[Rails]]></category>

		<guid isPermaLink="false">http://ukstudio.jp/?p=725</guid>
		<description><![CDATA[Rails3.0のscope(2系で言うnamed_scope)を使ったお手軽検索。モデルにextendして使う。やってることは渡されたパラメータのkeyのscopeを呼び出して、それらを全部チェインさせるだけ。お手軽だけど、scopeを定義するだけなので結構融通が効くし便利。]]></description>
			<content:encoded><![CDATA[				<div class='wpfblike' style='height: 40px;'><fb:like href='http://ukstudio.jp/2010/10/19/search_with_scope/' layout='default' show_faces='true' width='400' action='like' colorscheme='light' send='false' /></div><p>Rails3.0のscope(2系で言うnamed_scope)を使ったお手軽検索。モデルにextendして使う。やってることは渡されたパラメータのkeyのscopeを呼び出して、それらを全部チェインさせるだけ。お手軽だけど、scopeを定義するだけなので結構融通が効くし便利。<br />
				<script src="http://gist.github.com/632769.js?file=searchable.rb"></script></p>
				<div class='wpfblike' style='height: 40px;'><fb:like href='http://ukstudio.jp/2010/10/19/search_with_scope/' layout='default' show_faces='true' width='400' action='like' colorscheme='light' send='false' /></div>
]]></content:encoded>
			<wfw:commentRss>http://ukstudio.jp/2010/10/19/search_with_scope/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>steakのspec/acceptanceをrake statsに反映させる</title>
		<link>http://ukstudio.jp/2010/10/07/steak_stats/</link>
		<comments>http://ukstudio.jp/2010/10/07/steak_stats/#comments</comments>
		<pubDate>Wed, 06 Oct 2010 16:47:24 +0000</pubDate>
		<dc:creator>ukstudio</dc:creator>
				<category><![CDATA[article]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Steak]]></category>
		<category><![CDATA[Testing]]></category>

		<guid isPermaLink="false">http://ukstudio.jp/?p=718</guid>
		<description><![CDATA[どうやらsteakで対応してるみたいです(コメント欄参照)。steakのgroupに:developmentを追加すればrake statsの結果にAcceptance specsと表示されます。 結論から言うとrakeファイルを追加して以下のように書けばOK。(Rails.root/lib/tasks/statistics.rakeとかね) task名がstatsetupなのはrspec-rails/lib/rspec/tasks/rspec.rakeでそうなっている為。cucumberでも同じ要領で大丈夫なはず。rake statsを実行するとちゃんと計算されている。]]></description>
			<content:encoded><![CDATA[				<div class='wpfblike' style='height: 40px;'><fb:like href='http://ukstudio.jp/2010/10/07/steak_stats/' layout='default' show_faces='true' width='400' action='like' colorscheme='light' send='false' /></div><p><strong>どうやらsteakで対応してるみたいです(コメント欄参照)。steakのgroupに:developmentを追加すればrake statsの結果にAcceptance specsと表示されます。</strong></p>
				<p>結論から言うとrakeファイルを追加して以下のように書けばOK。(Rails.root/lib/tasks/statistics.rakeとかね)<br />
				<script src="http://gist.github.com/613641.js?file=statistics.rake"></script><br />
				task名がstatsetupなのはrspec-rails/lib/rspec/tasks/rspec.rakeでそうなっている為。cucumberでも同じ要領で大丈夫なはず。rake statsを実行するとちゃんと計算されている。<br />
				<a href="http://ukstudio.jp/wp-content/uploads/2010/10/steak_stats.jpg"><img src="http://ukstudio.jp/wp-content/uploads/2010/10/steak_stats.jpg" alt="" title="steak_stats" width="531" height="240" class="alignnone size-full wp-image-719" /></a></p>
				<div class='wpfblike' style='height: 40px;'><fb:like href='http://ukstudio.jp/2010/10/07/steak_stats/' layout='default' show_faces='true' width='400' action='like' colorscheme='light' send='false' /></div>
]]></content:encoded>
			<wfw:commentRss>http://ukstudio.jp/2010/10/07/steak_stats/feed/</wfw:commentRss>
		<slash:comments>2</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>RailsからOAuthを利用してTwitterにポストする</title>
		<link>http://ukstudio.jp/2009/07/14/rails_oauth_twitter/</link>
		<comments>http://ukstudio.jp/2009/07/14/rails_oauth_twitter/#comments</comments>
		<pubDate>Tue, 14 Jul 2009 03:38:25 +0000</pubDate>
		<dc:creator>ukstudio</dc:creator>
				<category><![CDATA[article]]></category>
		<category><![CDATA[OAuth]]></category>
		<category><![CDATA[Rails]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://ukstudio.jp/?p=383</guid>
		<description><![CDATA[OAuthの細かい説明は抜き。 まず、OAuthを使うためにはTwitterでアプリケーションの登録が必要なので、http://twitter.com/oauth_clientsで登録をしておいてください。 以下のコードの6行目の部分を取得したConsumer keyとConsumer secretをに置き換えてください。 適当なところからverifyアクションにリダイレクトしてくると、さらにTwitterにリダイレクトします。その後、callbackアクションに戻ってくるので、そこで認証して取得したトークンをUserモデルに保存します。(ここでは自分のサービスにログインしているユーザが認証を行っています。) その後、保存したトークンを使ってTwitterに発言をします。リクエストが受け入れられなかった場合の処理などは省いてます。 Twitterには取得したトークンに有効期限はありませんが、有効期限が存在するものもある(どちらかというとそっちの方が多いのかも)気をつける必要があります。 ちなみに細かいことを調べていないので「トークンをDBに保存してしまっていいのか」とか「トークンが外部に漏れてしまった場合はどうしたらいいのか」などについてはよくわかっていません。]]></description>
			<content:encoded><![CDATA[				<div class='wpfblike' style='height: 40px;'><fb:like href='http://ukstudio.jp/2009/07/14/rails_oauth_twitter/' layout='default' show_faces='true' width='400' action='like' colorscheme='light' send='false' /></div><p>OAuthの細かい説明は抜き。</p>
				<p>まず、OAuthを使うためにはTwitterでアプリケーションの登録が必要なので、<a href="http://twitter.com/oauth_clients">http://twitter.com/oauth_clients</a>で登録をしておいてください。 以下のコードの6行目の部分を取得したConsumer keyとConsumer secretをに置き換えてください。</p>
				<p><script src="http://gist.github.com/146684.js"></script></p>
				<p>適当なところからverifyアクションにリダイレクトしてくると、さらにTwitterにリダイレクトします。その後、callbackアクションに戻ってくるので、そこで認証して取得したトークンをUserモデルに保存します。(ここでは自分のサービスにログインしているユーザが認証を行っています。)</p>
				<p>その後、保存したトークンを使ってTwitterに発言をします。リクエストが受け入れられなかった場合の処理などは省いてます。</p>
				<p><script src="http://gist.github.com/146685.js"></script></p>
				<p>Twitterには取得したトークンに有効期限はありませんが、有効期限が存在するものもある(どちらかというとそっちの方が多いのかも)気をつける必要があります。</p>
				<p>ちなみに細かいことを調べていないので「トークンをDBに保存してしまっていいのか」とか「トークンが外部に漏れてしまった場合はどうしたらいいのか」などについてはよくわかっていません。</p>
				<div class='wpfblike' style='height: 40px;'><fb:like href='http://ukstudio.jp/2009/07/14/rails_oauth_twitter/' layout='default' show_faces='true' width='400' action='like' colorscheme='light' send='false' /></div>
]]></content:encoded>
			<wfw:commentRss>http://ukstudio.jp/2009/07/14/rails_oauth_twitter/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>WEB+DB PRESS Vol.51でRailsの特集を執筆しました</title>
		<link>http://ukstudio.jp/2009/06/19/webdb_51/</link>
		<comments>http://ukstudio.jp/2009/06/19/webdb_51/#comments</comments>
		<pubDate>Fri, 19 Jun 2009 06:31:14 +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=364</guid>
		<description><![CDATA[WEB+DB PRESS Vol.51 WEB+DB PRESS編集部 技術評論社 2009-06-24売り上げランキング : 130 Amazonで詳しく見る by G-Tools 僕個人っていうわけではないですが、会社の人達と一緒に6月24日発売のWEB+DB PRESS Vol.51で執筆させて頂きました。初めての執筆活動なので、読みにくい部分、至らない部分などあると思いますが、買って読んで頂けると幸いです。]]></description>
			<content:encoded><![CDATA[				<div class='wpfblike' style='height: 40px;'><fb:like href='http://ukstudio.jp/2009/06/19/webdb_51/' layout='default' show_faces='true' width='400' action='like' colorscheme='light' send='false' /></div><table  class="g-tools_table">
				<tr>
				<td colspan="2"><span class="g-tools_title"><a href="http://www.amazon.co.jp/WEB-DB-PRESS-Vol-51-PRESS%E7%B7%A8%E9%9B%86%E9%83%A8/dp/4774138908%3FSubscriptionId%3D0G91FPYVW6ZGWBH4Y9G2%26tag%3D2004-05-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D4774138908" target="_blank">WEB+DB PRESS Vol.51</a><img src='http://www.assoc-amazon.jp/e/ir?t=2004-05-22&#038;l=ur2&#038;o=9' width='1' height='1' border='0' alt='' /></span></td>
				</tr>
				<tr>
				<td valign="top"><span class="g-tools_img"><a href="http://www.amazon.co.jp/WEB-DB-PRESS-Vol-51-PRESS%E7%B7%A8%E9%9B%86%E9%83%A8/dp/4774138908%3FSubscriptionId%3D0G91FPYVW6ZGWBH4Y9G2%26tag%3D2004-05-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D4774138908" target="_blank"><img src="http://ecx.images-amazon.com/images/I/61aVDmJxrxL._SL160_.jpg"  alt="WEB+DB PRESS Vol.51" /></a></span></td>
				<td valign="top"><span class="g-tools_body">WEB+DB PRESS編集部 </p>
				<p>技術評論社  2009-06-24<br />売り上げランキング : 130</p>
				<p><a href="http://www.amazon.co.jp/WEB-DB-PRESS-Vol-51-PRESS%E7%B7%A8%E9%9B%86%E9%83%A8/dp/4774138908%3FSubscriptionId%3D0G91FPYVW6ZGWBH4Y9G2%26tag%3D2004-05-22%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D4774138908" target="_blank">Amazonで詳しく見る</a></span><span class="g-tools_by"> by <a href="http://www.goodpic.com/mt/aws/index.html" >G-Tools</a></span></td>
				</tr>
				</table>
				<p>僕個人っていうわけではないですが、会社の人達と一緒に6月24日発売のWEB+DB PRESS Vol.51で執筆させて頂きました。初めての執筆活動なので、読みにくい部分、至らない部分などあると思いますが、買って読んで頂けると幸いです。</p>
				<div class='wpfblike' style='height: 40px;'><fb:like href='http://ukstudio.jp/2009/06/19/webdb_51/' layout='default' show_faces='true' width='400' action='like' colorscheme='light' send='false' /></div>
]]></content:encoded>
			<wfw:commentRss>http://ukstudio.jp/2009/06/19/webdb_51/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

