【问题标题】:Carrierwave temp directory set to uploads/tmp folderCarrierwave 临时目录设置为 uploads/tmp 文件夹
【发布时间】:2016-07-30 20:35:41
【问题描述】:

我开始使用 Carrierwave,发现它在多个地方存储临时文件,具体取决于它是在测试还是延迟工作。

如果在测试(rspec)期间完成,临时文件将位于RAILS_ROOT/uploads/tmp 目录。

如果在延迟工作期间完成,临时文件将位于RAILS_ROOT/public/uploads/tmp

首先,我认为rails_root/tmp/uploads 会是一个更明智的地方,甚至是系统临时文件夹。

其次,与正常运行不同的测试似乎是一个错误。

有没有办法解决这个问题(通过配置或猴子补丁)?我可以把东西放在 RAILS_ROOT/tmp 文件夹吗?

【问题讨论】:

    标签: ruby-on-rails carrierwave


    【解决方案1】:

    您可以在“config/initializers/carrierwave.rb”中设置config.cache_dir 选项。但它是相对于'/public'的。看起来你应该在你的上传器中这样做:

    class MyUploader < CarrierWave::Uploader::Base
    
      def cache_dir
        # should return path to cache dir
        Rails.root.join 'tmp/uploads'
      end
    end
    

    【讨论】:

    • 像魅力一样工作。请注意,您需要重新启动应用程序才能使其生效。
    • 我还在类中添加了attr_writer cache_dir,并将函数更改为@cache_dir || Rails.root.join 'tmp/uploads',以允许按实例覆盖(用于将测试文件与开发文件隔离开来)。
    • cache_dir和store_dir有什么区别?
    • cache_dir 用于测试,store_dir 用于开发/生产?
    【解决方案2】:

    我使用的是carrierwave 0.10.0,看来这种行为已得到解决。现在cache_dir 设置接受公共目录之外的路径:

    CarrierWave.configure do |config|
      config.cache_dir = Rails.root.join 'tmp/uploads'
    end
    

    【讨论】:

      【解决方案3】:

      @iKindred 的回答对我有用,但我想我会扩展我如何让它在带有 CarrierWave 0.10.0 的 Rails 4.2.3 上工作:

      配置块的放置位置

      由于 CarrierWave 不是 Rails 的一部分,根据我对Rails Guide 的阅读,放置配置块的最佳位置是初始化文件。名称可以任意选择,但需要驻留在Rails.root/config/initializers 中。我选择以我正在配置的模块命名文件:Rails.root/config/initializers/carrier_wave.rb

      在初始化文件中放入什么

      我发现我在 Rails 应用程序以 development 模式运行时运行测试。测试后,我按照here 的描述,通过取消链接存储路径来清理所有文件。为了在不影响运行在development 模式下的 Rails 应用程序存储的文件的情况下工作,存储路径需要按环境分隔!因此,我修改后的@iKindred 的答案是:

      #config/initializers/carrier_wave.rb
      CarrierWave.configure do |config|
        config.cache_dir = File.join(Rails.root, 'tmp', 'uploads', Rails.env)
      end
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-03-30
        • 1970-01-01
        • 2017-04-13
        • 2013-10-06
        • 2012-12-22
        • 1970-01-01
        • 2015-04-17
        相关资源
        最近更新 更多