私はクリップ付きのモデル(画像またはpdfファイル)を持っています。私はSidekiqのバックグラウンドプロセスでこのモデルを処理しています。バックグラウンドプロセスでは、ファイル形式のパスワード保護やガベージコレクションを取り除くために、pdfファイルをimagemagick convert関数のpdfファイルストリングに変換しています。Imagemagick convertはコンソールからは動作しますが、Sidekiqでは動作しません
この変換は、開発環境のsidekiqとステージングサーバーのsidekiqでうまくいきますが、運用サーバーのsidekiqでは機能しません。 Railsコンソールから変換方法を実行すると、私のプロダクションサーバー上で動作しています。それはdst
ファイルを動作していない場合は空で、返される文字列は''
モデルである私は、この問題をデバッグする方法のアイデアのうちだ。この
class Receipt < ActiveRecord::Base
has_attached_file :image, styles: { original: {} }, path: ':rails_root/attachments/:class/:attachment/:id_partition/:style/:filename'
validates_attachment_content_type :image, :content_type => IMAGE_MIME_TYPES
def convert_pdf_to_pdf_string
if %w(application/pdf application/octet-stream).include?(image.content_type)
begin
dst = Tempfile.new([File.basename(image.path, File.extname(image.path)), '.pdf'], :encoding => 'ascii-8bit')
dst.flush
`convert -density 200 #{image.path.shellescape} #{dst.path.shellescape}`
dst
str = File.open(dst.path, 'rb') {|f| f.read}.to_s
ensure
dst.close
dst.unlink
end
end
end
end
のように見えます。
例外はありません。また、バックティックコールの戻り値を記録しようとしましたが、何も返されません。
私が確認する必要があるアイディアを投げてください。
これはHerokuを使用していますか(プロダクションサーバー)ですか? – oreoluwa
いいえ、Debianサーバです。また、ステージングサーバーと運用サーバーは同じ方法で構成する必要があります。 – Mika
pry-remoteのようなものを使用し、ブレークポイントを設定し、何が起きているかを確認します。 – egze