Rake任务适用于开发,但不适用于生产

我有一个rake任务,每隔几个小时就会改变主页上的数据。 我已经测试了它,它在开发中运行良好。 但它在生产中不起作用。 我需要做些什么来获得我想要看到的更改? 我应该添加重启服务器的命令吗? 这会让服务器承认更改吗? 有更聪明的方法吗?

rake任务如下。 它将由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 

是的,对生产中的Rails应用程序的更改需要重新启动才能被服务器接收。 为了让它在运行中工作,你可能想尝试在这篇文章中提到的解决方案为什么需要重新加载在rails-3中的代码