Rails 画像投稿機能（CarrierWave）を実装する

## 始めに
現在ポートフォリオを作成中で、画像投稿機能を実装したくなった。どうやら`CarrierWave`というgemがあるらしいので実装してみる。

## CarrierWave とは
railsアプリに画像投稿機能を実装するための`gem`

|単語|意味|
|:-:|:-:|
|Carrier|運搬人、郵便配達員、新聞配達人、運送業者|
|Wave|波、波浪、波動、起伏、うねり|

公式ページ

https://github.com/carrierwaveuploader/carrierwave

## 公式ページ（README）を見てみる

>CarrierWave
This gem provides a simple and extremely flexible way to upload files from Ruby applications. It works well with Rack based web applications, such as Ruby on Rails.

この`gem`は提供します、Rubyアプリケーションからファイルをアップロードする単純で非常に柔軟な方法を。
この`gem`は`Ruby on Rails`のような*`Rack based`なwebアプリケーションと相性がいいです。
*`Rack based`なwebアプリケーションについての解説は割愛

## インストール方法
>Installation
Install the latest release
最新版をインストールしてください
```：ターミナル
 gem install carrierwave
```
>In Rails, add it to your Gemfile

`Rails`の場合、`Gemfile`に追加してください
```:application/Gemfile
gem 'carrierwave', '~> 2.0'
```
>Finally, restart the server to apply the changes.

最後に、変更を適用するためにサーバーを再起動する。

>As of version 2.0, CarrierWave requires Rails 5.0 or higher and Ruby 2.2 or higher. If you're on Rails 4, you should use 1.x.

`CarrierWave version 2.0`以降では`Rails5.0`以降と`Ruby2.2`以降が必要。もしあなたが`Rails4.x`なら`CarrierWave`の`version`は`1.x.`にすべき。

## 始め方

>Getting Started
Start off by generating an uploader

アップローダーを作成するところから始まる。
```:ターミナル
rails generate uploader Avatar
```
>this should give you a file in:

このコマンドでファイルが作成され、ここにファイルにあるはず

```：アプリ
app/uploaders/avatar_uploader.rb
```
>Check out this file for some hints on how you can customize your uploader. It should look something like this:
このファイルを確かめてみてくださいアップローダーのカスタマイズのためのヒントがあります。以下の様なファイルがあるはずです。

```rb:app/uploaders/avatar_uploader.rb
class AvatarUploader < CarrierWave::Uploader::Base
      #省略
  storage :file
      #省略
end
```
>You can use your uploader class to store and retrieve files like this:

アップローダークラスを使って、以下のファイルのように保存したり取得したりすることができる
```rb:
uploader = AvatarUploader.new

uploader.store!(my_file) #保存する！

uploader.retrieve_from_store!('my_file.png')　#保存から取り出す！
```
>CarrierWave gives you a store for permanent storage, and a cache for temporary storage. You can use different stores, including filesystem and cloud storage.
Most of the time you are going to want to use CarrierWave together with an ORM. It is quite simple to mount uploaders on columns in your model, so you can simply assign files and get going:

CarrierWaveはあなたに永続的な保存場所と、一時保存のためのキャッシュを与えてくれる。あなたは様々な保管場所を使うことができる。ファイルシステムやクラウドストレージなど。
たいていの場合、CarrierWaveをORMと一緒に使用することになるでしょう。アップローダーをモデル内のカラムにマウントするのは非常に簡単なので、簡単な手順でファイルを割り当てて実行することができます。



## CarrierWaveのActiveRecordメソッド

>Make sure you are loading CarrierWave after loading your ORM, otherwise you'll need to require the relevant extension manually, e.g.:

確認してください。ORMを読み込んだ後に`CarrierWave`が読み込まれていることを。そうでない場合は手動で拡張機能を要求する必要がある。

```rb:
require 'carrierwave/orm/activerecord'
```
>Add a string column to the model you want to mount the uploader by creating a migration:

アップローダーを搭載したいモデルに文字列のカラムを追加する、マイグレーションファイルを作成して。

```:ターミナル
rails g migration add_avatar_to_users avatar:string
rails db:migrate
```
>Open your model file and mount the uploader:

モデルファイルを開きアップローダーを搭載する
```rb:
class User < ApplicationRecord
  mount_uploader :avatar, AvatarUploader
end
```

マイグレーションファイル
2022/08/02 執筆中