更改Dragonfly(Gem)文件权限(即0664)

时间:2014-08-12 13:35:09

标签: ruby-on-rails ruby file-permissions dragonfly-gem

Dragonfly默认创建文件,权限设置为0644

来自https://github.com/markevans/dragonfly/blob/master/lib/dragonfly/temp_object.rb#L116

def to_file(path, opts={})
  mode = opts[:mode] || 0644
  prepare_path(path) unless opts[:mkdirs] == false
  if @data
    File.open(path, 'wb', mode){|f| f.write(@data) }
  else
    FileUtils.cp(self.path, path)
    File.chmod(mode, path)
  end
  File.new(path, 'rb')
end

似乎可以提供其他权限。但是如何?

在它被调用的地方没有传递选项哈希。

来自https://github.com/markevans/dragonfly/blob/master/lib/dragonfly/file_data_store.rb#L107

content.to_file(path).close

1 个答案:

答案 0 :(得分:1)

虽然这不像我喜欢的那样干净,但由于它与Dragonfly的实现细节相结合,我通过游击修补方式找到了一种方法......

config/initializers/dragonfly.rb我添加了

class Dragonfly::Content
  def to_file(path)
    umask = File.umask(02)
    val = temp_object.to_file(path, mode: 0664)
    File.umask(umask)
    val
  end
end