Amazon S3 ist eine großartige Möglichkeit zum Speichern von Dateien. Die Integration in Ihre Website zu lernen, kann jedoch eine Herausforderung sein. In diesem Artikel erfahren Sie, wie Sie Amazon S3 und Ruby on Rails durch den Aufbau einer einfachen Musik-Streaming-Anwendung integrieren.
Amazon S3 ist "Speicher für das Internet"
Wie auf der Amazon-Website gesagt, ist Amazon S3 "Speicher für das Internet". Es ist nicht nur kostengünstig, sondern auch schnell und zuverlässig. Auf diese Weise können Sie Inhalte auf Ihrer Website bereitstellen, z. B. Bilder, Videos oder so ziemlich alles, was Sie möchten. Amazon S3 funktioniert nicht genau wie der Speicher auf Ihrem Computer. Daher sollten Sie Folgendes beachten:
Bevor Sie mit diesem Lernprogramm fortfahren, sollten Sie einige wichtige Punkte beachten:
Das Endprodukt dieses Tutorials ist eine einfache Anwendung zum Streamen und Herunterladen von Musik. In dieser Anwendung kann der Benutzer Folgendes tun:
Wenn diese Anwendung abgeschlossen ist, haben Sie alle wichtigen Themen kennen gelernt, die Sie zur Verwendung von Amazon S3 in Ihrer Ruby on Rails-Anwendung benötigen.
Mit dem aws-s3-Gem können Sie mit dem Amazon S3-Dienst in Ihrer Anwendung interagieren.
Als Erstes installieren Sie die aws-s3
Rubin Edelstein Mit dem Gem können Sie mit dem Amazon S3-Dienst in Ihrer Anwendung interagieren. Wenn Sie Windows verwenden, führen Sie einfach den folgenden Befehl aus:
gem install aws-s3
Nachdem dies installiert ist, generieren Sie unsere Rails-Anwendung mit dem folgenden Befehl:
Schienen neue mp3app
Der letzte Schritt, um Ihre Anwendung zu starten, besteht darin, in das Verzeichnis mp3app / public zu gehen und die Datei mit dem Namen "index.html" zu löschen. Sobald dies abgeschlossen ist, kann Ihre Anwendung mit Amazon S3 interagieren!
Mit Ihrer Zugangsschlüssel-ID und Ihrem geheimen Zugriffsschlüssel können Sie eine Verbindung zu Amazon S3 herstellen.
Damit wir mit Amazon S3 interagieren können, müssen wir unserer Anwendung mitteilen, wie sie sich bei Amazon S3 anmelden soll. Hier sind Ihre Zugangsschlüssel-ID und Ihr geheimer Zugangsschlüssel hilfreich. Mit Ihrer Zugangsschlüssel-ID und Ihrem geheimen Zugriffsschlüssel können Sie eine Verbindung zu Amazon S3 herstellen. Aber zuerst müssen wir unserer Anwendung mitteilen, dass wir das verwenden aws-s3
Juwel. Wir machen das im Gemfile
:
gem 'aws-s3',: required => 'aws / s3'
Damit unsere Anwendung diesen Edelstein tatsächlich verwenden kann, müssen Sie ihn eingeben Befehlspaket installieren
. Nun, da es funktioniert, müssen wir unserer Anwendung mitteilen, wie sie sich bei Amazon S3 anmelden soll. Das machen wir auch im config / application.rb
Datei in einer neuen Zeile innerhalb der Application-Klasse:
AWS :: S3 :: Base.establish_connection! (: Access_key_id => 'Geben Sie Ihre Zugangsschlüssel-ID hier ein',: secret_access_key => 'Geben Sie Ihren geheimen Zugriffsschlüssel hier ein')
Dieser Code weist unsere Anwendung an, eine Verbindung zu Amazon S3 herzustellen, sobald die Anwendung gestartet wird (die application.rb
Datei wird geladen, wenn Ihre Anwendung gestartet wird). Eine letzte Sache, die der Anwendungsdatei hinzugefügt werden muss, ist eine Konstante mit dem Wert des Buckets, das wir verwenden werden. Der Grund dafür ist, dass, wenn wir jemals ändern müssen, welchen Bucket wir verwenden, dieser nur an diesem einen Ort aktualisiert werden muss. Es sollte ungefähr so aussehen:
BUCKET = "s3tutorialmusic"
Für dieses Tutorial habe ich mich entschieden, den Eimer zu benennen s3tutorialmusic
, Sie sollten dies jedoch durch den Eimer ersetzen, den Sie in Ihrem Konto haben. Am Ende sollte Ihre Datei ungefähr so aussehen (jedoch mit Ihren eigenen Anmeldeinformationen):
erfordern File.expand_path ('? / boot', __FILE__) erfordern 'Schienen / Alle' Bundler.require (: default, Rails.env), falls definiert? (Bundler) -Modul Mp3app-Klasse Anwendung < Rails::Application config.encoding = "utf-8" config.filter_parameters += [:password] AWS::S3::Base.establish_connection!( :access_key_id => 'Geben Sie Ihre Zugangsschlüssel-ID hier ein',: secret_access_key => 'Geben Sie Ihren Zugriffsschlüssel hier ein') BUCKET = 's3tutorialmusic' end end
Jetzt können wir endlich damit beginnen, dass unsere Anwendung tatsächlich etwas im Browser anzeigt. Lassen Sie uns zunächst den Controller und die erforderlichen Ansichten generieren. Insgesamt generieren wir drei Aktionen für unseren Controller (die wir Songs nennen werden): Index, hochladen
und löschen
.
Letztendlich ist die einzige Ansicht, die wir für diese Anwendung benötigen, die Indexansicht, da sie als zentrale Steuerungsleiste für jede Aktion dient, die Sie ausführen können. Jetzt kombinieren wir das alles zu einer schönen Befehlszeilenanweisung:
Schienen g Controller Songs Index Upload löschen
Wenn dies abgeschlossen ist, löschen Sie die erstellten Ansichten für hochladen
und löschen
, weil sie nicht verwendet werden. Fahren wir mit dem Schreiben des Codes für die Indexaktion fort!
In der Indexaktion können Benutzer mit dem fertigen Produkt neue Musik hochladen und vorhandene Musik löschen. In der Controller-Datei dieser Aktion ist für das Hochladen neuer Musik nichts zu tun. Wir benötigen jedoch eine Liste der aktuellen Songs, damit Benutzer sie löschen können.
Zuerst müssen wir ein Objekt abrufen, das auf unseren Musik-Bucket verweist (denken Sie daran, dass der Name dieses Bucket in der Konstante BUCKET gespeichert ist). So machen wir das:
AWS :: S3 :: Bucket.find (EIMER)
Damit wir die in der. Verfügbaren Methoden anwenden können aws-s3
Gem, wir müssen dem Ruby-Interpreter mitteilen, dass wir nach den Funktionen in suchen wollen AWS :: S3
Namespace, weshalb dies Teil des Methodenaufrufs ist. Das Eimer
class enthält alle Methoden, die mit der Bearbeitung von Buckets zusammenhängen. Endlich, das finden
Die Methode akzeptiert einen Parameter, den Namen des Buckets, und gibt ein Objekt zurück, das auf diesen Bucket verweist. Jetzt, da wir den Eimer haben, lassen Sie uns alle Objekte abrufen, indem Sie Folgendes tun:
AWS :: S3 :: Bucket.find (BUCKET) .objects
Das Objekte
Die Methode gibt einen Hash mit den Namen aller Objekte in diesem Bucket zurück. Schließlich müssen wir das Ergebnis dieses Methodenaufrufs in einer Instanzvariablen speichern, damit wir es in unserer Ansicht verwenden können. Am Ende wird die Indexaktion so aussehen:
def index @songs = AWS :: S3 :: Bucket.find (BUCKET) .objects end
Jetzt müssen wir die Ansicht für den Benutzer erstellen, um Musik hochzuladen und zu löschen. Beginnen wir mit dem späteren und erstellen Sie eine ungeordnete Liste aller aktuell hochgeladenen Objekte mit einem Link zum Löschen dieses Objekts. Das können wir so machen:
@Lieder
Variable mithilfe der jeweiligen Methode. if (params [: song]) AWS :: S3 :: S3Object.find (params [: song], BUCKET) .delete redirect_to root_path else render: text => "Es wurde kein Song zum Löschen gefunden!" Ende
Jetzt müssen wir den Benutzer tatsächlich Musik hochladen lassen, da dies eine der Hauptfunktionen für diese Anwendung war. Zunächst erstellen wir ein einfaches Formular, mit dem der Benutzer eine hochzuladende Datei auswählen kann. Das können wir so machen:
Laden Sie eine neue MP3 hoch:
<%= form_tag upload_path, :method => "post",: multipart => true do%> <%= file_field_tag "mp3file" %> <%= submit_tag "Upload" %> <% end %>
Wir erstellen ein Formular, das an die Upload-Aktion übermittelt wird. Hierbei handelt es sich um die Aktion, die den Upload auf Amazon S3 ausführt. Wir verwenden Post und Multipart, weil wir Dateien einreichen. Abgesehen davon ist dieses Formular sehr einfach und leicht zu verstehen, sodass wir uns jetzt mit der Implementierung des Controller-Teils dieser Aktion beschäftigen können.
Wir müssen die übergebene Datei nehmen und ein neues S3-Objekt erstellen, das in der Upload-Aktion ausgeführt wird. Wir können das mit dieser Codezeile machen:
AWS :: S3 :: S3Object.store (sanitize_filename (params [: mp3file] .original_filename), params [: mp3file] .read, BUCKET,: access =>: public_read)
In dieser einen Zeile ist viel los, daher werde ich jeden Teil einzeln erklären.
Wie üblich greifen wir auf die AWS :: S3 :: S3Object
um mit Objekten auf Amazon S3 zu interagieren.
Wir nehmen das Geschäft
Befehl, um Dateien tatsächlich in S3 hochzuladen. Der erste Parameter gibt an, wie die Datei aufgerufen werden soll. Wir nehmen das original_filename
Parameter der hochgeladenen Datei, damit der Name gleich bleibt. Wie für die sanitize_filename
Methode, die im nächsten Abschnitt erläutert wird. Der zweite Parameter sind die tatsächlichen Dateidaten, die beim Aufruf der Lesemethode für die hochgeladene Datei erhalten werden. Der dritte Parameter gibt den zu verwendenden Bereich an, und der vierte bestimmt, wer auf die Datei zugreifen kann. Da wir möchten, dass jeder die Datei lesen kann (einschließlich Herunterladen), geben wir den Zugriff als an : public_read.
Das sanitize_filename
method ist eine Methode, die von vielen Leuten und Plugins verwendet wurde, wie z attachment_fu
, und es wird verwendet, um ein Problem mit dem Internet Explorer zu lösen (schockierend, nicht wahr?). Anstatt uns beim Aufrufen der Methode original_filename nur den Namen der Datei anzugeben, gibt IE den gesamten Pfad zur Datei zurück. Zum Beispiel, wenn die Datei, die wir hochladen wollten, aufgerufen wurde mysong.mp3
, es würde uns stattdessen geben C: \ Schienen \ mp3app \ mysong.mp3
wenn wir anrufen original_filename
. Wir können dies beheben, indem Sie den folgenden Code am Ende des Controllers hinzufügen:
private def sanitize_filename (Dateiname) just_filename = File.basename (Dateiname) just_filename.sub (/ [^ \ w \. \ -] /, '_') end
Der letzte Schritt beim Abschluss der Upload-Aktion besteht darin, einige Fehlerprüfungen und Routen hinzuzufügen. Die Art und Weise, wie Sie Fehler in Ruby überprüfen, ist mit a Start? Rettung? Ende
Aussage. Beim Hochladen einer Datei kann vieles schief gehen. Wenn also eine Fehlerprüfung durchgeführt wird, kann der Benutzer keine Fehlermeldung sehen, die Rails automatisch generiert. Hier ist die modifizierte Version der Upload-Aktion:
def upload begin AWS :: S3 :: S3Object.store (sanitize_filename (params [: mp3file] .original_filename), params [: mp3file] .read, BUCKET,: access =>: public_read) redirect_to root_path rescue render: text => " Das Upload-Ende konnte nicht abgeschlossen werden
Wenn ein Fehler auftritt, rendern wir nur einen Text, der den Benutzer darüber informiert. Obwohl dem Benutzer immer noch eine Fehlermeldung angezeigt wird, ist diese besser als eine riesige Liste von Code, der in einer von Rails generierten Fehlermeldung angezeigt wird.
Sie haben vielleicht bemerkt, dass es in dem Code, den wir bisher geschrieben haben, oftmals so etwas wie upload_path
wurde anstelle eines Controllers und einer Aktion verwendet. Wir können dies aufgrund einer Datei namens routes.rb tun. Dies teilt unserer Anwendung mit, auf welche URLs in unserer Anwendung zugegriffen werden kann. Wir geben auch bestimmte Pfade an, um die Aktualisierung des Codes zu erleichtern. So können Sie die Pfade benennen, die unsere Mp3app verwenden wird:
Übereinstimmung mit "songs / upload",: as => "upload" Übereinstimmung mit "songs / delete",: as => "delete" root: to => "songs # index"
Die Match-Methode gibt einen Pfad an, wie Lieder / Upload
, und gib ihm einen Namen, upload_path
. Dieser Name wird mit angegeben : as => "name"
als zweiter Parameter der Match-Methode. Schließlich gibt die Root-Methode an, welche Aktion die Root-Aktion ist, die in einer statischen HTML-basierten Website ähnlich wie index.html wirkt.
Nun ist die Implementierung der Funktionalität der Upload-Aktion abgeschlossen. Hier ist der endgültige Code für die songs_controller.rb
Datei bisher:
Klasse SongsController < ApplicationController def index @songs = AWS::S3::Bucket.find(BUCKET).objects end def upload begin AWS::S3::S3Object.store(sanitize_filename(params[:mp3file].original_filename), params[:mp3file].read, BUCKET, :access => : public_read) redirect_to root_path rescue render: text => "Upload konnte nicht abgeschlossen werden" end end def löschen if (params [: song]) AWS :: S3 :: S3Object.find (params [: song], BUCKET). delete redirect_to root_path else render: text => "Es wurde kein Song zum Löschen gefunden!" end end private def sanitize_filename (Dateiname) just_filename = File.basename (Dateiname) just_filename.sub (/ [^ \ w \. \ -] /, '_') end end
Und so sieht die Anwendung im Browser bisher aus.
Bislang ist unsere Bewerbung weit fortgeschritten. Der Benutzer kann jetzt Musik hochladen, eine Liste der aktuell hochgeladenen Musik anzeigen und vorhandene Musik löschen. Jetzt haben wir eine letzte Kernfunktionalität, die implementiert werden muss. Dies bedeutet, dass der Benutzer diese Musik tatsächlich herunterladen kann. Wie zu Beginn dieses Lernprogramms angegeben, kann der Benutzer dies auf drei Arten tun:
Im Moment wird die Musikliste nur in einer ungeordneten Liste angezeigt. Da wir jedoch am Ende jeder Zeile drei weitere Links hinzufügen (einen für jede Download-Methode), ist es sinnvoller, eine Tabelle zum Organisieren der Liste zu verwenden. Ändern Sie die Indexansicht entsprechend dieser Änderung:
Laden Sie vorhandene MP3s herunter und löschen Sie sie
<%= song.key %> | <%= link_to "Delete", "songs/delete/?song=" + song.key, :confirm => 'Möchten Sie' + song.key + 'wirklich löschen?' %> |
Jetzt können wir den Code hinzufügen, damit der Benutzer Musik herunterladen kann. Beginnen wir mit dem Herunterladen über HTTP, da dies am einfachsten zu implementieren ist.
Um über HTTP herunterzuladen, müssen wir nur ein neues hinzufügen
Datei application_helper.rb
. So erhalten Sie die URL: def download_url_for (song_key) AWS :: S3 :: S3Object.url_for (song_key, BUCKET,: authenticated => false) enden
Diese Methode akzeptiert nur einen Parameter, den Namen des Songs. Damit wir uns daran erinnern können, dass der Name des Songs über song.key aufgerufen wird, rufen wir den Parameter auf song_key
. Wie üblich greifen wir auf die AWS :: S3 :: S3Object
Klasse für die Interaktion mit Amazon S3-Objekten. Das url_for
Die Methode benötigt zwei Parameter, der dritte ist optional.
: authenticated => false
, die URLs würden alle in 5 Minuten ablaufen (standardmäßig).<%= link_to "Download", download_url_for(song.key) %>
Diese Das Herunterladen von Dateien von Amazon S3 über Bit Torrent ist dem Herunterladen über HTTP sehr ähnlich. In der Tat besteht der einzige Unterschied zwischen den beiden Download-URLs darin, dass der Torrent einen Torrent am Ende hat. Daher fügt unsere Hilfsmethode zum Generieren der Torrent-URL einfach am Ende der HTTP-URL Flutorrent hinzu. So würden Sie das machen: Jetzt müssen wir nur noch einen hinzufügen Das Streamen der Songs über HTML5-Audio ist etwas schwieriger als das Herunterladen des Songs. Beginnen wir also mit dem einfachen Teil: dem Hier ist der Code zum Erzeugen des Links: Jetzt müssen wir mit dem Javascript arbeiten, um den Audio-Tag der Seite hinzuzufügen, wenn dieser Link angeklickt wird. Zu diesem Zweck verwenden wir eine Technik, die der von Jeffrey Way in seinem Tutorial verwendeten Methode, dem HTML 5 Audio Element, ähnelt. Der erste Schritt ist ein paar Dinge zu unseren Ansichtsdateien hinzuzufügen. In unserer Dann, Ändern Sie den ersten Parameter für das ursprüngliche Include-Tag von: Standardeinstellungen in Im Anschluss an das HTML5-Design verwenden wir ein Abschnitts-Tag anstelle eines Div, um unseren Audio-Abschnitt zu erstellen. Wir erhalten einen Verweis auf den Audioabschnitt und zwischenspeichern ihn in einer Variablen, was als Best Practice gilt. Als Nächstes müssen wir unseren Links mit der Klasse html 5 einen Click-Ereignishandler hinzufügen. Wenn der Event-Handler abläuft, müssen wir ein paar Dinge tun: Da es sich bei diesem Tutorial um Ruby on Rails und nicht um JavaScript handelt, werde ich nicht detailliert auf die Funktionsweise dieses Codes eingehen. Der Code ist jedoch ziemlich einfach, daher sollte es Ihnen leicht fallen, dies herauszufinden. Beachten Sie, dass dies nur in Browsern funktioniert, die HTML5 unterstützen und MP3s als gültige Quellen für Audiotags unterstützen. Für die meisten Browser unterstützt die neueste Version diesen HTML 5-Code, ältere Browser unterstützen dies jedoch nicht. Wir haben nun alle Kernfunktionen für diese Anwendung fertiggestellt. Der Benutzer kann MP3-Dateien auf verschiedene Arten hochladen, herunterladen und löschen, darunter HTML5-Audio, HTTP-Downloads und Bit Torrent. So sollte die Indexansicht an dieser Stelle aussehen: Wenn Sie dies noch nicht getan haben, sollten Sie diesen Code ausführen und für sich selbst ausprobieren. Sie können dies tun, indem Sie den Befehl ausführen: Zuerst müssen Sie die Seite in einen Container einpacken, damit wir sie zentrieren können. Alles, was wir tun müssen, ist ein div mit einer ID des Containers um die Yield-Anweisung in der Layoutdatei zu platzieren, so dass es ungefähr so aussieht: Als nächstes verwenden wir das Styling von Ryan Bates, Jetzt werden wir die Indexansicht bearbeiten. Als Erstes müssen wir die Seite in drei Abschnitte unterteilen. Diese Abschnitte werden eine Kopfzeile, ein Hauptabschnitt und eine Seitenleiste sein. Fügen Sie oben auf der Seite eine einfache Kopfzeile hinzu: Als Nächstes teilen wir die Seite in einen Hauptbereich und einen Seitenleistenbereich auf. Unser Hauptbereich besteht aus der Liste der Titel, während die Seitenleiste das HTML5-Audio und das Upload-Formular enthält. So ändern wir den Code: Da wir Floats verwenden werden, um diese Seite zu entwerfen, müssen Sie die Floats vorher und danach löschen, um sicherzustellen, dass das Layout nicht durcheinander gerät. Fügen wir nun das CSS hinzu, um das Layout dieser Abschnitte anzupassen: Die Seitenleiste beträgt 30% der Seite und der Hauptbereich beträgt 70% der Seite. Darüber hinaus gibt es CSS, um die Unterstreichung von den Links zu entfernen, es sei denn, der Mauszeiger befindet sich über dem Link Hoffentlich haben Sie jetzt ein gutes Verständnis dafür, wie Sie mit Amazon S3 von Ihrer Ruby on Rails-Anwendung aus interagieren. Mit dem Ich bin mir sicher, dass Sie für diejenigen unter Ihnen, die Ruby on Rails-Experten sind, einen Weg finden können, diese Anwendung noch weiter zu optimieren. Darüber hinaus ist es hilfreich, alle Optimierungen, die Sie im Kommentarbereich vornehmen, mitzuteilen, damit die Leser dieses Tutorial noch besser nutzen können. wechselt zwischen dem Namen des Songs und dem Lösch-Link (dies ist jedoch eine persönliche Präferenz, sodass Sie die Links in beliebiger Reihenfolge auswählen können).
Herunterladen über Bit Torrent
def torrent_url_for (song_key) download_url_for (song_key) + "? torrent" ende
zu unserem Tisch:
<%= link_to "Torrent", torrent_url_for(song.key) %>
Streaming mit HTML5-Audio
dafür. Es wird jedoch einige Unterschiede zu den Links geben, die wir für HTTP und Bit Torrent hinzugefügt haben.
tag, also geben wir ihm einfach die gleiche URL wie beim HTTP-Download. Dies wird auch als Fallback für Browser mit deaktiviertem Javascript dienen, da wir JavaScript verwenden, um das hinzuzufügen Tag auf der Seite.
<%= link_to "HTML5 Audio", download_url_for(song.key), :class => "html5"%> layout / application.html.erb
Datei, wir müssen die neueste Version von jQuery enthalten, da dies die Javascript-Bibliothek ist, die wir verwenden werden. Hier ist der Code, der direkt vor der ersten Javascript-Zeile eingefügt werden muss: <%= javascript_include_tag "https://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js" %>
application.js
, Wir speichern unseren Javascript-Code, und die anderen Standard-JavaScript-Dateien sind nicht erforderlich. Als Nächstes müssen wir unserer index.html.erb-Ansicht einen Abschnitt hinzufügen, um das Audio-Tag einzufügen. Oben in dieser Ansicht müssen wir den folgenden Code einfügen:
Hören Sie eine MP3 mit HTML5-Audio
$ (document) .ready (Funktion () var audioSection = $ ('section # audio'); $ ('a.html5'). click (Funktion () var audio = $ ('
Abgeschlossene Indexansicht
Hören Sie eine MP3 mit HTML5-Audio
Laden Sie eine neue MP3 hoch
<%= form_tag upload_path, :method => "post",: multipart => true do%> <%= file_field_tag "mp3file" %> <%= submit_tag "Upload" %> <% end %> Laden Sie vorhandene MP3s herunter und löschen Sie sie
<% @songs.each do |song| %>
<% end %> <%= song.key %> <%= link_to "HTML5 Audio", download_url_for(song.key), :class => "html5"%> <%= link_to "Download", download_url_for(song.key) %> <%= link_to "Torrent", torrent_url_for(song.key) %> <%= link_to "Delete", "songs/delete/?song=" + song.key, :confirm => 'Möchten Sie' + song.key + 'wirklich löschen?' %> Schienen s
. Auch wenn wir die Kernfunktionalität für diese Anwendung fertiggestellt haben, gibt es noch einige Dinge zu tun, z. B. das Gestalten der Seite. Lass uns das jetzt machen.
Gestaltung der Anwendung
nifty_generators
, um unserer Anwendung etwas grundlegendes Styling zu geben. Hier ist das CSS, das wir von diesem Edelstein verwenden werden: #container width: 75%; Marge: 0 auto; Hintergrundfarbe: #FFF; Polsterung: 20px 40px; Rand: fest 1px schwarz; Rand oben: 20px; body Hintergrundfarbe: # 4B7399; Schriftfamilie: Verdana, Helvetica, Arial; Schriftgröße: 14px; .clear clear: beide; Höhe: 0; Überlauf versteckt;
Meine erste Musik-Streaming-Anwendung
HTML5-Audio
Einen Song hochladen
<%= form_tag upload_path, :method => "post",: multipart => true do%> <%= file_field_tag "mp3file" %>
<%= submit_tag "Upload" %> <% end %> Songs herunterladen / löschen
<% @songs.each do |song| %>
<% end %> <%= song.key %> <%= link_to "HTML5 Audio", download_url_for(song.key), :class => "html5"%> <%= link_to "Download", download_url_for(song.key) %> <%= link_to "Torrent", torrent_url_for(song.key) %> <%= link_to "Delete", "songs/delete/?song=" + song.key, :confirm => 'Möchten Sie' + song.key + 'wirklich löschen?' %> # Seitenleiste Breite: 30%; Schwimmer: links; #main width: 70%; Schwimmer: links; a, a: besuchte color: # 00f; Textdekoration: keine; a: hover Textdekoration: Unterstreichung; td padding: 5px;
Tags, damit es nicht so eng aussieht. Am Ende ist dies wirklich das einzige CSS, das wir benötigen, um der Seite ein grundlegendes Layout zu geben. Sie können der Anwendung so viel Stil hinzufügen, wie Sie möchten, denn es gibt durchaus Möglichkeiten, diese Anwendung schöner aussehen zu lassen.
Fazit
aws-s3
Gem, dies ist sehr einfach. Das Hinzufügen zu einer vorhandenen Anwendung wird sehr wenig Zeit in Anspruch nehmen. Fühlen Sie sich frei, diese Anwendung auf beliebige Weise zu ändern, um zu sehen, ob Sie sie auf irgendeine Weise verbessern können. Vergessen Sie nicht, Ihre eigenen Amazon S3-Anmeldeinformationen und die Bucket-Konstante in die application.rb
Datei, sonst startet die Anwendung nicht!