bundle install とupdateのちがい
bundle installはGemfile.lockとGemfileの差分をインストールしてほしいときに使う。 bundle updateはGemfile.lockとGemfileの中身がガラッと変わってしまった場合にGemfile.lockを無視してGemをインストールしてもらうときに使う。
bundle execについて
bundle execとは
Gemfile.lockに基づいてgemが動くようになるもの。最新のgemを持ってきました〜とかはない。
bundle exec rails db:migrate
のように使う。
参考
バージョンを指定してRailsを作成
rails newで新しく作ろう
rails new
で新しくRailsのアプリを作り始める時、Railsのバージョンを指定して作成したい時がある。そういうときは、
% rails _6.0.0_ new hello.app
のようにバージョンを指定すればOK!
バージョンの確認
そもそもRailsのバージョンがいくつになっているのかわからない場合は、
% rails -v
を使ってバージョンを調べてみましょう。さらに、インストール済みの使えるRailsを見るには、
% gem list rails
で見ることができます。
使いたいRailsのバージョンをインストール
使いたいバージョンがなかった!というときは、
% gem install -v 6.0.3 rails
としてあげればOK!これでインストールすることができます。
gem list rails
で確認するのもいいと思います。
参考
Rails 画像投稿機能の導入
CarrierWaveとMiniMagickを使って画像を投稿できるようにしていきます。この2つはインストール済みということを前提にして進めていきます。
画像のアップローダーの作成
% rails g uploader image
を実行すると、app/uploadesディレクトリにimage_uploader.rbが作成されます。
アップローダーとモデルの紐付け
次に、作成したアップローダーと関連するモデルを紐付けます。Boardモデルのboard_imageカラムと紐付けることを仮定します。board_imageカラムはstring型で生成します。カラムの生成方法は、
rails g migration AddBoardImageToBoards board_image:string
を実行。
class Board < ApplicationRecord mount_uploader :board_image, ImageUploader end
これで紐付けが完了しました。 生成されたアップローダーにデフォルトの画像と、アップロード可能なファイルの種類を指定します。
class ImageUploader < CarrierWave::Uploader::Base def store_dir "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" end def default_url '〇〇.png' end def extension_whitelist %w(jpg jpeg gif png) end end
アップロード先のファイルを.gitignoreに登録しておきます。
/public/uploads
画像の設定
image_uploader.rb
を編集して、MiniMagick経由で画像のリサイズを行えるようにします。
class ImageUploader < CarrierWave::Uploader::Base include CarrierWave::MiniMagick process resize_to_fit: [300, 200] end
としてあげるとリサイズすることができます。
view側の記述
ラベルと画像投稿用のフォームを作ります。
<%= f.label :board_image,"サムネイル" %> <%= f.file_field :board_image %>
投稿が許可されるようにpermitするカラムの追加もします。
def board_params params.require(:board).permit(:title, :body, :user_id,:board_image) end
フォームに送信した画像を呼び出すには、
<%= image_tag board.board_image_url %>
で呼び出すことができます。
画像を保存しないときはデフォルトにしたい
def default_url '〇〇.png' end
これをimageアップローダーに記述していたため、画像を載せないときはデフォルトで、〇〇.pngが乗ることになる。
参考
https://techtechmedia.com/carrierwave-minimagick-image/ https://ecolotta.hatenablog.com/entry/2020/12/31/175419 https://note.com/hajime38/n/ne2650fdf4559
gem 'carrier_wave'の導入
gem 'carrier_wave'とは
ファイルアップロード用のgemです。gemfileに
gem 'carrierwave'
と記述し、
% bundle install
でインストールすることができます。
参考
gem 'mini_magick'の導入
gem 'mini_magick'とは
画像を加工してくれるgemです。使うためには、gemfileに
gem 'mini_magick'
と記述し、
% bundle install
を実行するとインストールできます。さらに、MiniMagickをしようするためには、ImageMagickというものが必要になるため、これもインストールしましょう。
% brew install imagemagick
これでMiniMagickが使えるようになりました。
MiniMagickでできること
MiniMagickでできることは画像処理のあれこれです。
- 画像サイズ変更
- 画像反転
- 画像回転
- 画像フォーマット変換
- 色調整
- グラデーション
など様々な画像処理を行えます。