<?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>Rails 2.0 &#187; Web API</title>
	<atom:link href="http://rails20.jp/category/web-api/feed/" rel="self" type="application/rss+xml" />
	<link>http://rails20.jp</link>
	<description>Rails開発のTips、ソフトウェア、ライブラリに関する情報をお届けします。Railsの開発受託も行っています。</description>
	<lastBuildDate>Thu, 08 Oct 2009 04:14:44 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>ローカルでAmazon S3を使った開発をParkPlaceを利用して行う</title>
		<link>http://rails20.jp/2008/03/amazon_s3_development_use_parkplace/</link>
		<comments>http://rails20.jp/2008/03/amazon_s3_development_use_parkplace/#comments</comments>
		<pubDate>Wed, 26 Mar 2008 06:46:08 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Amazon]]></category>
		<category><![CDATA[Web API]]></category>
		<category><![CDATA[プラグイン]]></category>
		<category><![CDATA[開発]]></category>
<category></category>
		<guid isPermaLink="false">http://rails20.jp/2008/03/amazon_s3_development_use_parkplace/</guid>
		<description><![CDATA[
Amazon S3のトップページ。ここから申し込み可能。
Amazon S3はAmazonによるストレージサービスです。1バイト〜5GBまでのオブジェクトを自由に作成し、取り出し、更新、削除することができます。データベースに保存しないような、画像やファイルなどを保存するのに最適なソリューションです。
Amazon S3を使う場合、RubyにはAWS::S3という便利なライブラリがあります。これを使うとごく簡単にAmazon S3を利用することができます。Ruby on Railsでの開発の際にももちろん利用します。

AWS::S3のトップページ。使い方も書かれています。
問題はローカル環境で開発している時です。ネットワーク接続が必須なのは非常に面倒ですし、何よりAmazon S3は有料のWeb APIなので、開発しているだけで課金されてしまうのは問題です。
そこで使うのがAmazon S3クローンであるParkPlaceです。このソフトウェアはクローンとは言っても置き換えを目指すのではなく、Amazon S3を利用したソフトウェア開発を便利にするために提供されているソフトウェアになります。ここではこのParkPlaceを使った開発方法を書きたいと思います。

ParkPlaceのトップページ

必要なファイルは殆どgemで手に入ります。注意点としてはMongrelは1.0.1固定にしておく必要があるということです。1.0.2でも良いかもしれませんが、試していません。1.0.5ではエラーがありました。

sudo gem install camping --include-dependencies
sudo mongrel --include-dependencies -v 1.0.1
gem install sendfile # Windowsでない場合必要らしい

また、Amazon S3向けのライブラリもインストールします。

sudo gem install aws-s3
これで準備完了です。後はParkPlace本体をダウンロードします。これはSubversionでcheckoutするだけです。

svn co http://code.whytheluckystiff.net/svn/parkplace/trunk parkplace
そして必要に応じてbin/parkplaceを修正します。

gem 'mongrel', '&#60; 1.1'
↓
gem 'mongrel', '= 1.0.1'
これで準備は完了です。


AIR:parkplace nakatsugawa$ bin/parkplace -v
-- No RubyTorrent found, torrent support disbled.
** Please login in with `admin' and password `pass@word1'
** You should [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://rails20.jp/wp-content/uploads/8.jpg"><img src="http://rails20.jp/wp-content/uploads/8-tm.jpg" alt="ピクチャ 8.png" height="275" width="440" /></a><br />
Amazon S3のトップページ。ここから申し込み可能。</p>
<p><a href="http://www.amazon.com/gp/browse.html?node=16427261">Amazon S3</a>はAmazonによるストレージサービスです。1バイト〜5GBまでのオブジェクトを自由に作成し、取り出し、更新、削除することができます。データベースに保存しないような、画像やファイルなどを保存するのに最適なソリューションです。</p>
<p>Amazon S3を使う場合、Rubyには<a href="http://amazon.rubyforge.org/">AWS::S3</a>という便利なライブラリがあります。これを使うとごく簡単にAmazon S3を利用することができます。Ruby on Railsでの開発の際にももちろん利用します。</p>
<p><a href="http://rails20.jp/wp-content/uploads/7.jpg"><img src="http://rails20.jp/wp-content/uploads/7-tm.jpg" alt="ピクチャ 7.png" height="275" width="440" /></a><br />
AWS::S3のトップページ。使い方も書かれています。</p>
<p>問題はローカル環境で開発している時です。ネットワーク接続が必須なのは非常に面倒ですし、何よりAmazon S3は有料のWeb APIなので、開発しているだけで課金されてしまうのは問題です。</p>
<p>そこで使うのがAmazon S3クローンである<a href="http://code.whytheluckystiff.net/parkplace">ParkPlace</a>です。このソフトウェアはクローンとは言っても置き換えを目指すのではなく、Amazon S3を利用したソフトウェア開発を便利にするために提供されているソフトウェアになります。ここではこのParkPlaceを使った開発方法を書きたいと思います。</p>
<p><a href="http://rails20.jp/wp-content/uploads/4.jpg"><img src="http://rails20.jp/wp-content/uploads/4-tm.jpg" alt="ピクチャ 4.png" height="275" width="440" /></a><br />
ParkPlaceのトップページ</p>
<p><span id="more-21"></span></p>
<p>必要なファイルは殆どgemで手に入ります。注意点としてはMongrelは1.0.1固定にしておく必要があるということです。1.0.2でも良いかもしれませんが、試していません。1.0.5ではエラーがありました。</p>
<pre>
<code>sudo gem install camping --include-dependencies
sudo mongrel --include-dependencies -v 1.0.1
gem install sendfile # Windowsでない場合必要らしい
</code></pre>
<p>また、Amazon S3向けのライブラリもインストールします。</p>
<pre>
<code>sudo gem install aws-s3</code></pre>
<p>これで準備完了です。後はParkPlace本体をダウンロードします。これはSubversionでcheckoutするだけです。</p>
<pre>
<code>svn co http://code.whytheluckystiff.net/svn/parkplace/trunk parkplace</code></pre>
<p>そして必要に応じてbin/parkplaceを修正します。</p>
<pre>
<code>gem 'mongrel', '&lt; 1.1'
↓
gem 'mongrel', '= 1.0.1'</code></pre>
<p>これで準備は完了です。</p>
<pre>
<code>
AIR:parkplace nakatsugawa$ bin/parkplace -v
-- No RubyTorrent found, torrent support disbled.
** Please login in with `admin' and password `pass@word1'
** You should change the default password for the admin at soonest chance!
** ParkPlace example is running at http://127.0.0.1:3002/
** Visit http://127.0.0.1:3002/control/ for the control center.
</code></pre>
<p>で起動します。起動はmongrelを使って行い、http://localhost:3002/controlがメイン画面になります。上記に表示されているID/PWでログインできます。ここではBucketの管理やファイル一覧、アップロード/削除が可能です。</p>
<p><a href="http://rails20.jp/wp-content/uploads/6.jpg"><img src="http://rails20.jp/wp-content/uploads/6-tm.jpg" alt="ピクチャ 6.png" height="275" width="440" /></a><br />
ParkPlaceの管理画面</p>
<p>管理画面の立ち上げが確認できたら、irbベースで利用してみます。</p>
<pre>
<code>
$ irb
>> require 'rubygems'
=> false
>> require 'aws/s3'
=> true
>> AWS::S3::Base.establish_connection!(
?>                                     :access_key_id     => '44CF9590006BF252F707',
?>                                     :secret_access_key => 'OtxrzxIsfpFjA7SwPzILwy8Bw21TLhquhboDYROV',
?>                                     :use_ssl => nil,
?>                                     :server  => 'localhost',
?>                                     :port => 3002
>>                                     )
=> #<aws ::S3::Connection:0x65c4d0 @secret_access_key="OtxrzxIsfpFjA7SwPzILwy8Bw21TLhquhboDYROV", @options={:secret_access_key=>"OtxrzxIsfpFjA7SwPzILwy8Bw21TLhquhboDYROV", :persistent=>true, :server=>"localhost", :use_ssl=>nil, :port=>3002, :access_key_id=>"44CF9590006BF252F707"}, @access_key_id="44CF9590006BF252F707", @http=#<net ::HTTP localhost:3002 open=false>>
>> music_bucket = AWS::S3::Bucket.find('moongift')
=> #<aws ::S3::Bucket:0x6029f8 @object_cache=[#<aws::S3::S3Object:0x1873060 '/moongift/Users/nakatsugawa/Downloads/parkplace/s3.rb'>, #</aws><aws ::S3::S3Object:0x1873000 '/moongift/file'>, #</aws><aws ::S3::S3Object:0x1872930 '/moongift/file2'>, #</aws><aws ::S3::S3Object:0x1872920 '/moongift/file3'>], @attributes={"name"=>"moongift", "is_truncated"=>false, "xmlns"=>"http://s3.amazonaws.com/doc/2006-03-01/"}>
>> music_bucket.objects[2].about
=> {"last-modified"=>"Wed, 26 Mar 2008 05:58:10 GMT", "connection"=>"close", "content-type"=>"binary/octet-stream", "etag"=>"ca12cb05b0da7680fd49d7fb4a516f18", "date"=>"Wed, 26 Mar 2008 06:07:34 GMT", "content-disposition"=>"", "server"=>"ParkPlace", "content-length"=>"0"}
>> music_bucket.objects[2].value
=> "require …"
>> ^C
>>
</aws></net></aws></code></pre>
<p>このようにして、通常のAmazon S3同様に利用できるようになります。アクセス権限さえ付与すれば、HTTPベースでアクセスできるのもAmazon S3同様です。AWS::S3自体の利用法については公式サイトのドキュメントを参考にしてください。</p>
<p>以上がParkPlaceの利用法になります。予想以上にAmazon S3に近く、使い勝手が良さそうです。後は接続先情報をconfig/environments/development.rbなどに記述して環境に応じて使い分けるようにすれば良さそうです。</p>
<p>参考URL</p>
<p><strong>Park Place – Trac</strong><br />
<a href="http://code.whytheluckystiff.net/parkplace/">http://code.whytheluckystiff.net/parkplace/</a></p>
<p><strong>AWS::S3 &#8211; Ruby Library for Amazon Simple Storage Service (S3)</strong><br />
<a href="http://amazon.rubyforge.org/">http://amazon.rubyforge.org/</a></p>
<p><strong>Amazon.com: Amazon S3, Amazon Simple Storage Service, Unlimited Online Storage: Amazon Web Services</strong><br />
<a href="http://www.amazon.com/gp/browse.html?node=16427261">http://www.amazon.com/gp/browse.html?node=16427261</a></p>
]]></content:encoded>
			<wfw:commentRss>http://rails20.jp/2008/03/amazon_s3_development_use_parkplace/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
