LoginSignup
11
12

More than 5 years have passed since last update.

「gyazo-s3」を作ってみた

Last updated at Posted at 2014-10-20

これをやってみました。

※ Macでの作業を想定しています。

ローカルにアプリを作成

まずはリポジトリをクローンします。

$ git clone https://github.com/soramugi/gyazo-s3.git
$ cd gyazo-s3

必要な環境変数を生成するのにbundleを使っているのでrbenvをインストールします。

$ brew install postgresql
$ rbenv install 2.1.1
$ rbenv local 2.1.1
$ rbenv exec gem install bundler
$ NOKOGIRI_USE_SYSTEM_LIBRARIES=1 bundle install --path vendor/bundle

次のコマンドでbundleが使用可能であることを確認します。

$ echo $(bundle exec rake secret)

herokuへのデプロイ

herokuにデプロイします。いくつか環境変数の設定が必要なのでいれておきます。
また、S3のバケットは初回アップロード時に生成されるので事前に準備しなくてOKです。
(逆に、バケットを作成する権限が必要です)

$ heroku create gyazo-s3
$ heroku config:set SECRET_KEY_BASE=$(bundle exec rake secret)
$ heroku config:set S3_BUCKET=S3_BUCKET
$ heroku config:set AWS_ACCESS_KEY_ID=AWS_ACCESS_KEY_ID
$ heroku config:set AWS_SECRET_ACCESS_KEY=AWS_SECRET_ACCESS_KEY
$ heroku config:set GYAZO_ID=$(cat ~/Library/Gyazo/id)
$ heroku config:set TITLE=GyazoS3
$ git push heroku master
$ heroku run bundle exec rake db:migrate
変数名 説明
SECRET_KEY_BASE たしかDBとの接続時に使うシークレットトークン(?)
S3_BUCKET S3のバケット名
AWS_ACCESS_KEY_ID AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY AWS_SECRET_ACCESS_KEY
GYAZO_ID 公式クライアントアプリの識別用ID(cat ~/Library/Gyazo/idで確認出来る)
TITLE ブラウザのタブとかに表示されるアレ

クライアントアプリの設定

/Applications/Gyazo.app/Contents/Resources/scriptを下記のように編集し、参照先をheroku上にたてたGyazoに変更します。

/Applications/Gyazo.app/Contents/Resources/script
#HOST = 'upload.gyazo.com'
#CGI = '/upload.cgi'
HOST = 'gyazo-s3.herokuapp.com'
CGI = '/items'

注意点

~/Library/Gyazo/idでクライアントアプリとサーバが1:1対応になっています。
複数人での使用の際は、別途~/Library/Gyazo-S3/idみたいなものを作成し、そちらをクライアントアプリに参照させるか、別途専用のアプリを作成したほうがいいかもしれません。

ちなみに~/Library/Gyazo/idを書き換えてもOKです。

番外編

S3のリージョン

ソースコード内でS3のリージョン指定がap-northeast-1(東京)になっていたため、レイテンシを考慮しus-eastに変更しました。
※ 既にプルリク済みのため対応は不要ですが、herokuでEUリージョンを使用の際はご注意下さい。

~/gyazo-s3/config/environments/production.rb
-  Paperclip::Attachment.default_options[:s3_host_name] = 's3-ap-northeast-1.amazonaws.com'
+  Paperclip::Attachment.default_options[:s3_host_name] = 's3.amazonaws.com'

Basic認証

こちらに書きました。
IP制限等もこれで行けるはず。

11
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
12