paulelliott / fabrication

This project has moved to GitLab! Please check there for the latest updates.
https://gitlab.com/fabrication-gem/fabrication
MIT License
998 stars 97 forks source link

How to open a file in my Fabricator #275

Closed oasisweng closed 8 years ago

oasisweng commented 8 years ago
Fabricator(:image) do
  image { File.open(File.join(Rails.root, 'test', 'fabricators', 'assets', 'ex1.png'))}
end

I want to fabricate an image instance with a test image file. But it gives me the following error Errno::EMFILE: Too many open files @ rb_sysopen.

Full error stack:

Errno::EMFILE: Too many open files @ rb_sysopen - /Users/oasisweng/Documents/Repos/2buyi/test/fabricators/assets/avatar.png
    from /Users/oasisweng/Documents/Repos/2buyi/test/fabricators/image_fabricator.rb:19:in `initialize'
    from /Users/oasisweng/Documents/Repos/2buyi/test/fabricators/image_fabricator.rb:19:in `open'
    from /Users/oasisweng/Documents/Repos/2buyi/test/fabricators/image_fabricator.rb:19:in `block (2 levels) in <top (required)>'
    from /Users/oasisweng/.rvm/gems/ruby-2.2.3@2buyi/gems/fabrication-2.15.0/lib/fabrication/schematic/attribute.rb:40:in `instance_exec'
    from /Users/oasisweng/.rvm/gems/ruby-2.2.3@2buyi/gems/fabrication-2.15.0/lib/fabrication/schematic/attribute.rb:40:in `execute'
    from /Users/oasisweng/.rvm/gems/ruby-2.2.3@2buyi/gems/fabrication-2.15.0/lib/fabrication/schematic/attribute.rb:28:in `processed_value'
    from /Users/oasisweng/.rvm/gems/ruby-2.2.3@2buyi/gems/fabrication-2.15.0/lib/fabrication/generator/base.rb:108:in `block in process_attributes'
    from /Users/oasisweng/.rvm/gems/ruby-2.2.3@2buyi/gems/fabrication-2.15.0/lib/fabrication/generator/base.rb:107:in `each'
    from /Users/oasisweng/.rvm/gems/ruby-2.2.3@2buyi/gems/fabrication-2.15.0/lib/fabrication/generator/base.rb:107:in `process_attributes'
    from /Users/oasisweng/.rvm/gems/ruby-2.2.3@2buyi/gems/fabrication-2.15.0/lib/fabrication/generator/base.rb:6:in `build'
    from /Users/oasisweng/.rvm/gems/ruby-2.2.3@2buyi/gems/fabrication-2.15.0/lib/fabrication/schematic/definition.rb:63:in `block in build'
    from /Users/oasisweng/.rvm/gems/ruby-2.2.3@2buyi/gems/fabrication-2.15.0/lib/fabrication/schematic/definition.rb:62:in `instance_eval'
    from /Users/oasisweng/.rvm/gems/ruby-2.2.3@2buyi/gems/fabrication-2.15.0/lib/fabrication/schematic/definition.rb:62:in `build'
    from /Users/oasisweng/.rvm/gems/ruby-2.2.3@2buyi/gems/fabrication-2.15.0/lib/fabricate.rb:26:in `build'
    from /Users/oasisweng/Documents/Repos/2buyi/test/fabricators/profile_fabricator.rb:18:in `block (2 levels) in <top (required)>'
    from /Users/oasisweng/.rvm/gems/ruby-2.2.3@2buyi/gems/fabrication-2.15.0/lib/fabrication/schematic/attribute.rb:40:in `instance_exec'
... 6171 levels...
    from /Users/oasisweng/.rvm/gems/ruby-2.2.3@2buyi/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:268:in `load'
    from /Users/oasisweng/.rvm/gems/ruby-2.2.3@2buyi/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:268:in `block in load'
    from /Users/oasisweng/.rvm/gems/ruby-2.2.3@2buyi/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:240:in `load_dependency'
    from /Users/oasisweng/.rvm/gems/ruby-2.2.3@2buyi/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:268:in `load'
    from /Users/oasisweng/.rvm/gems/ruby-2.2.3@2buyi/gems/spring-1.1.3/lib/spring/commands/rails.rb:6:in `call'
    from /Users/oasisweng/.rvm/gems/ruby-2.2.3@2buyi/gems/spring-1.1.3/lib/spring/command_wrapper.rb:38:in `call'
    from /Users/oasisweng/.rvm/gems/ruby-2.2.3@2buyi/gems/spring-1.1.3/lib/spring/application.rb:180:in `block in serve'
    from /Users/oasisweng/.rvm/gems/ruby-2.2.3@2buyi/gems/spring-1.1.3/lib/spring/application.rb:153:in `fork'
    from /Users/oasisweng/.rvm/gems/ruby-2.2.3@2buyi/gems/spring-1.1.3/lib/spring/application.rb:153:in `serve'
    from /Users/oasisweng/.rvm/gems/ruby-2.2.3@2buyi/gems/spring-1.1.3/lib/spring/application.rb:128:in `block in run'
    from /Users/oasisweng/.rvm/gems/ruby-2.2.3@2buyi/gems/spring-1.1.3/lib/spring/application.rb:122:in `loop'
    from /Users/oasisweng/.rvm/gems/ruby-2.2.3@2buyi/gems/spring-1.1.3/lib/spring/application.rb:122:in `run'
    from /Users/oasisweng/.rvm/gems/ruby-2.2.3@2buyi/gems/spring-1.1.3/lib/spring/application/boot.rb:18:in `<top (required)>'
    from /Users/oasisweng/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
    from /Users/oasisweng/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
    from -e:1:in `<main>'>> 

What is the correct practice to open a file in Fabrication?

I am using Rails 4 and I upload the images through Carrierwave.

oasisweng commented 8 years ago

Carrierwave explained this