2012-10-06 57 views
1

我的Rails應用程序中存在自定義回形針處理器的問題。我上傳聲音文件,處理器通過shell命令創建波形圖像(由gem提供)Rails回形針處理器:shell命令失敗

我在Ubuntu 12.04(生產環境)上運行RoR 3.2.7/Ruby 1.9.3。我與紙夾附件模型看起來如下:

# encoding: utf-8 
class Track < ActiveRecord::Base 
    has_attached_file :original_file, 
        :styles => { :waveform_image => { :waveform => true } }, 
        :processors => [:sound_processor], 
        :storage => :s3, 
        :s3_credentials => "#{Rails.root.to_s}/config/s3.yml", 
        :url => ":s3_eu_url", 
        :path => "sounds/:id/:five_digit_id_:basename_:style.:extension" 
end 

相應回形針處理器:

class Paperclip::SoundProcessor < Paperclip::Processor 

    def initialize file, options = {}, attachment = nil 
    # cut for brevity 
    end 

    def make 
    src = @file 
    dst = Tempfile.new([@basename, @current_format]) 
    dst.binmode 

    if @waveform 
     cmd = "waveform #{File.expand_path(src.path)} #{File.expand_path(dst.path)}" 
     Paperclip.log(cmd) 
     out = `#{cmd}` 
     dst = File.open "#{File.expand_path(dst.path)}" 
    end 

    dst 
    end 
end 

當命令

waveform #{File.expand_path(src.path)} #{File.expand_path(dst.path)} 

生產機器上獲取執行(Ubuntu的12.04) ,出現以下錯誤:

/usr/bin/env: ruby: No such file or directory 

但是,usr/bin/env是一個文件而不是目錄。由於沒有ruby可執行文件,因此在執行shell命令時如何傳遞正確的位置? PS:在我的開發機器(OSX)上,usr/bin/env是我的rails應用程序目錄的副本。它的發展像一種魅力。我感謝您的幫助!

回答

0

錯誤消息指示未找到ruby可執行文件。它與您現在在問題中包含的代碼無關。

錯誤來自包含waveform #{File.expand_path(src.path)} #{File.expand_path(dst.path)}行的腳本文件。

查閱這些答案的問題: - https://stackoverflow.com/a/6126419/429758 - https://stackoverflow.com/a/5241638/429758 - https://stackoverflow.com/a/5241593/429758 - https://stackoverflow.com/a/1064319/429758

他們應該給你一些想法,爲什麼Ruby可執行文件未在生產環境中。