LoginSignup
8
10

More than 5 years have passed since last update.

RailsGirlsチュートリアルで画像をDropboxに保存する

Last updated at Posted at 2017-02-26

対象者

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」等好きな名前を入力する。
screencapture-dropbox-developers-apps-create-1488091018373.png

登録後表示された画面から「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

参考サイト

8
10
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
8
10