2010-09-04 5 views
1

Je veux utiliser tâche de fond de râteau dans des rails comme celui-citâche de fond de coupe ne peut pas exécuter

system("cd #{Rails.root} && RAILS_ENV=#{Rails.env} rake abc:def --trace 2>&1 >> #{Rails.root}/log/rake.log &") 

Ceci est correct dans un environnement de développement, mais ne fonctionnera pas en mode de production.

J'utilisé enregistreur pour vérifier si la chaîne de commande est générée ok ou non, mais il semble que chaque choses est très bien dans la production evironment:

cd /home/username/rails_staging/Abc/releases/20100904034630 && RAILS_ENV=production rake abc:def --trace 2>&1 >> /home/username/rails_staging/Abc/releases/20100904034630/log/rake.log & 

Tout organisme a des idées sur pourquoi cela ne peut pas fonctionner dans la production mode?

Merci

Répondre

0

Ceci est ma configuration de test pour reproduire votre problème.

# lib/tasks/whatever.rake 
namespace :abc do 
    task :def do 
    puts "DEF ran in #{Rails.env} mode in the directory #{Rails.root}." 
    end 
end 

$ rake abc:def 
DEF ran in development mode in the directory /tmp/boluapp 

$ RAILS_ENV=production rake abc:def 
DEF ran in production mode in the directory /tmp/bobluapp. 

Il fonctionnera. Ça ne va pas au journal. Vous pouvez le voir ici dans le rails console fonctionnant en mode production. Rake désactive la journalisation en mode production. Alors créez en un nouveau.

# lib/tasks/whatever.rb 
namespace :abc do 
    task :def do 
    logger = Logger.new("#{Rails.root}/log/rake.log") 
    logger.level = Logger::INFO 
    logger.info "DEF ran in #{Rails.env} mode in the directory #{Rails.root}." 
    end 
end 

$ RAILS_ENV=production rake abc:def 
$ cat log/rake.log 
# Logfile created on 2011-11-23 00:00:00 -0500 by logger.rb/31641 
DEF ran in production mode in the directory /tmp/boluapp. 

Comme une note de conseil gratuit que vous ne voulez probablement pas, c'est une mauvaise façon d'exécuter des travaux d'arrière-plan. Regardez la gemme delayed_job.

+0

plus de conseils gratuits, resque gem. –

Questions connexes