Help us understand the problem. What is going on with this article?

libvipsを使ってRails6でActiveStorageする【Windows,Ubuntu環境】

More than 1 year has passed since last update.

この記事でつくるもの

RailsのActiveStorageを使って簡単なサムネイル表示するCRUDを作成します。
tmp.gif

手順

  • Ubuntuにlibvipsの最新ソースを持ってきて、ビルドとインストール
  • UbuntuからWindow環境をマウントしてrails new
  • ActiveSrorageに必要なRailsコマンドと設定
  • 必要なgemのインストール
  • Ubuntuからrails s

Ubuntuにlibvipsの最新ソースを持ってきて、ビルドとインストール

RailsのActiveStorageはlibvipsまたはImageMagickが必要です。
この記事では実行速度の速いlibvipsを使用します。

まずは必要なパッケージをインストールします。

Ubuntu
$ sudo apt-get install git build-essential libxml2-dev libfftw3-dev \
    libmagickwand-dev libopenexr-dev liborc-0.4-0 \
    gobject-introspection libgsf-1-dev \
    libglib2.0-dev liborc-0.4-dev


gitソースから取得したソースをビルドするのに必要なパッケージ

Ubuntu
$ sudo apt-get install automake libtool swig gtk-doc-tools 


libvips取得し、ビルドとインストール

Ubuntu
$ git clone https://github.com/libvips/libvips.git
$ cd libvips
libvips$ ./autogen.sh
libvips$ make
libvips$ sudo make install


PATHの設定

Ubuntu
$ export VIPSHOME=/usr/local
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$VIPSHOME/lib
$ export PATH=$PATH:$VIPSHOME/bin
$ export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:$VIPSHOME/lib/pkgconfig
$ export MANPATH=$MANPATH:$VIPSHOME/man

UbuntuからWindow環境をマウントしてrails new

UbuntuではWindow環境をマウントして参照できます。
Windowsからの方がソース編集しやすいので、マウントしてrails newします。

Ubuntu
$ cd /mnt/c/tmp_rails
/mnt/c/tmp_rails$ rails new sample
/mnt/c/tmp_rails$ cd sample

ActiveSrorageに必要なRailsコマンドと設定

ActiveSrorageを使うためのマイグレーションファイルを作成

Ubuntu
/mnt/c/tmp_rails/sample$ rails active_storage:install


Userモデルをscaffoldで作成

Ubuntu
/mnt/c/tmp_rails/sample$ rails g scaffold user name image:attachment


Userモデルにはimage:attachmentによりhas_one_attachedが追加される

app/models/user.rb
class User < ApplicationRecord
  has_one_attached :image
end


モデルをマイグレーションする

Ubuntu
/mnt/c/tmp_rails/sample$ rails db:migrate


showページでサムネイル表示するようにする

app/views/users/show.html.erb
<p>
  <strong>Image:</strong>
  <%= image_tag @user.image.variant(resize_to_limit: [100, 100]) %>
</p>


libvipsを使うように指定

app/config/application.rb
module Sample
  class Application < Rails::Application
    config.load_defaults 6.0
    config.active_storage.variant_processor = :vips #追記
  end
end

必要なgemのインストール

image_processingはコメントアウトを外し、ruby-vipsは追記します

Gemfile
gem 'image_processing', '~> 1.2'
gem 'ruby-vips'

Ubuntuからrails s

Ubuntu
/mnt/c/tmp_rails/sample$ rails s

これで http://127.0.0.1:3000/users をブラウザから開けばデモのように動きます。

参考

https://github.com/libvips/libvips/wiki/Build-for-Ubuntu

okatti-et14
Rails,Django,Raspberry Piかじってるけど何もできない。 ググっても中々解決しなかったことを初心者向けに書いていきます。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away