2010-11-12 6 views
1

J'appelle un exécutable C dans mon application Rails (-v 2.3.5) en utilisant l'appel system().Comment consigner la sortie de la commande système dans Rails en mode production?

makefile_path = File.expand_path('./c_executalbe', Rails.root) 
system(makefile_path) 

Tout fonctionne bien sur ma machine locale, mais pour une raison que l'appel système() ne fonctionne pas sur le serveur (dreamhost). Et il n'y a aucun message d'erreur dans log/production.log. Je voudrais voir la sortie retournée de cet appel système dans le journal. Comment puis je faire ça?

Merci d'avance!

Répondre

3

Voir: http://ruby-doc.org/core/classes/Kernel.html#M005960

Utilisation:

output = %x(command) 
output = `command` 
output = Kernel.send(:`, "command") 

Vous obtiendrez la sortie de commande.

Si command provient d'une variable, comme dans votre cas, vous pouvez interpoler:

output = %x(#{makefile_path}) 
output = `#{makefile_path}` 
output = Kernel.send(:`, makefile_path) 

Pour vous connecter dans log/production.log:

logger.info output 
# or 
puts output 
+0

Merci! Ceci est exactement ce que je cherchais. – saurb

+0

Je ne parviens pas à le connecter en production à l'aide de Logger.info (cmd_output). J'utilise un serveur léger. –

Questions connexes