LoginSignup
0
0

More than 3 years have passed since last update.

HerokuでDocker環境Rails MySQLなものを動かす。deviseかつtwitter APIを隠しながら

Last updated at Posted at 2020-09-10

人に見せる用に書いていません。

自作記事のお父上、Rails+MySQL+Nginx+Unicorn+Docker+CircieCIな開発環境を作りたいえ〜の記事の続き。

上で作った環境に[Rails] deviseの使い方(rails5版)を追加し、かつTwitterAPIをgem 'dotenv-rails'で隠しながら、本番環境のherokuにアップロードした。

①docker-compose.ymlのコマンドを変更する

docker-compose.yml
command: /bin/sh -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"

② gem 'dotenv-rails'を導入する

目的:TwitterAPIキーをGitHubのローカルに入れたくない

envファイルはGitの管理に入れたくないので、.gitignoreファイルに以下を追記しておきましょう。

.gitignore.envを追加する。

これで.envはGitの管理下から外れます。

https://pikawaka.com/rails/dotenv-rails
http://vdeep.net/rubyonrails-dotenv

③ APIキーをdotenv-railsの.envで隠しながら導入する

[Rails] deviseの使い方(rails5版)の記事のtwitterAPIを追加する場所をENV[]に書き換える

config/initializer/devise.rb
config.omniauth :twitter, ENV['TWITTER_API_KEY'], ENV['DATABASE_URL']

④ Herokuの環境変数を変更する

多分、DATABASE_URLとTWIITER_API_KEY,DATABASE_URLはマスト。

herokuのGUIのSettingのConfig VarsHerokuアプリの環境変数設定(CUIで設定)で設定する

Herokuアプリの環境変数設定

  • ClearDBのURL確認
    以下のコマンドで、ClearDBのURLが確認できる。
$ heroku config
=== <アプリの名前> Config Vars
CLEARDB_DATABASE_URL: mysql://<ユーザー名>:<パスワード>@<ホスト名>/<データベース名>?reconnect=true
  • 環境変数の設定
    上記コマンドで表示されたそれぞれの値を変数に設定する。
$ heroku config:add DB_NAME='<データベース名>'
$ heroku config:add DB_USERNAME='<ユーザー名>'
$ heroku config:add DB_PASSWORD='<パスワード>'
$ heroku config:add DB_HOSTNAME='<ホスト名>'
$ heroku config:add DB_PORT='3306'
$ heroku config:add DATABASE_URL='mysql2://<ユーザー名>:<パスワード>@<ホスト名>/<データベース名>?reconnect=true'

※ RailsのGemfileで'mysql2'を使用しているので、DATABASE_URLmysql2://で始める必要がある。

設定内容を確認すると、以下のように表示される。

$ heroku config
=== <アプリの名前> Config Vars
CLEARDB_DATABASE_URL: mysql://<ユーザー名>:<パスワード>@<ホスト名>/<データベース名>?reconnect=true
DATABASE_URL:         mysql2://<ユーザー名>:<パスワード>@<ホスト名>/<データベース名>?reconnect=true
DB_HOSTNAME:          <ホスト名>
DB_NAME:              <データベース名>
DB_PASSWORD:          <パスワード>
DB_PORT:              3306
DB_USERNAME:          <ユーザー名>

Herokuへデプロイ

Railsプロジェクトに必要な準備

  • config/environments/production.rbに以下を追記
    (この辺りの設定に関しては、後々修正します。)
config.assets.compile = true
config.assets.initialize_on_precompile=false

これプラス、gem 'dotenv-rails'.envで作ったTwitterAPIをheroku側に設定する。

参考
https://qiita.com/ymstshinichiro/items/d6ea229f6eb4778006c2
https://golikyua.hatenablog.com/entry/2020/01/09/135254
https://www.sejuku.net/blog/tutorial/111347

0
0
1

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
0
0