Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 可以通过RubyonRails应用程序监控AmazonS3资源使用情况吗?_Ruby On Rails_Ruby_Amazon S3 - Fatal编程技术网

Ruby on rails 可以通过RubyonRails应用程序监控AmazonS3资源使用情况吗?

Ruby on rails 可以通过RubyonRails应用程序监控AmazonS3资源使用情况吗?,ruby-on-rails,ruby,amazon-s3,Ruby On Rails,Ruby,Amazon S3,比如说,我有一个web应用程序,允许用户上传图像和文档,我的应用程序将所有这些资产存储在S3上,有没有一种方法可以监控每个用户帐户的资源使用情况 例如,如果一个用户帐户有1GB的存储限制,我如何监控每个人使用的存储容量 此外(但这对我来说不是什么问题)如果该用户帐户也有5GB带宽限制,是否有任何工具允许我只监控其S3带宽?是的,这是可能的。您可以使用来管理文件上载(或任何其他著名的上载管理插件/gem)。大多数工具都允许您访问上载文件的文件大小。您只需将这些文件与asset_uri(我想您已经在

比如说,我有一个web应用程序,允许用户上传图像和文档,我的应用程序将所有这些资产存储在S3上,有没有一种方法可以监控每个用户帐户的资源使用情况

例如,如果一个用户帐户有1GB的存储限制,我如何监控每个人使用的存储容量


此外(但这对我来说不是什么问题)如果该用户帐户也有5GB带宽限制,是否有任何工具允许我只监控其S3带宽?

是的,这是可能的。您可以使用来管理文件上载(或任何其他著名的上载管理插件/gem)。大多数工具都允许您访问上载文件的文件大小。您只需将这些文件与asset_uri(我想您已经在存储)一起存储在数据库中,为了检查用户是否可以上载另一个文件,只需将所有资产的大小与相应的用户id相加即可

Users:
  id
  email_address
  first_name
  upload_limit

Assets:
  id
  user_id
  uri
  filesize
  filename
然后,要获取特定用户上传文件的总大小,您可以执行以下操作:

class User < ActiveRecord::Base
  has_many :assets

  #Check if the user can upload another file
  def can_upload?
    if Asset.sum('filesize', :conditions => 'user_id = #{self.id}') >= self.upload_limit
      return false
    else
      return true
    end
  end

  #See the user's used storage space
  def used_storage
    return Asset.sum('filesize', :conditions => 'user_id = #{self.id}')
  end

  #See how much space the user has remaining
  def available_storage
    if self.can_upload?
      return self.upload_limit - Asset.sum('filesize', :conditions => 'user_id = #{self.id}')
    else
      return 0
    end
  end
end
class用户'user#u id={self.id}')>=self.upload\u limit
返回错误
其他的
返回真值
结束
结束
#查看用户使用的存储空间
def已用存储
return Asset.sum('filesize',:conditions=>'user_id={self.id}'))
结束
#查看用户剩余的空间
def可用存储空间
如果self.u可以上传吗?
返回self.upload_limit-Asset.sum('filesize',:conditions=>'user_id={self.id}')
其他的
返回0
结束
结束
结束
你可以看到我正在利用这里的函数进行计算。您也可以轻松地使用地图或其他基于ruby的解决方案