Cronjob, zamanlanmış görevler için kullanılan bir araç, Bir örnek üzerinden çalışma mantığını anlayalım. Yapmaya çalıştiğimiz örnek her gece 23:55 de ilgili kişilere sistemin mail atması.
Cronjob için whenever gemini kullanıcaz:
gemfile:
gem 'whenever', :require => false
config altına schedule.rb dosyası oluşturalım
job_type :rbenv_runner, %Q{export PATH=/home/esryrlmz/.rbenv/shims:/home/esryrlmz/.rbenv/bin:$PATH; eval "$(rbenv init -)"; \ cd :path && bundle exec rails runner -e :environment ':task' :output }
#her gun gece 23:55 de mail gönder
every :day, :at=> '11:55pm' do
rbenv_runner "SendMail.send_information_email",:environment => 'development'
end
* projeyi yayınladığınızda :environment => 'production'
* Eğer haftanın cuma gunu saat gece 23:55 de olmasını isteseydik
every :friday, :at=> '11:55pm'
* Eger her saat olmasını isteseydik
every 1.hours
Model altina SendMail dosyasını oluşturalım
# encoding: utf-8
class SendMail
def self.send_information_email
InfoMailer.send_information_email().deliver_now
end
end
Terminalden cron işlevini restart edelim:
$ sudo service cron restart
$ whenever
ekrancıktımız:
cronjob listesine bakalım
$ crontab -l
bu ekran cıktısında yukarıdaki iş görünmüyorsa
$crontab -e ile karşımıza gelen sayfayı manuel olarak düzenleyebiliriz(yukarıdakı 55 23 ile başlayan blogu bu sayfada yazılı olması gerekli)
Şimdi mail atma kısmını düzenleyelim
mailers içerisine send_mail.rb dosyası oluşturalım ve aşağıdaki gibi düzenleyelim
default template_path: 'mail/send'
default from: "aaaa@hotmail.com"
class SendMail < ActionMailer::Base
def send_information_email
@date = DateTime.now.strftime('%d.%m.%Y').to_s
@sales=Sale.all
mail(
to: "esryrlmz@gmail.com"
cc: "eyrlmz999@hotmail.com"
subject: "[Satıs raporu]",
content_type: "text/html",
)
end
end
Mail için view oluşturalım
View/mail/send/send_information_email.html.slim
doctype html
html
head
meta content=("text/html; charset=UTF-8") http-equiv="Content-Type" /
body
.row
.col-sm-12
p=@date +" tarihli satış raporu aşağıdadır"
.panel.panel-default
.panel-body
.row
.col-md-12.col-sm-12
table.table.table-hover border="solid black" padding= "5px"
tr
th colspan="6"
center
| Müşteri
tr
th colspan="2"
center
| Ürünler
th colspan="2"
center
| Ödeme Bilgileri
tr
td
| Ürün Sayısı:
td =@sales.customer.count
td
| Ödeme Bilgisi
td = @sales.paid.count
Bu mail ekranına ne yazarsak o mail het gun 23:55 de eklenen mail adreslerine gider. Mail göndermeyle ilgili olarak şu yazıyada bakabiliriz
Hiç yorum yok:
Yorum Gönder