Чтение из командной строки в Rails - PullRequest
0 голосов
/ 18 января 2012

Я пытаюсь запустить следующую команду mplayer в rails, используя session:

mplayer -identify -vo null -ao null -frames 0 text.mov

Я использую require "session", и следующий код прекрасно работает в отдельном файле ruby.

mb = "mplayer"
    mi = "-identify -vo null -ao null -frames 0"
    dimensions_bitrate = Hash.new

    stdout, stderr = '', ''
    shell = Session::Shell.new
    shell.execute "#{mb} #{mi} #{filename}", :stdout => stdout, :stderr => stderr

    vars = (stdout.split(/\n/).collect! { |o| o if o =~ /^ID_/ } ).compact!

    vars.each { |v|
            a, b = v.split("=")
            eval "@#{a.to_s.downcase} = \"#{b}\""       
            if a == "ID_VIDEO_WIDTH"
                    dimensions_bitrate[0] = b.to_i
            elsif a == "ID_VIDEO_HEIGHT"
                    dimensions_bitrate[1] = b.to_i
            elsif a == "ID_VIDEO_BITRATE"
                    dimensions_bitrate[2] = b.to_i
            end
    }

ОДНАКО, я не могу загрузить сессионный драгоценный камень в ROR.Я не уверен, в чем проблема.Если я добавлю требование «сеанс», я получу следующую ошибку:

no such file to load -- session

Я полагаю, что упускаю что-то относительно простое.

Есть идеи?

1 Ответ

0 голосов
/ 18 января 2012

Я не мог заставить это работать, поэтому я сделал следующее:

stdout = %x["mplayer" "-identify" "-vo" "-ao" "null" "-frames" "0" "#{filename}"]
    vars = (stdout.split(/\n/).collect! { |o| o if o =~ /^ID_/ } ).compact!
    vars.each { |v|
            a, b = v.split("=")
            eval "@#{a.to_s.downcase} = \"#{b}\""       
            if a == "ID_VIDEO_WIDTH"
                    dimensions_bitrate[0] = b.to_i
            elsif a == "ID_VIDEO_HEIGHT"
                    dimensions_bitrate[1] = b.to_i
            elsif a == "ID_VIDEO_BITRATE"
                    dimensions_bitrate[2] = b.to_i
            end
    }

, и это сработало отлично.надеюсь, что это полезно кому-то, кто запускает командную строку из ROR.Ключ должен установить каждый параметр как строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...