2017-08-23 6 views
0

Je sais que cette question a été posée à plusieurs reprises, mais aucune des solutions proposées de travail pour moi. J'utilise la version Ruby 2.2.1 avec open-uri et essayer d'ajouter une URL à distance pour mes pièces jointes.RUBY - S3 amazon pour les pièces jointes url à distance - openURI :: HTTPError: 403 Interdit

Ce que j'est:

@filename = "#{@doc.id}-#{@company.subdomain}-#{@doc.doc_number}-#{@doc.created_at.strftime("%Y-%m-%d")}.pdf" 
@file_path = "https://mybucket.s3.amazonaws.com/docs/doc_#{@doc.id}/#{@doc.filename}" 

attachments[@filename] = open(URI.parse("#{@file_path}")).read 

J'ai aussi utilisé

1. File.read(open("#{@file_path}") 
2. open(Net::HTTP.get(URI.parse("#{@file_path}")) 
3. Added User-Agent 

j'ai enlevé URI.parse, essayé avec la variable d'instance et sans interpolation de chaîne. Rien ne fonctionne. Si je visite un chemin de fichier sur le navigateur, cela fonctionne mais pas quand je l'appelle dans mon mailer.

Toute aide serait grandement appréciée.

EDIT: Si je viens de coder en dur une adresse de travail (pas d'interpolation de chaîne) en tant que pièce jointe, cela fonctionne correctement.

Répondre

0

Eh bien, qui était une solution facile mais un peu sans rapport. J'ai eu une faute de frappe ailleurs dans mon code qui fait un nom peu différent des urls j'ai utilisé pour tester.

je l'ai réalisé quand je les suivantes au lieu de file_path et cela a fonctionné instantanément avec:

file_path = @doc.filename.url 

attachments[@file_name] = open(URI.parse("#{file_path}")).read