2013-04-09 44 views
0

我有一個使用Elastic Beanstalk部署的Rails應用程序。我想使用ffmpeg獲取有關存儲在S3上的音頻文件的信息,並且使用streamio-ffmpeg gem使其更容易一些。Rails Elastic Beanstalk - 沒有這樣的文件或目錄

我已經在EC2實例上安裝了ffmpeg,在SSH進入實例時工作正常,並且本地一切工作都很好。我基本上是從S3下載文件,並將其存儲在/ tmp文件夾中,然後通過streamio-ffmpeg gem調用該文件。

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方面的專家,但在tmp目錄-l運行LS給我

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

是這些權限的限制?

任何幫助,將不勝感激

+0

不知道,爲什麼問題正在發生,似乎沒問題。你能檢查許可嗎? – 2013-04-09 12:57:44

+0

我已將文件權限添加到帖子 – user1756535 2013-04-09 13:10:35

+0

好吧,所以我認爲我已經將範圍縮小到web應用程序用戶,但不能使用ffmpeg。任何想法如何我可以解決這個問題? – user1756535 2013-04-09 19:29:43

回答

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) 

如果仍然沒有找到,我能想到的唯一的事情就是某種形式的競爭條件,如果它不是,它已經關閉之後的OS相當明顯。似乎不太可能。

+0

一次構建路徑的公平點。儘管我仍然遇到同樣的錯誤... – user1756535 2013-04-09 13:36:01

相關問題