[Rails] Sprachposting-Funktion ~ Cloudinary, CarrierWave

Einführung

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.

Annahme

Im Tweet-Modell ist die Textposting-Funktion abgeschlossen.

Zuerst, ...

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!

Audiospalte hinzufügen

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 %>

Edelstein hinzufügen

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

carrierwave cloudinary

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

Uploader erstellen

Erstellen Sie mit dem CarrierWave-Generator einen Uploader. Geben Sie den folgenden Befehl in das Terminal ein.

Terminal


$ rails g uploader Audio

Modelländerung

Ä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)

Privater API-Schlüssel

Jedes Cloudinary-Konto erhält einen "Cloud-Namen", einen "API-Schlüssel" und ein "API-Geheimnis".

Cloudinary My Page

Cloudinary_Management_Console_-_Dashboard_png.png

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.

スクリーンショット_2018-10-17_2_03_28.png

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!

Verwendung des API-Schlüssels

Dies ist der letzte Schritt! Erstellen Sie zunächst eine cloudinary.yml-Datei im Konfigurationsordner.

スクリーンショット_2019_10_20_1_11.png

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 (^^) /

Offizielle Dokumentation

carrierwave cloudinary dotenv-rails

Recommended Posts

[Rails] Sprachposting-Funktion ~ Cloudinary, CarrierWave
[Rails] Implementieren Sie die Image-Posting-Funktion
[Rails] Bildbeitrag von CarrierWave [AWS EC2]
[Rails] Carrierwave einführen
[Schienen] Kategoriefunktion
Schienen folgen der Funktion
[Rails] Benachrichtigungsfunktion
Buchungsfunktion implementiert durch asynchrone Kommunikation in Rails
Laden Sie einfach mehrere Bilder mit Rails Rails + Carrierwave + Cloudinary hoch
[Ruby on Rails] Asynchrone Kommunikation der Posting-Funktion, Ajax
[Ruby on Rails] Post-Score-Ranking-Funktion (gesamte Anzeige)
[Rails] Tag-Ranking-Funktion
Implementieren Sie die Anwendungsfunktion in Rails
Suchfunktion mit [Rails] Ransack
[Schienen] Speichern Sie Bilder mit Carrierwave
[Rails] Implementierung der Kategoriefunktion
Schienen ~ Die Nachrichtenfunktion verstehen ~
[Rails] EC-Site-Cart-Funktion
[Rails] Implementierung der Tutorial-Funktion
[Rails] Implementierung einer ähnlichen Funktion
[Ruby on Rails] Posting-Funktion, die nur angemeldete Benutzer posten können