私は、DocumentモデルでCarrierwaveを使用しています。 ホストをCarrierwaveのURLに追加するにはどうすればよいですか?
class Document
mount_uploader :file, DocumentUploader
end
と、添付ファイルのテストで
class DocumentMailer
def distribute(recipient, document)
filename = document.file.file.original_filename
attachments[ filename ] = File.read(document.file.url)
mail(
to: receipient.email,
subject: "Document attached"
)
end
end
として文書を電子メールで送信しようとしています、メーラーは、私がテストスイートにこのエラーを解決することができます
Errno::ENOENT:
No such file or directory @ rb_sysopen - /uploads/document/file/2/my_attachment.jpg
エラーを上げていますDocumentMailerでurl
の代わりにpath
を呼び出して、完全なファイルシステムのパスを返します。
attachments[ filename ] = File.read(document.file.path)
# /Users/AHH/code/myapp/tmp/uploads/document/file/2/my_attachment.jpg
ただし、この方法では、製造に失敗します。 Carrierwaveは霧を使ってS3にファイルを保存しているので、DocumentMailerに添付ファイルを割り当てるには完全なURLが必要です。
file.url
を使用すると、テストに失敗するのはなぜですか?私はそれはURLがホストを持たないためだと仮定します。ですから、Carrierwaveがテスト環境でホストをfile.url
に適用する方法を教えてください。