我的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應用程序目錄的副本。它的發展像一種魅力。我感謝您的幫助!