Heroku Rails デプロイ 忘備録

  rails routes
  bundle install
  //libxmlはXMLをパースするライブラリ
sudo yum install libxml2-devel

//libcurlは通信をサポートするライブラリ
sudo yum install libcurl-devel
bundle install

//リダイレクトの確認
rails routes
rails s

//環境変数の設定
vi ~/.bash_profile

//設定を反映
source ~/.bash_profile

エラー

 Uglifier::Error: Unexpected character '`'

調べてみるとUglifier= RailsのJavaScriptの軽量化gem がES5までしか対応していない。
おいおい、、、 本家サイトで確認

github.com

config>environment.rb

//これを
config.assets.js_compressor = :uglifier

//このように変更
config.assets.js_compressor = Uglifier.new(harmony: true)

ビルドは通ったけど今度はこれ

f:id:happy_teeth_ago:20190726125816p:plain

ログを見る tailは現在のものを見れる

heroku logs --tail

iamge fileが ないとエラーが出たので、とりあえずpostgressをインストール

 sudo yum install -y postgresql-server postgresql-devel
 sudo chkconfig postgresql on
 sudo service postgresql start
 
//postgres userでログイン
 sudo -u postgres -i

//ec-2userを作成する
createuser -s ec2-user
//CTL + D で抜ける

bundle install

//DB作成
rails db:create

rails db:migrate

//サーバー起動
rails s

エラー

 NoMethodError (undefined method `email' for nil:NilClass):
app/models/user.rb:54:in `is_same_person_as_super_user?'

emailが無いと言っているので、言われたところを見てみる

 def is_same_person_as_super_user?
    User.superuser.email == email
  end

superuserが無いとエラーになる。

 def self.superuser
    User.find_by(email: ENV.fetch('SUPERUSER_EMAIL'))
  end

superuserは環境変数からgetしているので、環境変数にセットする
ついでにDBもリセットする
herokuのブラウザからできる。
f:id:happy_teeth_ago:20190730121018p:plain

DBをマイグレーションする。

$ heroku run rake db:migrate
//作成したタスクを確認。
$rake -T
//タスクを実行
$ heroku run rake db:create_superuser

DBのリセットはherokuコマンドでも可能

//ログを見る
heroku logs --tail
  
//リセット
heroku pg:reset DATABASE

//DBに反映
heroku rake db:migrate
//データ作成
heroku rake db:seed

参考にさせていただきました https://whatsupguys.net/programming-school-dive-into-code-learning-41/