railsでテストや開発用の初期データ(バイナリ)を用意する方法


railsでテストや開発用に初期データを用意する方法はありますか?

DBに格納できるテキストデータなどはseedなどを使えば良いと思いますが、  
画像ファイルなどのデータを上手く管理する方法があれば教えて下さい。

よろしくお願いします。




質問がざっくりしすぎていて、どんなユースケースを想定しているのかがちょっとわかりにくいですが、ここではRailsチュートリアルの「マイクロポストの画像投稿」をサンプルとして考えてみます。

<http://railstutorial.jp/chapters/user_microposts?version=4.2#sec-
micropost_images>

まず、`/tests/fixtures/images/`ディレクトリに初期データの画像ファイル"sample.jpg"を配置します。

これを`db/seeds.rb`で投入できるようにします。

[code]

    # Users
    User.create!(name:  "Example User",
                 email: "example@railstutorial.org",
                 password:              "foobar",
                 password_confirmation: "foobar",
                 admin: true,
                 activated:    true,
                 activated_at: Time.zone.now)
    99.times do |n|
      name  = Faker::Name.name
      email = "example-#{n+1}@railstutorial.org"
      password = "password"
      User.create!(name:  name,
                   email: email,
                   password:              password,
                   password_confirmation: password,
                   activated:    true,
                   activated_at: Time.zone.now)  
    end
    
    # Microposts
    users = User.order(:created_at).take(6)
    image_path = File.join(Rails.root, "test/fixtures/images/sample.jpg")
    50.times do
      content = Faker::Lorem.sentence(5)
      users.each { |user|
        # 画像と一緒にマイクロポストの初期データを作成する
        user.microposts.create!(content: content, picture: File.new(image_path))
      }
    end
    
    # Following relationships
    users = User.all
    user  = users.first
    following = users[2..50]
    followers = users[3..40]
    following.each { |followed| user.follow(followed) }
    followers.each { |follower| follower.follow(user) }
    
[/code]

この状態で`bin/rake db:seed`を実行すると画像データとともにサンプルデータが作成されます。

[![画像の説明をここに入力](https://i.stack.imgur.com/2jEiu.jpg)](https://i.stack.imgur.com/2jEiu.jpg)

「これだと自分が考えているユースケースと異なる」という場合は、ユースケースや実際に使っているコードを追記してください。




質問がざっくりしすぎていて、どんなユースケースを想定しているのかがちょっとわかりにくいですが、ここではRailsチュートリアルの「マイクロポストの画像投稿」をサンプルとして考えてみます。

<http://railstutorial.jp/chapters/user_microposts?version=4.2#sec-
micropost_images>

まず、`/tests/fixtures/images/`ディレクトリに初期データの画像ファイル"sample.jpg"を配置します。

これを`db/seeds.rb`で投入できるようにします。

[code]

    # Users
    User.create!(name:  "Example User",
                 email: "example@railstutorial.org",
                 password:              "foobar",
                 password_confirmation: "foobar",
                 admin: true,
                 activated:    true,
                 activated_at: Time.zone.now)
    99.times do |n|
      name  = Faker::Name.name
      email = "example-#{n+1}@railstutorial.org"
      password = "password"
      User.create!(name:  name,
                   email: email,
                   password:              password,
                   password_confirmation: password,
                   activated:    true,
                   activated_at: Time.zone.now)  
    end
    
    # Microposts
    users = User.order(:created_at).take(6)
    image_path = File.join(Rails.root, "test/fixtures/images/sample.jpg")
    50.times do
      content = Faker::Lorem.sentence(5)
      users.each { |user|
        # 画像と一緒にマイクロポストの初期データを作成する
        user.microposts.create!(content: content, picture: File.new(image_path))
      }
    end
    
    # Following relationships
    users = User.all
    user  = users.first
    following = users[2..50]
    followers = users[3..40]
    following.each { |followed| user.follow(followed) }
    followers.each { |follower| follower.follow(user) }
    
[/code]

この状態で`bin/rake db:seed`を実行すると画像データとともにサンプルデータが作成されます。

[![画像の説明をここに入力](https://i.stack.imgur.com/2jEiu.jpg)](https://i.stack.imgur.com/2jEiu.jpg)

「これだと自分が考えているユースケースと異なる」という場合は、ユースケースや実際に使っているコードを追記してください。

