対象者
Herokuへのデプロイが成功した人
問題点
Herokuに保存した画像はしばらくアクセスしないと消えてしまう。
AWS S3に保存するように変更すれば消えないが、費用がかかる。
対策
Dropboxを利用すれば無料で画像を保存することができる。
方法
- 予めDropboxにユーザー登録しておく
- DropboxからAPI Tokenを取得する
ここにアクセスして「Create App」をクリックする。
Choose an APIはDropbox APIを、Choose the type of access you needはApp folderを選択する。
最後に、Nmae your appには「railsgirls」等好きな名前を入力する。
登録後表示された画面から「App key」と「App secret」を取得してメモっておく。
- Gemfileの修正
Gemfileの次の行を
gem 'carrierwave'
次のように書き換える。
gem 'carrierwave', '~> 0.9'
gem 'carrierwave-dropbox'
gem 'dotenv-rails'
-
bundle install
を実行してライブラリを更新する - 次のコマンドを入力してTOKENを取得する
$ rake dropbox:authorize APP_KEY=保存したapp_key APP_SECRET=保存したapp_secret ACCESS_TYPE=dropbox
- Enterを押すと入力待ちになる。表示されたURLにWebブラウザでアクセスして「許可」ボタンを押す。
- コンソールに戻って"y"を押し、先に進める。
- access_token、access_token_secret、user_idが表示されるのでメモっておく。
- config/initializers/carrierwave.rbの作成
ファイルを新規作成し、次の通り中身を作成する
CarrierWave.configure do |config|
config.dropbox_app_key = ENV['APP_KEY']
config.dropbox_app_secret = ENV['APP_SECRET']
config.dropbox_access_token = ENV['ACCESS_TOKEN']
config.dropbox_access_token_secret = ENV['ACCESS_TOKEN_SECRET']
config.dropbox_user_id = ENV['USER_ID']
config.dropbox_access_type = :auto
end
- app/uploaders/picture_uploader.rbの修正
storageの設定を変更する。
storage :dropbox
- .envファイルの作成
プロジェクトディレクトリ直下に.env
というファイルを作成する。内容は次の通り。
APP_KEY: 保存したapp_key
APP_SECRETE: 保存したapp_secret
ACCESS_TOKEN: 保存したaccess_token
ACCESS_TOKEN_SECRET: 保存したaccess_token_secret
USER_ID: 保存したuser_id
- .gitignoreに次の行を追加
.env
これを忘れるとgithub等にDropboxのAPI TOKENが公開され、他人に自分の写真やファイルを見られる可能性があるので注意する。
- gitにコミットする
次のコマンドでgitにコミットする。
$ git add .
$ git commit -m "画像をDropboxに保存するように変更"
- 動作確認
$ rails server
Railsのサーバーを動作させ、画像ファイルの登録ができることを確認する。うまく動いたらHerokuに公開する。
- Herokuへの公開準備
次の手順で環境変数を登録する
$ heroku config:set APP_KEY=保存したapp_key
$ heroku config:set APP_SECRETE=保存したapp_secret
$ heroku config:set ACCESS_TOKEN=保存したaccess_token
$ heroku config:set ACCESS_TOKEN_SECRET=保存したaccess_token_secret
$ heroku config:set USER_ID=保存したuser_id
- Herokuへ登録する
$ git push heroku master
参考サイト