Rails アプリを 2 つの EC2 インスタンスにデプロイしました。メールを送信するために rufus-scheduler を使用して Job を 24 時間ごとに実行するようにスケジュールしました。
ただし、スケジューラは 2 つのインスタンスで別々に実行されています。
1 つのインスタンスでのみスケジューラを実行する必要があります。それで、この問題について助けてもらえますか?
ありがとう
Rails アプリを 2 つの EC2 インスタンスにデプロイしました。メールを送信するために rufus-scheduler を使用して Job を 24 時間ごとに実行するようにスケジュールしました。
ただし、スケジューラは 2 つのインスタンスで別々に実行されています。
1 つのインスタンスでのみスケジューラを実行する必要があります。それで、この問題について助けてもらえますか?
ありがとう
https://github.com/jmettraux/rufus-scheduler#so-railsに従っていると仮定しましょう
この方法でイニシャライザを変更できます。
#
# config/initializers/scheduler.rb
require 'rufus-scheduler'
s = Rufus::Scheduler.singleton
unless File.exist?(File.dirname(__FILE__) + '/../../no_scheduling')
s.every '1m' do
Rails.logger.info "hello, it's #{Time.now}"
end
end
次に、スケジュールを設定したくないインスタンスの Rails ルートで、no_scheduling ファイルをタッチして、Rails を起動します。「no_scheduling」ファイルを持つインスタンスはスケジュールされません。
演習 1: no_scheduling が存在する場合にスケジューラをインスタンス化しないように、上記のイニシャライザを拡張します。
演習 2: ファイル チェックを IP チェックに置き換えて、特定の IP スケジュールでレール セットアップのみがスケジュールされるようにします。