Показ дописів із міткою carrierwave. Показати всі дописи
Показ дописів із міткою carrierwave. Показати всі дописи

вівторок, 22 травня 2012 р.

CarrierWave з DataMapper у Sinatra

У вільний час займаюся розробкою веб-додатку на Sinatra з використанням DataMapper. І ось задався питанням завантаження аватарів на сервер та їх після-обробкою.

Переглянувши доступні інструменти для забезпечення цієї функціональності, вибір впав на бібліотеку CarrierWave, яка на відміну від більшості інших не зав'язана на Rails/ActiveRecord.

CarrierWave описує себе, як "першокласне рішення для завантаження файлів для Rails, Sinatra та інших веб-додатків на основі Rack". Проект був започаткований у серпні 2008 року, і перший випуск відбувся в березні 2009 року. Перша його назва була Merb::Upload і він був без підтримки Rails.

Той факт, що CarrierWave почав своє життя в якості плагіна для Merb може пояснити його модульність, гнучкість і розширюваність.

Завдяки fog, він має підтримку Amazon S3, Rackspace Cloud Files і Google Storage for Developers. Він також підтримує звичайне зберігання файлів і GridFS в MongoDB.
Має підтримку незліченної кількості ORM: ActiveRecord, Mongoid, DataMapper, Sequel, MongoMapper, CouchDB.
Обробка зображення доступна засобами RMagick, ImageScience або MiniMagick.
Сама по собі ця бібліотека дуже добре документована, і якщо раптом когось цікавлять деталі, то читайте wiki.

У цій статті для прикладу ми напишемо просту фотогалерею.
Наступні gem`и повинні бути встановлені:
  • sinatra
  • datamapper
  • dm-sqlite-adapter
  • slim
  • carrierwave - для завантаження зображень
  • carrierwave-datamapper - для зв'язку DataMapper і CarrierWave
  • rmagick - для створення мініатюр зображень(в Ubuntu потрібно встановити пакет libmagick++-dev)