2010-11-12 2 views
1

Я вызываю исполняемый файл C в приложении Rails (-v 2.3.5), используя вызов system().Как регистрировать вывод команды системы в Rails в режиме производства?

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

Все отлично работает на моей локальной машине, но по какой-то причине, что система() вызов не будет работать на сервере (Dreamhost). И сообщение об ошибке в журнале/production.log отсутствует. Я хотел бы увидеть возвращенный вывод этого системного вызова в журнале. Как я могу это сделать?

Заранее благодарен!

ответ

3

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

Использование:

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

Вы получите вывод команды.

Если command происходит от переменной, как в вашем случае, вы можете интерполировать:

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

Чтобы войти в его log/production.log:

logger.info output 
# or 
puts output 
+0

Спасибо! Это именно то, что я искал. – saurb

+0

Я не могу зарегистрировать его на производстве, используя Logger.info (cmd_output). Я использую тонкий сервер. –

Смежные вопросы