Heroku + FireBaseを利用してRailsアプリケーションデプロイ [Herokuでの作業]

2020年12月10日木曜日

Git Heroku Rails

t f B! P L

前回までの記事

Herokuでの作業

Herokuアカウント作成



姓名は本名じゃなくても良さそう。あとで適当なアカウント名に変更できる。僕はtontonにした。
他の項目も適当に入力して登録する

GitHubアカウント作成

上記からアカウント作成

こちらも必須項目を入力して登録する

HerokuとGithubの連携


環境変数設定

FireBaseのDBやTwitterのAPIを利用するにはkey情報というものが必要になる。key情報は他人に見られてはいけない秘匿情報なのでGitにはあげられない。
環境変数を利用してkey情報を管理運用する。運用イメージはこんな感じ


Railsに環境変数設定

dotenv-railsを使用する
Gemfileに以下を書いてインストールする
gem 'dotenv-rails'
bundle install
.envというファイルをアプリケーションルートディレクトリに新規作成して環境変数を書く
.envファイルの書き方例
HOGE_TOKEN = "hogehogetoken"
Railsでは環境変数をENV[環境変数名]で利用できる。.envに書いた内容も同じくENVで値を取り出すことができる。
token = ENV['HOGE_TOKEN']

Herokuに環境変数設定

heroku-configを端末にインストールする
heroku plugins:install heroku-config
.envファイルの環境変数をpush
heroku config:push
Herokuの環境変数を確認
heroku config
他コマンドは上記

設定した環境変数の利用でエラー

環境変数の設定自体はうまくいっても、利用しようとすると以下のようなエラーがたまにでる。
GRPC::InvalidArgument  is malformed: it either contains invalid characters or is too long.
git configで確認したところ、値にシングルクォーテーションがついていた環境変数があった
HOGE_TOKEN: hogehoge
HUGA_TOKEN: 'hugahuga'
setで直接環境変数を設定してやればOK
heroku config:set HUGA_TOKEN="hugahuga"

そもそもHerokuを選んだ理由

とにかく無料

初めはプログラム運用管理を単純化したかったのでFireBase一本でいこうと思っていた。
TwitterAPIを使用するにはサーバサイドの処理が必要でFireBaseではNode.jsが使用できる。
FireBaseでNode.js利用するときはCloud Functionというものを使う必要がある。
Cloud FunctionはBlazeプラン(課金)に変えないと使用できない。すぐに課金されるわけではないが慎重にいきたいため断念した。

サーバサイドはRailsしか経験ない

Railsの知識しかない。他の技術を勉強する時間が勿体無い。また、HerokuはRailsと親和性が高いということもある。

まとめ

とりあえずHerokuでの作業は終わり。環境変数周りは大したエラーログも出なくて解決するまでかなり苦労した。。。次はFireBase!

自己紹介

Webエンジニアをやっています。日々思ったことや、読書レビュー、IT系の記事などを書き連ねています

VSCodeのremote-sshで繋がらなくなった[Resolver error: Error: Running the contributed command: '_workbench.downloadResource' failed]

概要 VSCodeの拡張機能にremote-sshというものがある。サーバにsshしてエディタ表示できるやつ。 そいつがある日突然繋がらなくなった。以前は繋がっていたのに。 エラー sshしに行ってパスワード入力するとしばらく待たされる。そのあとに以下のようなエラー。 「R...

QooQ