2013-04-09 14 views
0

У меня есть приложение для рельсов, развернутое с использованием эластичного бобового стебля. Я хочу использовать ffmpeg для получения информации об аудиофайлах, которые хранятся на S3, и я использую камень streamio-ffmpeg, чтобы сделать это немного проще.Rails Elastic Beanstalk - нет такого файла или каталога

Я установил ffmpeg на экземпляр EC2, который работает нормально, когда SSH-ing в экземпляр, и все работает нормально нормально локально. Я в основном загружаю файл с S3 и сохраняю его в папке/tmp, а затем вызываю его с помощью камкордера streamio-ffmpeg.

s3 = AWS::S3.new(
:access_key_id => ENV["AWS_ACCESS_KEY_ID"], 
:secret_access_key => ENV["AWS_SECRET_ACCESS_KEY"]) 
object = s3.buckets[ENV["AWS_S3_BUCKET"]].objects[CGI::unescape(self.url)] 

tempname = Digest::MD5.hexdigest(DateTime.now.to_s) + "." + self.file_format 
File.open(Rails.root.to_s + '/tmp/' + tempname, 'wb') do |f| 
    f.write(object.read) 
end 

dl = Rails.root.to_s + '/tmp/' + tempname 
audio = FFMPEG::Movie.new(dl) 

ошибка происходит на этой последней строке, когда я получаю эту ошибку

Errno::ENOENT (No such file or directory - ffmpeg -i /var/app/current/tmp/46951a3d16abb2e5fcf1da9e4cf8e0f3.flac) 

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

UPDATE Я не эксперт по Linux, но работает Ls -l в каталоге TMP дает мне

-rw-r--r-- 1 webapp webapp 26445358 Apr 9 13:07 90da56d83822a0bf716b5dfaae27844b.wav 

ли эти разрешения ограничительной?

Любая помощь будет принята с благодарностью

+0

Не уверен, почему проблема возникает, кажется, ОК. Вы можете проверить разрешение? –

+0

Я добавил права доступа к файлу – user1756535

+0

Итак, я думаю, что я сузил это для пользователя webapp, когда экземпляр не смог использовать ffmpeg. Любые идеи относительно того, как я могу это исправить? – user1756535

ответ

0

Во-первых, я хотел бы только построить полный путь раз и относятся к нему так же, как в обоих местах, так что нет никакой возможности их получения из синхронизации, если вы когда-либо изменения как путь объединяется. Это также должно облегчить чтение.

tempname = Digest::MD5.hexdigest(DateTime.now.to_s) + "." + self.file_format 
temppath = Rails.root.join('tmp', tempname) 
File.open(temppath, 'wb') do |f| 
    f.write(object.read) 
end 

audio = FFMPEG::Movie.new(temppath) 

Если он все еще не нашел, единственное, что я могу думать о какой-то гонки состоянии, если это не совсем видна ОС сразу же после того как она была закрыта. Кажется маловероятным.

+0

Справедливая точка по конструированию пути один раз. Я все еще получаю ту же ошибку, хотя ... – user1756535

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

  • Нет связанных вопросов^_^