2013-04-09 2 views
0

저는 Elastic Beanstalk을 사용하여 배치 된 레일 어플리케이션이 있습니다. 나는 ffmpeg를 사용하여 S3에 저장된 오디오 파일에 대한 정보를 얻고 싶습니다. streamio-ffmpeg 젬을 사용하면 좀 더 쉽게 만들 수 있습니다.레일 엘라스틱 콩 줄기 - 그런 파일이나 디렉토리가 없습니다.

인스턴스에 SSH 처리 할 때 잘 작동하는 EC2 인스턴스에 ffmpeg를 설치했으며 모든 것이 로컬로 정확하게 작동하도록했습니다. 기본적으로 S3에서 파일을 다운로드하고/tmp 폴더에 저장 한 다음 streamio-ffmpeg gem을 통해 해당 파일을 호출합니다. 나는이 오류를 얻을

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

내가 여기 바보 같은 일을하고 있습니까 때

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) 

오류는, 그 마지막 줄에 발생? 인스턴스로 SSH 할 때, 파일은 있어야하고, 명령 행에서 그 행을 실행할 때, 절대적으로 잘 실행됩니다.

UPDATE 나는 리눅스에 대한 전문가는 아니지만, tmp 디렉토리에 ls -l 명령을 실행하는

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

이러한 사용 권한이 제한적인 나에게 준다?

이 어떤 도움을 크게 감상 할 수

+0

잘 모르지만 왜 문제가 발생하는지는 확실합니다. 허가를 확인할 수 있습니까? –

+0

게시물에 파일 사용 권한을 추가했습니다. – user1756535

+0

좋아요, 그래서 저는 이것을 ffmpeg를 사용할 수없는 인스턴스의 webapp 사용자에게 줄였습니다. 어떻게 해결할 수 있는지에 대한 아이디어가 있습니까? – user1756535

답변

0

첫째, 한 번만 전체 경로를 구성 할 것이며, 당신이 이제까지 변경하면 동기화 점점 그들 중 어떤 기회가되지 않도록, 두 곳 모두에서 동일한 방법을 참조 경로가 어떻게 결합되어 있는지. 또한 읽는 것이 더 쉬워야합니다. 그것은이 닫힌의 권리 후 OS 꽤 볼 수없는 경우

여전히 발견되지 않는 경우
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

관련 문제