1

数時間ごとにホームページのデータを変更するレーキ タスクがあります。私はそれをテストしましたが、開発では問題なく動作します。しかし、それは本番環境では機能しません。見たい変更を取得するにはどうすればよいですか? サーバーを再起動するコマンドを追加する必要がありますか? それはサーバーに変更を認識させますか?これを行うよりスマートな方法はありますか?

レーキ タスクは以下のとおりです。これは heroku のスケジューラ アドオンによって実行されるため、現在は lib/tasks/scheduler.rake ファイルにあります。

desc 'changes the meta tags'
task :mixup_meta_tags => :environment do 
  regex = /@meta_tag/
  file = File.open('app/controllers/site_controller.rb', 'r')
  lines = []
  file.each_line do |line|
    (line =~ regex) ? (lines << replace_line(line)) : (lines << line)
  end
  file.close
  file = File.open('app/controllers/site_controller.rb', 'w')
  lines.each{|line| file.write line} 
  file.close
end

def replace_line(line)
  meta_tags = MetaTag.all.map { |tag| tag["tag"] }
  new_tag = meta_tags.sample(1)[0]
  line = "    @meta_tag = \"#{new_tag}\" \n" # added the newline
end
4

1 に答える 1