[Ruby] ファイルアップロードなら「CarrierWave」

Ruby でファイルアップロードなら「CarrierWave」というGemが便利みたいです。

Rackに対応しているため、Rails、SinatraなどRackベースのRubyアプリケーションで動作し、ActiveRecord、DataMapper、 Mongoidなど多くのORMをサポートしています。

jnicklas/carrierwave · GitHub はてなブックマーク - jnicklas/carrierwave · GitHub

ASCIIcasts – “Episode 253 – CarrierWaveでファイルのアップロード” はてなブックマーク - ASCIIcasts - “Episode 253 - CarrierWaveでファイルのアップロード”

Railsでcarrierwaveを使って画像ファイルのアップロード はてなブックマーク - Railsでcarrierwaveを使って画像ファイルのアップロード

.gitignore

# CarrierWave
/public/uploads

gist:2874877 はてなブックマーク - gist:2874877

テストデータを作る場合、rails c で画像をモデルに割り当てて、保存すればOKです。

photo = Photo.new
photo.image = File.open('app/assets/images/dummy.jpg')

RSpec でテスト

include ActionDispatch::TestProcess
 
FactoryGirl.define do
  factory :photo do
    ignore do
      image_file "test1.jpg"
    end
 
    name "TestPhoto"
    image { fixture_file_upload(Rails.root.join('spec', 'support', 'test_images', "#{image_file}"), 'image/jpg') }
  end
end

Action*3 – rspecでCarrierWaveのアップロードファイルをclean はてなブックマーク - Action*3 - rspecでCarrierWaveのアップロードファイルをclean

How to: Cleanup after your Rspec tests · jnicklas/carrierwave Wiki はてなブックマーク - How to: Cleanup after your Rspec tests · jnicklas/carrierwave Wiki