Biliyorsunuz ki cloudinary bize görsel yükleme, görselleri boyutlandırıp kırpabilme ve manipüle edebilme olanakları sağlayan bir bulut servisi. Ücretsiz olan paketi (2 GB alan ve 5 GB aylık trafik) de birçoğumuzun işini görüyor. Kayıt Ol
Gemfile dosyamıza cloudinary ve carrierwave gemlerini ekleyelim.
1 2 |
gem 'carrierwave' gem 'cloudinary' |
Cloudinary hesabınıza girip cloudinary.yml dosyasını indirip config/ dizinine atın.
Artık bir uploader oluşturabiliriz. Rails dizininde konsoldan şu şekilde oluşturuyoruz;
1 |
rails g uploader profile_picture |
Dosyayı açıp aşağıdaki şekilde carrierwave’i include etmiş oluyoruz. Burada storage ve store_dir satırlarını yorum satırına düşürelim. Çünkü biz dosyayı Cloudinary’ye yükleyeceğiz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
class ProfilePictureUploader < CarrierWave::Uploader::Base # Include RMagick or MiniMagick support: # include CarrierWave::RMagick # include CarrierWave::MiniMagick # Choose what kind of storage to use for this uploader: # storage :file # storage :fog # Override the directory where uploaded files will be stored. # This is a sensible default for uploaders that are meant to be mounted: # def store_dir # "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" # end include Cloudinary::CarrierWave end |
Modelimizde resim için bir alan olmadığını düşünerek migration oluşturuyorum. Ben user modeline profile_picture ekleyeceğim.
1 2 |
rails g migration AddPictureToUser picture rake db:migrate |
Şimdi modelimize uploader’ı bildirelim.
1 |
mount_uploader :picture, ProfilePictureUploader |
View kısmında birkaç ekleme yapalım.
1 2 |
<legend>Avatar</legend> <%= f.file_field :picture %> |
1 |
<% unless @user.picture_url.nil? %><%= image_tag @user.picture_url %><br /><% end %> |
Şu durumda sorunsuz bir şekilde çalışması gerek.
Yeniden Boyutlandırma
Biliyorsunuz ki cloudinary servisi boyutlandırma/kırpma gibi konularda çok başarılı. Bu bağlamda Uploader dosyamıza birkaç ekleme yapalım.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
class ProfilePictureUploader < CarrierWave::Uploader::Base include Cloudinary::CarrierWave version :display do process :eager => true process :resize_to_fill => [200, 200, :north] end version :thumbnail do process :eager => true process :resize_to_fill => [50, 50] end end |
Bu değişikliklerden sonra view’de şu şekilde kullanabilirsiniz
1 2 |
<%= image_tag @user.picture_url :display %> <%= image_tag @user.picture_url :thumbnail %> |
İşte bu kadar! Daha detaylı bilgi için cloudinary ruby on rails integration sayfasına bakabilirsiniz.
Bir cevap yazın