CarrierWave integration
jos kannatat kuvien dynaamista lataamista Ruby On Rails-sovellukseesi, kuvat on todennäköisesti liitetty tiettyyn mallikokonaisuuteen. Rails käyttää Malliyksiköille oletusarvoisesti Activerecordia, kun taas Mongoididokumentteja käytetään MongoDB-pohjaisessa mallissa. Esimerkkejä voivat olla kuvan pitäminen Post-yksikön ”picture” – attribuuttina tai käyttäjäyhteisön ”profile_picture” – attribuuttina.
Karrierwave-jalokivestä voi olla hyötyä kuvanlatausten integroimisessa malliisi. Oletusarvoisesti CarrierWave tallentaa kuvia paikalliselle kiintolevylle, mutta siinä on myös lisäosia kuvien tallentamiseen ja manipulointiin.
Pilvikivi tarjoaa liitännäisen Karrierwavelle. Käyttämällä tätä plugin avulla voit nauttia eduista CarrierWave helposti lataamalla kuvia HTML lomakkeet malliin, nauttien suuria etuja Cloudinary: ladatut kuvat tallennetaan pilveen, muunnetaan ja manipuloidaan pilvi, ja toimitetaan automaattisesti CDN.
CarrierWave asennus ja asennus
jos haluat käyttää valinnaista integraatiomoduulia kuvien lataamiseen Activerecordilla tai Mongoidilla CarrierWave-ohjelmalla, asenna CarrierWave-jalokivi:
gem install carrierwave
kiskot 3.X Gemfile:
gem 'carrierwave'gem 'cloudinary'
kiskot 2.X ympäristö.rb
config.gem 'carrierwave', :version => '~> 0.4.10'config.gem 'cloudinary'
Huomautus
Karrierwave-jalokivi tulee ladata ennen Pilvihelmeä.
Upload examples
alla on lyhyt esimerkki, joka osoittaa Cloudinaryn käytön Carrierwaven kanssa Rails-projektissa. Tässä esimerkissä käytämme Post model entity tukemaan kuvan liittämistä jokaiseen viestiin. Liitteenä olevia kuvia hallinnoidaan Post-yksikön ”picture” – attribuutilla (sarake).
aloittaaksesi määrittele ensin CarrierWave uploader-luokka ja käske sen käyttää Cloudinary-liitännäistä. Lisätietoja on CarrierWave-dokumentaatiossa.
tässä esimerkissä muunnamme ladatun kuvan PNG: ksi ennen sen tallentamista pilveen. Annamme sille myös post_picture
– tägin. Määrittelemme kaksi muuta muutoksia tarvitaan näyttämään kuvan sivustollamme: ’standard ’ ja’thumbnail’. Satunnaisesti luotu yksilöllinen Julkinen tunnus luodaan jokaiselle ladatulle kuvalle ja tallennetaan pysyvästi malliin.
seuraavassa esimerkissä määrittelemme yksiselitteisesti public_id: n ”post” – olion ”short_name” – attribuutin sisällön perusteella.
Postin ”kuva” – attribuutti on yksinkertaisesti merkkijono (DB-migraatiokomentoa tarvitaan tietenkin). Kiinnitämme sen juuri määrittelemäämme ”PictureUploader” – luokkaan:
class Post < ActiveRecord::Base ... mount_uploader :picture, PictureUploader ...end
meidän HTML-muodossa Post editointi, lisäämme tiedostokentän lataamiseen kuvan ja myös piilotettu ’välimuisti’ kenttä tukee sivun uudelleenlataus ja validointi virheitä menettämättä ladattu kuva. Alla oleva esimerkki on ’HAML’ (voit tietenkin tehdä täsmälleen saman käyttämällä ’ERB’):
= form_for(:post) do |post_form| = post_form.hidden_field(:picture_cache) = post_form.file_field(:picture)
rekisterinpitäjässämme Tallennamme tai päivitämme postauksen attribuutteja normaalilla tavalla. Esimerkiksi:
post.update_attributes(params)
Huomautus
jos lataat kuvia selaimesta suoraan Cloudinaryyn, rekisterinpitäjälle lähetetään allekirjoitettu tunniste varsinaisen kuvatiedon sijaan. Cloudinaryn CarrierWave-liitännäinen käsittelee saumattomasti suoria tunnisteita, tarkastaa allekirjoituksen ja päivittää mallin viittauksella ladattuun kuvaan.
tässä vaiheessa käyttäjän palvelimellesi lataama kuva ladataan Cloudinaryyn, joka myös määrittää määritetyn julkisen tunnuksen ja tagin ja muuntaa sen PNG: ksi. Julkinen tunnus yhdessä ladatun kuvan version kanssa tallennetaan Post-yksikkömme ’kuva’ – attribuuttiin. Huomaa, että oletusarvoisesti muunnoksia ei synny tässä vaiheessa, vaan ne syntyvät vain, kun loppukäyttäjä käyttää niitä ensimmäistä kertaa. Tämä on totta, ellei täsmennetä ”process :eager => true ”tai yksinkertaisesti” eager ” jokaiselle muunnokselle.
nyt voit käyttää image_tag
– standardin mukaisia kutsuja lataamiesi kuvien ja niistä johdettujen muunnosten näyttämiseen, ja Pilvikivi luo automaattisesti oikean täyden URL-osoitteen resursseihisi pääsyä varten.:
image_tag(post.picture_url, :alt => post.short_name)image_tag(post.picture_url(:thumbnail), :width => 50, :height => 50)
Custom ja dynaaminen muunnokset
Cloudinary ’ s plugin CarrierWave tukee kaikkia tavanomaisia CarrierWave kokoa ja rajaa vaihtoehtoja. Lisäksi voit käyttää mitä tahansa cloudinaryn tukemaa mukautettua muunnosta cloudinary_transformation
– menetelmällä. Kutsuminen cloudinary_transformation
voidaan tehdä myös yhdessä tavallisten CarrierWave resize-ja crop-menetelmien kanssa. Seuraavassa uploader-luokassa on yleinen esimerkki mukautettujen muunnosten käytöstä:
voit viedä tämän pidemmälle ja soveltaa ketjutettuja muunnoksia monimutkaisempien tulosten saavuttamiseksi. Näitä muunnoksia voidaan soveltaa saapuvana muunnoksena lataamisen aikana tai osana eri versioita, jotka syntyvät joko laiskasti tai innokkaasti lataamisen aikana. Seuraavassa yläluokkaluokassa on tällaisia ketjutettuja muunnoksia, joita sovelletaan cloudinary_transformation
– menetelmän parametrilla transformation
.
joillakin verkkosivustoilla on graafinen suunnittelu, joka pakottaa ne näyttämään samat kuvat monissa eri ulottuvuuksissa. Muodollisesti määrittelemällä useita lataajaversioita voi olla vaivalloista. Voit silti käyttää Carrierwavea ja hyödyntää Cloudinaryn dynaamisia muunnoksia soveltamalla haluttuja muunnoksia samalla kun rakennat näkymää. Mikä tahansa versio voidaan luoda dynaamisesti näkymästäsi ilman riippuvuutta CarrierWave-versioista. Voit tehdä tämän käyttämällä full_public_id
– attribuuttia cl_image_tag
rakentaaksesi pilvipohjaisia muunnos-URL-osoitteita malliisi liitetyille ladatuille kuville.
cl_image_tag(post.picture.full_public_id, :format => "jpg", :width => 100, :height => 200, :crop => :crop, :x => 20, :y => 30, :radius => 10)
mukautettu koordinaattipohjainen rajaus
jos annat käyttäjien valita rajausalueen manuaalisesti, suosittelemme pitämään X, y-koordinaatit jatkuvasti mallissa, jotta eri rajaus alkuperäiseen kuvaan voidaan tulevaisuudessa tehdä. Seuraava latausluokka hakee muokatut koordinaatit model
kohteen attribuuteista. Tässä esimerkissä käytetty custom_crop
– menetelmä palauttaa haettavaksi Hash-arvon muista pilvimuunnosparametreista.
jos haluat tallentaa vain rajatun version kuvasta, voit käyttää tulevaa muunnosta. Näin alkuperäistä kuvaa ei tallenneta pilveen, vaan ainoastaan rajattu versio. Voit sitten käyttää muita muutoksia rajatun kuvan koon muuttamiseen. Seuraavassa esimerkissä kutsutaan process :custom_crop
itse luokassa (”version” sijaan), kun taas mukautetut koordinaatit pidetään mallin muuttuvina attribuutteina (määritelty attr
sen sijaan, että ne säilyisivät jatkuvasti).