私は多くの密接な問題を見てきましたが、私の問題を解決するための解決策を見つけることができませんでした. Rails 3.2.13 で Ruby 1.9.3 を使用しています。
私は Prawn を使用して PDF を生成し、ロゴを表示します。ロゴは開発環境では問題なく見つかりますが、Heroku にある本番環境では失敗します。
私のコントローラーには次のものがあります:
def generate_risk_pdf(risk)
Prawn::Document.new do
image "#{Rails.root}/app/assets/images/logo-print.png", :scale => 0.75 if Rails.env.development?
image "#{ActionController::Base.helpers.asset_path('logo-print.png')}", :scale => 0.75 if Rails.env.production?
move_down 2
formatted_text [{:text => Exercise Australia", :styles => [:bold], :size => 20}]
font_size 6
bounding_box([bounds.right - 150, bounds.bottom], :width => 240, :height => 20) do
text "Copyright: Exercise Australia, #{Date.today.year}"
end
end.render
end
Heroku ログには
ArgumentError (/assets/logo-print-5b6da7bd4012d953bc1bc749cf934d91.png が見つかりません): app/controllers/single_entries_controller.rb:309:in `block in generate_risk_pdf'
上記の Rails.env.production の行に対応するのはどれですか?
URL を /assets/logo-print-5b6da7bd4012d953bc1bc749cf934d91.png に追加すると、画像ファイルが存在します。
その行を削除すると、機能します(ロゴを除く)。
これは Prawn だけでなく、電子メールにインラインで画像を使用しようとした場合でも失敗することに注意してください。
助けてください、私は髪を引き裂いています!
追加: 公共事業からの提供 - しかし、それは私の好みの解決策ではありません.