Ruby on Rails 13章投稿のテスト/画像のアップロード

Ruby on Rails 13章投稿のテスト/画像のアップロードをやりました。

●コントローラのUT
ある投稿に対して、別ユーザを削除する。
→総数が変わっておらず、削除できないこと。

●統合テスト
大したことはしていない。

・無効な投稿
・エラーになってデータ登録なし。

・有効な投稿
・1件増える。

・削除
・全体が1件減る。
・他ユーザには無影響確認
(←ちょっと足しておく。コントローラのテストは他ユーザの削除ができないかどうかであり、
削除時にほかのデータを削除していないことの確認は別観点)

・0件、2件以上/1件だと「複数形」が変わる。
→「_user.html.erb」に出ている件数のこと。
↓これ。
<%= pluralize( get_login_user.microposts.count, “micropost” ) %>

●画像のアップロード
<対応概要>
・アップロード部品の配置
→POST欄へ。(つまり1投稿ごとに)

・アップロードした画像の保存(サーバサイド)

・アップロード済み画像の表示

<アップロードのGEM>
・CarrierWave
・MiniMagick
・Fog(本番用)

rails generate uploader Picture
↑Pictureは名前。特に型とかではない。
Imageという名前でもよかったらしい。

●uploaders/picture_uploader.rb

# Choose what kind of storage to use for this uploader:
storage :file
# storage :fog

# Override the directory where uploaded files will be stored.
# This is a sensible default for uploaders that are meant to be mounted:
def store_dir
“uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}”
end
↑ここにいるらしい。

・picture(String)をmicropostsに入れる。

・micropostsモデルに、
mount_uploader :picture, PictureUploader
を書く。
これで参照が定義される。

<エラーになる>
NameError: NameError: uninitialized constant Micropost::PictureUploader
app/models/micropost.rb:6:in `<class:Micropost>’
app/models/micropost.rb:1:in `<top (required)>’

・ターミナルを立ち上げなおす。
⇒ダメ。

これでrails testを通過した。

https://stackoverflow.com/questions/25712027/nameerror-uninitialized-constant-articleimageuploader-when-using-carrierwave

↑これを参考に。

ec2-user:~/environment/sample_app (user-microposts) $ git diff config/environments/development.rb
(中略)
# Use an evented file watcher to asynchronously detect changes in source code,
# routes, locales, etc. This feature depends on the listen gem.
config.file_watcher = ActiveSupport::EventedFileUpdateChecker
+
+ #test
+ require ‘carrierwave/orm/activerecord’
end

コメントを残す

メールアドレスが公開されることはありません。