<?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; aws</title>
	<atom:link href="http://www.func09.com/wordpress/archives/tag/aws/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>[rails] paperclipでAmazon CloudFrontを使う</title>
		<link>http://www.func09.com/wordpress/archives/680</link>
		<comments>http://www.func09.com/wordpress/archives/680#comments</comments>
		<pubDate>Thu, 10 Sep 2009 10:55:11 +0000</pubDate>
		<dc:creator>haga</dc:creator>
				<category><![CDATA[ruby]]></category>
		<category><![CDATA[ruby on rails]]></category>
		<category><![CDATA[aws]]></category>
		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://www.func09.com/wordpress/?p=680</guid>
		<description><![CDATA[Amazon CloudFrontはAmazon S3上のファイルをキャッシュするソリューションです。 前回paperclipからS3を使う設定はわかったので、今回はさらにCloudFrontを利用するための設定です 前 [...]]]></description>
			<content:encoded><![CDATA[<p>Amazon CloudFrontはAmazon S3上のファイルをキャッシュするソリューションです。</p>

<p><a href="http://www.func09.com/wordpress/archives/674">前回paperclipからS3を使う設定</a>はわかったので、今回はさらにCloudFrontを利用するための設定です</p>

<h2>前回のおさらい</h2>

<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">has_attached_file :avatar,<br />
&nbsp; :storage =&gt; :s3,<br />
&nbsp; :s3_credentials =&gt; &quot;#{RAILS_ROOT}/config/s3.yml&quot;,<br />
&nbsp; :path =&gt; &quot;:attachment/:id/:style.:extension&quot;,<br />
&nbsp; :bucket =&gt; 'mybucket'</div></div>

<p>前回こんな感じでS3の設定をしました。</p>

<p>コンソールから利用してみると</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">user = User.new<br />
user.avatar = File.open('/tmp/myface.jpg')<br />
user.save<br />
<br />
puts user.avatar.url #=&gt; http://mybucket.s3.amazonaws.com/avatar/1/original.jpg</div></div>

<p>こんな感じでS3のURLがとれるようになっているはず。</p>

<h2>s3_host_aliasを効かす</h2>

<p>キャッシュサービスであるCloudFrontを利用する場合は、ホスト名を適宜変えるだけなので
paperclipが勝手にやってくれるといいなぁ〜なんて思いました。</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">has_attached_file :avatar,<br />
&nbsp; :storage =&gt; :s3,<br />
&nbsp; :s3_credentials =&gt; &quot;#{RAILS_ROOT}/config/s3.yml&quot;,<br />
&nbsp; :path =&gt; &quot;:attachment/:id/:style.:extension&quot;,<br />
&nbsp; :bucket =&gt; 'mybucket',<br />
&nbsp; :s3_host_alias =&gt; &quot;xxxxxxxxxxxx.cloudfront.net&quot;,<br />
&nbsp; :url =&gt; &quot;:s3_alias_url&quot;</div></div>

<p>オプションが２つ増えてます</p>

<ul>
<li>:s3_host_alias は、エイリアスのFQDNを記述しておきます。</li>
<li>:url には「&#8221;:s3_alias_url&#8221;」を記述します。注意なのは、rubyのシンボルじゃなくて、文字列だってところです。ハマりました。</li>
</ul>

<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">user = User.new<br />
user.avatar = File.open('/tmp/myface.jpg')<br />
user.save<br />
<br />
puts user.avatar.url #=&gt; http://xxxxxxxxxxxx.cloudfront.net/avatar/1/original.jpg</div></div>

<p>わーーこりゃ幸せだ。</p>

<h2>余談</h2>

<p>さらにサイト全体でアセット関係（public以下）もCloudFrontにしたければ</p>

<p>config/environments/#{RAILS_ENV}.rb 内で</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">config.action_controller.asset_host = &quot;http://xxxxxxxxxxxx.cloudfront.net&quot;</div></div>

<p>こうしとけば、image_path()やらimage_tag()やらjavascript_include_tag()やらを使ったときに、リクエスト先を書き換えてくれてさらに幸せ度アップ</p>
]]></content:encoded>
			<wfw:commentRss>http://www.func09.com/wordpress/archives/680/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

