fixtureファイルに画像データを含めるには
Ruby on Rails の開発でデータベースにテストデータを設定する fixture は便利ですが、カラムに画像データのようなバイナリーデータを入れたい場合は、下のようなコードで出来ます。
<% def image_data(file_name) ActiveSupport::Base64.encode64(IO.read("test/fixtures/img/#{file_name}")).gsub(/^/, " ") end %> neko: screen_name: neko password: pass profile_image: !binary | <%= image_data 'se_025.png' %> kame: screen_name: kame password: pass profile_image: !binary | <%= image_data 'se_055.png' %>
まず、fixtureで使われている YAMLフォーマットですが、 YAML Ain't Markup Language (YAML) 1.0 で定義されているように !binary の後にBASE64エンコードした文字列で扱えます。
また、fixtureの中には ERB が書けるので上のようなコードで画像ファイルを読み込み、BASE64エンコードする事でfixtureに画像データを含める事ができます。
ただし、YAMLはインデントに意味があるのでコードでは gsub(/^/, " ") を使いBASE64文字列をインデントしています。