Rails - delete_all или destroy_all не работают на рабочем сервере, но работают нормально на сервере разработки - PullRequest
1 голос
/ 16 июля 2011

У меня есть приложение rails, где мне нужно периодически удалять журналы поиска из модели.Для этого я использую задачу rake с синтаксисом model.destroy_all , она отлично работает на сервере разработки.Однако, похоже, что на производственном сервере ничего не происходит.

И серверы разработки, и производственные серверы используют Ubuntu Server 10.04, Rails 3.0.7, Mysql Database.Вы сталкивались с подобной ситуацией раньше?

Ниже приведен код задачи rake:

task :cleansed_log => :environment do
raw_logs = Searchlog.find_by_sql("SELECT q from searchlogs")
flag = 0
pres_log, prev_log = "", ""
if raw_logs.count > 1
  raw_logs.each do |raw_log|

    if flag == 0
      prev_log = raw_log.q
      flag = 1

    else

      pres_log = raw_log.q
      if pres_log =~ /#{prev_log}/
        prev_log = pres_log

      else
        @cleansedlog = Cleansedlog.new(:keyword => prev_log)
        @cleansedlog.save

        prev_log = pres_log
      end

    end
  end
  @cleansedlog = Cleansedlog.new(:keyword => pres_log)
  @cleansedlog.save

  Searchlog.destroy_all

end

end

Ниже приведено задание cron, которое вызывает выше задачу rake:

# Begin Whenever generated tasks for: cleansedlog
# 0,5,10,15,20,25,30,35,40,45,50,55 * * * * /bin/bash -l -c 'cd       /var/www/prodsite//releases/20110715035538 && RAILS_ENV=production rake cleansed_log -- silent >> /work/saptcodes/cron.log 2>&1'
# End Whenever generated tasks for: cleansedlog

Ответы [ 2 ]

0 голосов
/ 16 июля 2011

Можете ли вы попробовать с

model.delete_all

Осторожно, поскольку это не учитывает обратные вызовы, зависимые ассоциации и идет прямо в базу данных.

Я иногда сталкивался с похожим поведением при использовании destroy_all, особенно при миграциях.

0 голосов
/ 16 июля 2011

Я не уверен, но вы передаете опцию RAILS_ENV для рейка?

Например:

rake logs:destroy RAILS_ENV='production'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...