Advertisement
  1. Code
  2. Ruby

Загрузка изображений в Rails с помощью Dragonfly

Read Time:6 minsLanguages:

Russian (Pусский) translation by Marat Amerov (you can also view the original English article)

Загрузка файлов - важный функционал в веб-приложениях. Помимо того, что пользователи могут загружать фотографии с профилями, использование функционала загрузки файлов этим не ограничивается. Я продемонстрировал вам, как добавлять загрузку файлов в ваше Rails приложение, используя различные гемы. Сегодня я покажу вам, как сделать то же самое с помощью Dragonfly.

Dragonfly - очень гибкий Ruby гем для обработки изображений и других вложений, который уже используется на тысячах веб-сайтов.

У Вас может быть задача добавления загрузку файлов в Rails приложение,  и возможно Вы не захотите использовать другие гемы. Вы можете взять Dragonfly, и определенно, не пожалеть об этом.

В этом уроке Вы создадите простое Rails приложение ; Я назвал своё — Dragon-Uploader. Приложение будет иметь только один функционал: загрузка изображений.

Установка ImageMagick

Чтобы использовать Dragonfly, Вам необходимо установить ImageMagick на вашу систему. Следуйте инструкциям ниже, в зависимости от вашей операционной системы.

Для пользователей Mac:

brew install imagemagick

Для пользователей Ubuntu:

sudo apt-get install imagemagick

Создание Rails приложения

rails new dragon-uploader -T

Параметр -T гарантирует, что ваше Rails приложение будет создано без стандартного набора тестов.

Перейдите в свой Gemfile и добавьте гем dragonfly.

Не забудьте запустить бандлер.

bundle install

Давайте сгенерируем наш контроллер.

rails generate controller Photos

Интеграция Dragonfly

Первым шагом к интеграции Dragonfly в ваше Rails приложение является запуск команды генерации dragonfly с вашего терминала.

rails generate dragonfly

Это команда создаст файл инициализации для Dragonfly в папке config/initializers.

Файл выглядит следующим образом:

rails generate model Photo

Dragonfly предоставляет акцессор, который Вам нужно будет добавить в вашу модель. С помощью него Вы получите доступ к чтению записи изображения.

Теперь перейдите к вашему файлу миграции и добавьте столбцы.

Примечание: Если вы используете avatar, а не image, как я сделал выше, Вы должны изменить столбец на avatar_uid.

Миграция базы данных:

rake db:migrate

Настройте свой PhotosController с необходимыми экшенами для загрузки изображения. Он должен выглядеть так:

Вам нужно будет настроить маршруты.

Пока добавьте маршруты к трем экшенам, которые вы создали.

Вам нужно настроить представления, как показано ниже:

Мы вернемся к этим представлениям позже.

Валидация

В целях безопасности, не стоит предоставлять своим пользователям привилегию загрузки файлов любого типа. Dragonfly предоставляет вам необходимые методы для этого в ваших инициализаторах.

Теперь отредактируйте  модель Photo, чтобы она выглядела так, как показано ниже:

Вот полный список валидаторов, которые предлагает Dragonfly:

Вы можете больше узнать об этом в документации Dragonfly.

Вы также должны рассмотреть возможность предоставления пользователям возможности редактировать свои сохраненные изображения. Для этого нам нужно добавить два экшена в наш PhotosController и создать страницу редактирования в наших представлениях. Возможно, Вы захотите добавить экшены «delete» и «show», пока Вы находитесь в контроллере:

Если вы попытаетесь открыть страницу show или edit, вам будут показаны ошибки. Это связано с тем, что мы ограничили маршрут следующим: new,: index и: update. Теперь его нужно изменить; Он должен выглядеть следующим образом:

Заключение

At this point, you can now integrate Dragonfly into your Rails application. Be sure to check out the documentation if you want to try more features not mentioned here. I hope you enjoyed it.

Remember, you can always add feedback, questions, and comments in the form below.

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.