LoginSignup
0
0

【Rails】ログを自動で削除する

Last updated at Posted at 2023-04-28

はじめに

Railsを使っていて、なんとなしにlogディレクトリのファイルを見たらなんと一万行くらいのログが溜まっていて心配になりました。
このまま溜めっぱなしだと動作にも影響が出そうなので自動で削除したいと思いました。

環境

zsh
rails 6.1.3.7

logファイルのデータ削除

ファイルの内容を削除したい場合にはrakeタスクを実行します。

$ rake log:clear 

ログ削除の自動化

gem 'whenever'をインストールします。
これは、cronの設定を簡単に行えるライブラリです。

Gemfile
gem 'whenever'

chedule.rbファイルを作成

$ bundle exec wheneverize .

[add] writing `./config/schedule.rb'
[done] wheneverized!

ファイルを編集。

config/schedule.rb
#実行時のログファイルの置き場所指定
set :output, "#{path}/log/cron.log"

#zshで実行
set :job_template, "/bin/zsh -l -c ':job'"
#rakeコマンド実行時の設定
job_type :rake, "export PATH=\"$HOME/.rbenv/bin:$PATH\"; eval \"$(rbenv init -)\"; cd :path && RAILS_ENV=:environment bundle exec rake :task :output"

# 毎日の午後6時に実行
every 1.day, at: '6:00 pm' do
  rake 'log:clear'
end

# 毎週土曜日の午前3時に実行
every :saturday, at: '3:00 am' do
  # ジョブの中身
end

# 毎月1日の午前2時に実行
every '0 2 1 * *' do
  # ジョブの中身
end

# 平日の午後4時30分に実行
every :weekday, at: '4:30 pm' do
  # ジョブの中身
end

cronやwheneverがbundleなどを実行する際には、rbenvの設定が効いていないため
export PATH=\"$HOME/.rbenv/bin:$PATH\"; eval \"$(rbenv init -)\"
という記述をしないと、デフォルトでインストールされていたrubyのバージョンで実行されることになり、もしアプリ内で違うバージョンのrubyを使っていたとしたらエラーが発生する。

参考

0
0
0

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