New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Remove the cached file after storing it #125
Conversation
So that it behaves in every storage engine the same.
This looks right to me, but I'll defer to Jonas for the merge. I'm (still!) having trouble with the tests at the moment. |
Merged - thanks! |
dmathieu, I'm playing with this some more, and it looks like the config option doesn't work correctly. I'm not sure if this is limited to the config option you added, though. I might be doing something wrong. In any case, we should add some documentation to mount.rb. See this issue please: http://github.com/jnicklas/carrierwave/issues#issue/150 I'd really appreciate your attention -- thank you! |
deleteting the folder where the files are in would be great too! |
Pull requests are welcome! |
The best way for that would be to fork, do it and make a pull request (with tests) ;) |
== Problem Errno::EMLINK: Too many links @ dir_s_mkdir == Full Backtrace /opt/rubies/ruby-2.1.5/lib/ruby/2.1.0/fileutils.rb:247 :in `mkdir` /opt/rubies/ruby-2.1.5/lib/ruby/2.1.0/fileutils.rb:247 :in `fu_mkdir` /opt/rubies/ruby-2.1.5/lib/ruby/2.1.0/fileutils.rb:224 :in `block (2 levels) in mkdir_p` /opt/rubies/ruby-2.1.5/lib/ruby/2.1.0/fileutils.rb:222 :in `reverse_each` /opt/rubies/ruby-2.1.5/lib/ruby/2.1.0/fileutils.rb:222 :in `block in mkdir_p` /opt/rubies/ruby-2.1.5/lib/ruby/2.1.0/fileutils.rb:208 :in `each` /opt/rubies/ruby-2.1.5/lib/ruby/2.1.0/fileutils.rb:208 :in `mkdir_p` [GEM_ROOT]/gems/carrierwave-0.9.0/lib/carrierwave/sanitized_file.rb:290 :in `mkdir!` [GEM_ROOT]/gems/carrierwave-0.9.0/lib/carrierwave/sanitized_file.rb:209 :in `copy_to` [GEM_ROOT]/gems/carrierwave-0.9.0/lib/carrierwave/uploader/cache.rb:131 :in `block in cache!` [GEM_ROOT]/gems/carrierwave-0.9.0/lib/carrierwave/uploader/callbacks.rb:17 :in `with_callbacks` [GEM_ROOT]/gems/carrierwave-0.9.0/lib/carrierwave/uploader/cache.rb:122 :in `cache!` [GEM_ROOT]/gems/carrierwave-0.9.0/lib/carrierwave/mount.rb:327 :in `cache` [GEM_ROOT]/gems/carrierwave-0.9.0/lib/carrierwave/mount.rb:179 :in `file=` [GEM_ROOT]/gems/carrierwave-0.9.0/lib/carrierwave/orm/activerecord.rb:38 :in `file=` == Why <TODO> == Reproduce Let's imagine a rails app with a User#avatar require 'tempfile' 32001.times { User.new avatar: Tempfile.new("foo") } # This will create 32001 dirs within /public/uploads/tmp == Related Pull Requests / Issues / Links * [How to: Delete cache garbage directories](https://github.com/carrierwaveuploader/carrierwave/wiki/How-to:-Delete-cache-garbage-directories) * [Remove the cached file after storing it carrierwaveuploader#107](carrierwaveuploader#107) * [Remove the cached file after storing it carrierwaveuploader#125](carrierwaveuploader#125) * [delete cache garbage dirs carrierwaveuploader#338](carrierwaveuploader#338) * [delete cache garbage dirs issue carrierwaveuploader#338 carrierwaveuploader#346](carrierwaveuploader#346) * [Issue 338 carrierwaveuploader#393](carrierwaveuploader#393) * [tmp files not being deleted carrierwaveuploader#1489](carrierwaveuploader#1489)
== Problem Errno::EMLINK: Too many links @ dir_s_mkdir == Full Backtrace (carrierwave 0.9) /opt/rubies/ruby-2.1.5/lib/ruby/2.1.0/fileutils.rb:247 :in `mkdir` /opt/rubies/ruby-2.1.5/lib/ruby/2.1.0/fileutils.rb:247 :in `fu_mkdir` /opt/rubies/ruby-2.1.5/lib/ruby/2.1.0/fileutils.rb:224 :in `block (2 levels) in mkdir_p` /opt/rubies/ruby-2.1.5/lib/ruby/2.1.0/fileutils.rb:222 :in `reverse_each` /opt/rubies/ruby-2.1.5/lib/ruby/2.1.0/fileutils.rb:222 :in `block in mkdir_p` /opt/rubies/ruby-2.1.5/lib/ruby/2.1.0/fileutils.rb:208 :in `each` /opt/rubies/ruby-2.1.5/lib/ruby/2.1.0/fileutils.rb:208 :in `mkdir_p` [GEM_ROOT]/gems/carrierwave-0.9.0/lib/carrierwave/sanitized_file.rb:290 :in `mkdir!` [GEM_ROOT]/gems/carrierwave-0.9.0/lib/carrierwave/sanitized_file.rb:209 :in `copy_to` [GEM_ROOT]/gems/carrierwave-0.9.0/lib/carrierwave/uploader/cache.rb:131 :in `block in cache!` [GEM_ROOT]/gems/carrierwave-0.9.0/lib/carrierwave/uploader/callbacks.rb:17 :in `with_callbacks` [GEM_ROOT]/gems/carrierwave-0.9.0/lib/carrierwave/uploader/cache.rb:122 :in `cache!` [GEM_ROOT]/gems/carrierwave-0.9.0/lib/carrierwave/mount.rb:327 :in `cache` [GEM_ROOT]/gems/carrierwave-0.9.0/lib/carrierwave/mount.rb:179 :in `file=` [GEM_ROOT]/gems/carrierwave-0.9.0/lib/carrierwave/orm/activerecord.rb:38 :in `file=` == Why Some file systems only allow a limited number of subdirectories. Ext3 for example only allow ~32k subdirectories. == Reproduce Let's imagine a rails app with a User#avatar require 'tempfile' 32001.times { User.new avatar: Tempfile.new("foo") } # This will create 32001 dirs within /public/uploads/tmp == Fix Clean cache after caching failed. == Related Pull Requests / Issues / Links * [How to: Delete cache garbage directories](https://github.com/carrierwaveuploader/carrierwave/wiki/How-to:-Delete-cache-garbage-directories) * [Remove the cached file after storing it carrierwaveuploader#107](carrierwaveuploader#107) * [Remove the cached file after storing it carrierwaveuploader#125](carrierwaveuploader#125) * [delete cache garbage dirs carrierwaveuploader#338](carrierwaveuploader#338) * [delete cache garbage dirs issue carrierwaveuploader#338 carrierwaveuploader#346](carrierwaveuploader#346) * [Issue 338 carrierwaveuploader#393](carrierwaveuploader#393) * [tmp files not being deleted carrierwaveuploader#1489](carrierwaveuploader#1489)
== Problem Errno::EMLINK: Too many links @ dir_s_mkdir == Full Backtrace (carrierwave 0.9) /opt/rubies/ruby-2.1.5/lib/ruby/2.1.0/fileutils.rb:247 :in `mkdir` /opt/rubies/ruby-2.1.5/lib/ruby/2.1.0/fileutils.rb:247 :in `fu_mkdir` /opt/rubies/ruby-2.1.5/lib/ruby/2.1.0/fileutils.rb:224 :in `block (2 levels) in mkdir_p` /opt/rubies/ruby-2.1.5/lib/ruby/2.1.0/fileutils.rb:222 :in `reverse_each` /opt/rubies/ruby-2.1.5/lib/ruby/2.1.0/fileutils.rb:222 :in `block in mkdir_p` /opt/rubies/ruby-2.1.5/lib/ruby/2.1.0/fileutils.rb:208 :in `each` /opt/rubies/ruby-2.1.5/lib/ruby/2.1.0/fileutils.rb:208 :in `mkdir_p` [GEM_ROOT]/gems/carrierwave-0.9.0/lib/carrierwave/sanitized_file.rb:290 :in `mkdir!` [GEM_ROOT]/gems/carrierwave-0.9.0/lib/carrierwave/sanitized_file.rb:209 :in `copy_to` [GEM_ROOT]/gems/carrierwave-0.9.0/lib/carrierwave/uploader/cache.rb:131 :in `block in cache!` [GEM_ROOT]/gems/carrierwave-0.9.0/lib/carrierwave/uploader/callbacks.rb:17 :in `with_callbacks` [GEM_ROOT]/gems/carrierwave-0.9.0/lib/carrierwave/uploader/cache.rb:122 :in `cache!` [GEM_ROOT]/gems/carrierwave-0.9.0/lib/carrierwave/mount.rb:327 :in `cache` [GEM_ROOT]/gems/carrierwave-0.9.0/lib/carrierwave/mount.rb:179 :in `file=` [GEM_ROOT]/gems/carrierwave-0.9.0/lib/carrierwave/orm/activerecord.rb:38 :in `file=` == Why Some file systems only allow a limited number of subdirectories. Ext3 for example only allow ~32k subdirectories. == Reproduce Let's imagine a rails app with a User#avatar require 'tempfile' 32001.times { User.new avatar: Tempfile.new("foo") } # This will create 32001 dirs within /public/uploads/tmp == Fix Clean cache after caching failed. == Related Pull Requests / Issues / Links * [How to: Delete cache garbage directories](https://github.com/carrierwaveuploader/carrierwave/wiki/How-to:-Delete-cache-garbage-directories) * [Remove the cached file after storing it carrierwaveuploader#107](carrierwaveuploader#107) * [Remove the cached file after storing it carrierwaveuploader#125](carrierwaveuploader#125) * [delete cache garbage dirs carrierwaveuploader#338](carrierwaveuploader#338) * [delete cache garbage dirs issue carrierwaveuploader#338 carrierwaveuploader#346](carrierwaveuploader#346) * [Issue 338 carrierwaveuploader#393](carrierwaveuploader#393) * [tmp files not being deleted carrierwaveuploader#1489](carrierwaveuploader#1489)
== Problem Errno::EMLINK: Too many links @ dir_s_mkdir == Full Backtrace (carrierwave 0.9) /opt/rubies/ruby-2.1.5/lib/ruby/2.1.0/fileutils.rb:247 :in `mkdir` /opt/rubies/ruby-2.1.5/lib/ruby/2.1.0/fileutils.rb:247 :in `fu_mkdir` /opt/rubies/ruby-2.1.5/lib/ruby/2.1.0/fileutils.rb:224 :in `block (2 levels) in mkdir_p` /opt/rubies/ruby-2.1.5/lib/ruby/2.1.0/fileutils.rb:222 :in `reverse_each` /opt/rubies/ruby-2.1.5/lib/ruby/2.1.0/fileutils.rb:222 :in `block in mkdir_p` /opt/rubies/ruby-2.1.5/lib/ruby/2.1.0/fileutils.rb:208 :in `each` /opt/rubies/ruby-2.1.5/lib/ruby/2.1.0/fileutils.rb:208 :in `mkdir_p` [GEM_ROOT]/gems/carrierwave-0.9.0/lib/carrierwave/sanitized_file.rb:290 :in `mkdir!` [GEM_ROOT]/gems/carrierwave-0.9.0/lib/carrierwave/sanitized_file.rb:209 :in `copy_to` [GEM_ROOT]/gems/carrierwave-0.9.0/lib/carrierwave/uploader/cache.rb:131 :in `block in cache!` [GEM_ROOT]/gems/carrierwave-0.9.0/lib/carrierwave/uploader/callbacks.rb:17 :in `with_callbacks` [GEM_ROOT]/gems/carrierwave-0.9.0/lib/carrierwave/uploader/cache.rb:122 :in `cache!` [GEM_ROOT]/gems/carrierwave-0.9.0/lib/carrierwave/mount.rb:327 :in `cache` [GEM_ROOT]/gems/carrierwave-0.9.0/lib/carrierwave/mount.rb:179 :in `file=` [GEM_ROOT]/gems/carrierwave-0.9.0/lib/carrierwave/orm/activerecord.rb:38 :in `file=` == Why Some file systems only allow a limited number of subdirectories. Ext3 for example only allow ~32k subdirectories. == Reproduce Let's imagine a rails app with a User#avatar require 'tempfile' 32001.times { User.new avatar: Tempfile.new("foo") } # This will create 32001 dirs within /public/uploads/tmp == Fix Clean cache after caching failed. == Related Pull Requests / Issues / Links * [How to: Delete cache garbage directories](https://github.com/carrierwaveuploader/carrierwave/wiki/How-to:-Delete-cache-garbage-directories) * [Remove the cached file after storing it carrierwaveuploader#107](carrierwaveuploader#107) * [Remove the cached file after storing it carrierwaveuploader#125](carrierwaveuploader#125) * [delete cache garbage dirs carrierwaveuploader#338](carrierwaveuploader#338) * [delete cache garbage dirs issue carrierwaveuploader#338 carrierwaveuploader#346](carrierwaveuploader#346) * [Issue 338 carrierwaveuploader#393](carrierwaveuploader#393) * [tmp files not being deleted carrierwaveuploader#1489](carrierwaveuploader#1489)
This follows issue 107.
I've done three things :