Erstens, ich bin sehr neu in Rails und Stack Overflow, und derzeit bushwhacking meinen Weg durch die Lernkurve, so entschuldige ich mich, wenn mein Beitrag lächerlich noobish ist. Hier ist mein Problem:Wie lese ich Dateien in Rails (Bilder/Text) von Amazon s3, die manuell hochgeladen wurden?
Ich versuche, ein Blog von Grund auf mit Amazon S3 zu erstellen Ressourcen zu speichern, wie alle Bilder und Texte. Ich brauche keine Benutzer, die Sachen auf die Seite hochladen, also denke ich, dass ich einfach alles manuell auf s3 hochladen kann, indem ich ihre Konsole unter console.aws.amazon.com benutze. Ich versuche, Rails zu codieren, um Ordner aus meinem S3-Bucket zu lesen und dann die Bilder/den Text auf die richtigen Stellen in der Datenbank zu richten. Zum Beispiel könnte ich in s3 einen Ordner namens "Post1" erstellen, dann liest meine Rails-App die URL von allem aus diesem Ordner und zeigt sie auf Post1 in der Datenbank, dann kann ich einfach die Bild-URL oder den Text aufrufen. in der Ansicht und, theoretisch, zeigen Sie es an. Meine Frage ist, wie bekomme ich meine App, s3-Ordner zu lesen?
Ich weiß, ich erfinde das Rad hier wahrscheinlich neu, aber mein Ziel ist auch, Rails zu lernen. Vielen Dank im Voraus. Sie können my project auf GitHub finden.
Mein Blog Modell:
class BlogPost < ActiveRecord::Base
has_attached_file :download,
:storage => :s3,
:s3_credentials => Proc.new{|a| a.instance.s3_credentials }
def s3_credentials
{:bucket => "S3_BUCKET_NAME", :access_key_id => "AWS_ACCESS_KEY_ID", :secret_access_key => "AWS_SECRET_ACCESS_KEY"}
end
end
Hier ist mein Blog-Controller:
class BlogController < ApplicationController
before_action :load_posts
def index #this method puts all the stuff pulled from 'load_posts' and packages it nicely in a instanced variable
@blogPosts = BlogPost.all
end
def load_posts #this method should pull posts from AWS s3 and add them to the database (like magic)
end
end
Ich bin sicher, es gibt klaffende Löcher in meinem Code ... wie etwas tatsächlich zu s3 zu sprechen. Ich weiß, dass der Großteil dessen, was ich tun möchte, wahrscheinlich in mein Modell passt. Ich fühle mich wirklich fest. Ich hoffe, dass es eine einfache, magische Ruby-Methode gibt, die ich verwenden kann, wie zum Beispiel s3.file.read oder so. Eine andere Möglichkeit wäre, ein Formular für mich selbst zu erstellen, als wäre ich ein Benutzer, der alles in der Datenbank verbindet und dann auf s3 hochlädt. Dennoch habe ich Leute gelesen, die auf Probleme stoßen, wie zum Beispiel das Timing von Dynos, wenn sie versuchen, große Dateien (wie große Bilder) durch heroku auf s3 hochzuladen. Ich habe Tutorials gelesen, wie man direkt auf s3 hochlädt, aber ich könnte diesen Prozess auch überspringen und einfach auf die Schaltfläche "upload" auf der s3-Konsole klicken. Alles wird helfen. Danke nochmal allen.
Ich denke, das ist genau das, was ich suche. Danke vielmals! Ich werde einen Follow-up kommentieren, sobald ich mit dem Kopf dagegen stoße und es zum Laufen bringe oder wenn ich weitere Fragen habe. :) –
Vergessen Sie nicht, die Antwort zu akzeptieren, wenn Sie fertig sind. –
Ich versuchte 's3.bucket () .Objekt (" test/my_data.json "). Get ({response_target: '/tmp/data.json'}). Body' und alles, was es antwortete, war' # '... irgendwelche Ideen? –
Mirror318