如何在Rails灯具中使用二进制数据?

时间:2012-09-28 16:40:55

标签: ruby-on-rails binary fixtures

假设您要测试全新的Picture模型。您可能想测试自动转换是否正常工作。如何将测试数据输入您的灯具?

1 个答案:

答案 0 :(得分:5)

要实现此目的,请在file_fixtures_extension.rb下的应用文件夹中创建一个文件config/initializers,其中包含以下代码:

require 'active_record/fixtures'

module FileFixtureExtension
  def file(file_name)
    File::open(Rails.root.join('test/fixtures/', file_name), 'rb') do |f|
      "!!binary \"#{Base64.strict_encode64(f.read)}\""
    end
  end
end

Fixture.extend FileFixtureExtension

现在,您可以在夹具中包含文件test/fixtures/pictures/my-birthday.jpg中的二进制数据,如下所示:

first_picture:
  name: My Birthday
  filename: my-birthday.jpg
  content_type: image/jpeg
  file: <%=Fixture::file 'pictures/my-birthday.jpg' %>

要进一步阅读YAML中的二进制数据,请查看YAML documentation