Dieser Artikel implementiert die Funktion zum Posten von Audiodateien.
Verwenden Sie Cloudinary (externer Speicher). Mit einem kostenlosen Tarif können Sie bis zu 1 GB pro Monat verwenden.
Im Tweet-Modell ist die Textposting-Funktion abgeschlossen.
Registrieren Sie Ihr Konto bei Cloudinary! Vergessen Sie nicht, sich bei der Mail-Anzeige zu registrieren!
https://cloudinary.com/
Beginnen Sie nach dem Erwerb des oben genannten Kontos mit den folgenden Arbeiten!
Fügen Sie der Tweets-Tabelle eine Audiospalte vom Typ string hinzu.
Terminal
$ rails generate migration AddAudioToTweets audio:string
Terminal
$ rails db:migrate
Die URL (Adresse) der Audiodatei wird in diese Audiospalte geschrieben. Die Audiodatei selbst wird an einem anderen Ort gespeichert.
Index.html.erb
Schreiben Sie den Code zum Abspielen der Audiodatei
erb:app/views/tweets/index.html.erb
<% @tweets.each do |t| %>
<%= audio_tag t.audio_url, :controls => true if t.audio? %>
<% end %>
controls =>true zeigt das Controller-Panel an.
Darüber hinaus bietet audio_tag die folgenden Optionen.
``: Autoplay`` Autoplay
``: loop`` Loop-Wiedergabe
### Starke Parameter
Beschreiben Sie den starken Parameter, damit der Audioparameter empfangen werden kann.
#### **`tweets_controller.rb`**
```ruby
#Ausgelassen
private
def tweet_params
params.require(:tweet).permit(:body, :audio)
end
new.html.erb
Schreiben Sie den Code, um die Datei hochzuladen.
erb:app/views/tweets/new.html.erb
<%= form_for @tweet do |f| %>
<div class="field">
<%= f.label :audio %>
<%= f.file_field :audio %>
</div>
<%= f.submit "Tweet" %>
<% end %>
Dieses Mal werden wir Cloudinary und ein Juwel namens Carrierwave verwenden. Fügen Sie am Ende Ihrer Gemfile Folgendes hinzu:
Gemfile
gem 'carrierwave'
gem 'cloudinary'
Terminal
$ bundle install
Um jeden Edelstein kurz zu erklären Carrierwave: Juwel, mit dem Sie Dateien mit Schienen hochladen können cloudinary: Juwel, um Cloudinary des externen Speicherdienstes verfügbar zu machen
Erstellen Sie mit dem CarrierWave-Generator einen Uploader. Geben Sie den folgenden Befehl in das Terminal ein.
Terminal
$ rails g uploader Audio
Ändern Sie app / models / tweet.rb wie folgt.
app/models/tweet.rb
class Tweet < ApplicationRecord
#Nachtrag von hier
mount_uploader :audio, AudioUploader
#Nachtrag bis hierher
end
audio,Audio-Uploader bedeutet, dass die Audiodatei am angegebenen Speicherort gespeichert wird.
Als nächstes folgen die Uploader-Einstellungen, die den Speicherort angeben.
Lassen Sie uns die 6. bis 8. Zeile von app / uploaders / image_uploader.rb ändern.
#### **`app/uploaders/audio_uploader.rb`**
```ruby
# Choose what kind of storage to use for this uploader:
storage :file
# storage :fog
Ändern Sie die obigen Angaben wie in der folgenden Abbildung gezeigt.
app/uploader/audio_uploader.rb
# Choose what kind of storage to use for this uploader:
if Rails.env.production?
include Cloudinary::CarrierWave
CarrierWave.configure do |config|
config.cache_storage = :file
end
else
storage :file
end
# storage :fog
cloudinary ist ein externer Speicherdienst. In der Produktionsumgebung (nach Release = Produktion) wird das Image in Cloudinary gespeichert, und in anderen Fällen (Entwicklungsumgebung = lokal) wird es auf Ihrem eigenen PC gespeichert. (Im öffentlichen Ordner gespeichert)
Jedes Cloudinary-Konto erhält einen "Cloud-Namen", einen "API-Schlüssel" und ein "API-Geheimnis".
Erhöhen Sie die Sicherheit, um zu verhindern, dass das Cloudinary-Konto nach außen gelangt.
Hier werden wir einen Edelstein namens Dotenv-Rails verwenden. Fügen Sie am Ende Ihrer Gemfile Folgendes hinzu:
Gemfile
gem 'dotenv-rails'
Terminal
$ bundle install
Installieren.
Erstellen Sie dann selbst eine Datei mit dem Namen ".env" im ** Anwendungsverzeichnis (dem Verzeichnis, in dem sich app, db und Gemfile befinden) **. Wenn es wie in der Abbildung unten aussieht, ist es in Ordnung.
Geben Sie dann Folgendes in die von Ihnen erstellte .env-Datei ein.
.env
CLOUD_NAME=q0w9e8r7t6yu5 #← Dieser Wert variiert von Person zu Person! !!
CLOUDINARY_API_KEY=123456789012345 #← Dieser Wert variiert von Person zu Person! !!
CLOUDINARY_API_SECRET=1a2s3d4f5g6h7j8k9l0a1s2d4f5g6h1q #← Dieser Wert variiert von Person zu Person! !!
Schreiben Sie hier jeden Wert nach "=" mit dem in Cloudinary My Page erhaltenen Schlüssel neu (der Schlüssel, den Sie erhalten haben, ist absolut anderer). Sag es nicht !! Auch die Zahlen variieren von Person zu Person. Löschen Sie beim Umschreiben ** den auskommentierten Teil **!
Veröffentlichen Sie schließlich nicht die .env-Datei, die die Daten definiert, die Sie ausblenden möchten.
Fügen Sie Folgendes zu .gitignore
hinzu.
** * Wenn die Datei ".gitignore" nicht vorhanden ist, erstellen Sie sie im Anwendungsverzeichnis! ** </ font>
.gitignore
#Kürzung
/.env
Das ist in Ordnung!
Dies ist der letzte Schritt! Erstellen Sie zunächst eine cloudinary.yml-Datei im Konfigurationsordner.
Kopieren Sie es einfach und fügen Sie es wie folgt in config / cloudinary.yml ein.
config/cloudinary.yml
development:
cloud_name: <%= ENV['CLOUD_NAME'] %>
api_key: <%= ENV['CLOUDINARY_API_KEY'] %>
api_secret: <%= ENV['CLOUDINARY_API_SECRET'] %>
enhance_image_tag: true
static_file_support: false
production:
cloud_name: <%= ENV['CLOUD_NAME'] %>
api_key: <%= ENV['CLOUDINARY_API_KEY'] %>
api_secret: <%= ENV['CLOUDINARY_API_SECRET'] %>
enhance_image_tag: true
static_file_support: false
test:
cloud_name: <%= ENV['CLOUD_NAME'] %>
api_key: <%= ENV['CLOUDINARY_API_KEY'] %>
api_secret: <%= ENV['CLOUDINARY_API_SECRET'] %>
enhance_image_tag: true
static_file_support: false
Sie können den API-Schlüssel jetzt verwenden, während Sie ihn privat halten.
Sie können jetzt Audiodateien veröffentlichen. Vielen Dank für Ihre harte Arbeit (^^) /
carrierwave cloudinary dotenv-rails
Recommended Posts