はじめに
さくらVPSヘのデプロイは中止した。非常にややこしいことになってきたためだ。また別記事にまとめる。もっと簡単にデプロイする場所を探して、最近流行りつつあるRender.comを使った。
Render.comとは
PaaSのひとつで、Herokuよりも価格が安く柔軟に対応できるらしい。Renderの公式サイトで以下のような挑戦的な記事があった。
どちらも無料でつかえるプランがあるし、速度については比較してみないと違いがよくわからない。
設定でつまったところ
ちょー簡単にデプロイまでできるのだが、すこしつまったところがあった。Render.comでは「Build Script」というスクリプトを書いて、デプロイの際にそれが実行されるようにしている。
ただ、私の場合はなぜかそれが反映されなかった。(無料プランのため?)そのため設定の「Build Command」を編集しないといけなかった。
変更前
bundle install
変更後
bundle install && yarn install && bundle exec rake assets:precompile && bundle exec rake assets:clean && bundle exec rails webpacker:compile && bundle exec rake db:migrate
Build Commandの入力欄は1行だったので、&&でコマンドをつなげた。
各種エラーの記録
何度もデプロイしてはだめ、を繰り返した。ちょっとしんどかった。エラーも記録しておく。
エラー1: application.css is not present in the asset pipeline
ActionView::Template::Error (The asset "application.css" is not present in the asset pipeline.
application.cssがアセットパイプラインというところになかった。これはconfig/environment/production.rb
を以下のように修正した。
# 略
config.assets.compile = true #falseからtrueへ変更
# 略
これは動的コンパイルと呼ばれる手法らしく、以下に説明があった。
なぜこれをするとエラーが直るのか。調べないといけない。
エラー2: File to import not found - bootstrap
(Error: File to import not found or unreadable: bootstrap/scss/bootstrap.
on line 110:1 of app/assets/stylesheets/application.scss
>> @import "bootstrap/scss/bootstrap";
bootstrapが見つからないというエラーだったが、これはRender.comのサーバーにbootstrapが入っていないためだった。最初のデプロイ時にyarn install
をすると、ローカルのyarnのlistに沿ってダウンロードしてくれる。
エラー3 : Webpacker can't find
ActionView::Template::Error (Webpacker can't find application in /opt/render/project/src/public/packs/manifest.json.
webpackerが入っていないだけだった。これもデプロイ時に以下のコマンドを追加して治った。
bundle exec rails webpacker:compile
おわりに
やっとWebサービスをデプロイすることができた。はやく運用までもっていけるように、細々とした修正をやっていこう。
参考: