kitagawachihiro / spoTodo

2 stars 0 forks source link

本番環境でcronが実行されないエラーの解消 #76

Closed kitagawachihiro closed 1 year ago

kitagawachihiro commented 1 year ago

flyのログでエラー

WARN The running flyctl agent (v0.1.97) is older than the current flyctl (v0.1.102).
WARN The out-of-date agent will be shut down along with existing wireguard connections. The new agent will start automatically as needed.

flyctlをアップデートすることで解決

brew upgrade flyctl

参考)アップデートコマンド https://github.com/superfly/flyctl#using-a-package-manager

kitagawachihiro commented 1 year ago

◾️本番環境(fly.io)でcronを実行する方法

①crontabファイル(cronの設定ファイル)をアプリ直下に作成

 touch ./crontab

中に設定を記述する

0 0 * * * bundle exec rake delete:delete

②デプロイする

fly deploy

③cronのインスタンスを減らす deployを実行すると cronのインスタンスも冗長構成で2つ上がってきてしまうため、1つにする必要がある

※インスタンス数の確認

user@USERnoMacBook-Air spoTodo % fly scale show                                       
VM Resources for app: spotodo

Groups
NAME    COUNT   KIND    CPUS    MEMORY  REGIONS 
cron    2       shared  1       256 MB  nrt(2) 
web     2       shared  1       256 MB  nrt(2) 

cronは1つ、webは2つに変更

fly scale count 1 --process-group cron

参考)公式 https://fly.io/docs/app-guides/supercronic/

参考)まとまっていてすごいわかりやすい https://qiita.com/solt9029/items/bd6a9bae247f74f3e3a2

kitagawachihiro commented 1 year ago

初めは下記でインスタンス数を減らそうとしたが、エラーがでていた

fly scale count 1 web 2 --app spotodo

fly scale count 1 web 2 --process-group spotodo-db

エラー内容

Error: --process-group flag is required when no group named 'app' is defined
「app」という名前のグループが定義されていない場合は、--process-group フラグが必要です

fly.tomlではapp="spotodo"と定義されているので?であったが。。。

実行コマンドを変更することで解決。

fly scale count 1 --process-group cron

--process-groupはプロセスを指定できるオプション。 今回cronプロセスだけスケールの変更をすれば良かったのでcronを指定した。

user@USERnoMacBook-Air spoTodo % fly scale count 1 --process-group cron
App 'spotodo' is going to be scaled according to this plan:
  -1 machines for group 'cron' on region 'nrt' of size 'shared-cpu-1x'
? Scale app spotodo? Yes
Executing scale plan
  Destroyed 5683d444a62278 group:cron region:nrt size:shared-cpu-1x
user@USERnoMacBook-Air spoTodo % fly scale show                                         
VM Resources for app: spotodo

Groups
NAME    COUNT   KIND    CPUS    MEMORY  REGIONS 
cron    1       shared  1       256 MB  nrt    
web     2       shared  1       256 MB  nrt(2) 

参考) https://fly.io/docs/apps/scale-count/

kitagawachihiro commented 1 year ago
user@USERnoMacBook-Air spoTodo % fly postgres connect -a spotodo-db        
Connecting to fdaa:2:e152:a7b:fc:ad5c:ea93:2... complete
psql (15.3 (Debian 15.3-1.pgdg120+1))
Type "help" for help.

postgres=#  \c spotodo
You are now connected to database "spotodo" as user "postgres".
spotodo=# \dt
                List of relations
 Schema |         Name         | Type  |  Owner  
--------+----------------------+-------+---------
 public | ar_internal_metadata | table | spotodo
 public | authentications      | table | spotodo
 public | currentlocations     | table | spotodo
 public | schema_migrations    | table | spotodo
 public | spots                | table | spotodo
 public | todos                | table | spotodo
 public | users                | table | spotodo
(7 rows)

spotodo=# select * from todos;
kitagawachihiro commented 1 year ago

rake aborted! Don't know how to build task 'delete' (See the list of available tasks with rake --tasks) /rails/vendor/bundle/ruby/2.7.0/gems/rake-13.0.6/exe/rake:27:in `<top (required)>