0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Rails6.0】Active Storageを用いた画像投稿の実装手順

Last updated at Posted at 2021-07-07

【Rails6+Docker】の開発環境下で画像投稿機能を実装する際、とても苦労したため備忘録に残しておきます。

前提

・各種モデル、コントローラー、ビューは作成済み
・画像だけが表示されない状態

失敗例 carrierwave、minimagickの利用

はじめのうちは、carrierwave、minimagickを使って画像投稿機能の実装を試みました。

Carrierwaveの導入には「ImageMagick」がインストールされている必要があるみたいでしたので
下記のとおり、DockerfileにImageMagickをインストールする記述を追記

# Dockerfile
FROM ruby:3.0.0

RUN apt-get update -qq && \
    apt-get install -y build-essential libpq-dev nodejs vim imagemagick     #←追記

RUN apt-get update && apt-get install -y curl apt-transport-https wget && \
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \
echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && \
apt-get update && apt-get install -y yarn

RUN curl -sL https://deb.nodesource.com/setup_10.x | bash - \
        && apt-get install -y nodejs

RUN mkdir -p /var/www/remote-work-space

WORKDIR /var/www/remote-work-space

ADD Gemfile /var/www/remote-work-space/Gemfile
ADD Gemfile.lock /var/www/remote-work-space/Gemfile.lock

RUN gem install bundler
RUN bundle install

ADD . /var/www/remote-work-space

RUN mkdir -p tmp/sockets
RUN mkdir -p tmp/pids

追記をして保存したら、$ docker-compose build --no-cacheを実行。
すると・・・

executor failed running [/bin/sh -c apt-get update -qq &&     apt-get install -y build-essential libpq-dev nodejs yarn vim imagemagik]: exit code: 100
ERROR: Service 'app' failed to build : Build failed

とエラーが返ってきて上手く行きませんでした。

そこで違う方法として、Active Storageを用いた実装を試してみたところ、上手くいきました。

成功例 Active Storageの利用

▼参考記事▼

重要コマンド (Active Storageのインストール)

$ docker-compose exec app bundle exec rails active_storage:install
docker-compose exec app bundle exec rails db:migrate

Gemfile

# Use Active Storage variant
# gem 'image_processing', '~> 1.2'

↓ コメントアウトを外します

# Use Active Storage variant
gem 'image_processing', '~> 1.2'

これによりImageProcessing経由で画像処理されます。

$ docker-compose buildでインストール完了後、「app/views/posts/index.html.erb」を確認してみると・・

今度こそ画像が表示されました!!!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?