Ruby on rails 可以通过RubyonRails应用程序监控AmazonS3资源使用情况吗?
比如说,我有一个web应用程序,允许用户上传图像和文档,我的应用程序将所有这些资产存储在S3上,有没有一种方法可以监控每个用户帐户的资源使用情况 例如,如果一个用户帐户有1GB的存储限制,我如何监控每个人使用的存储容量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(我想您已经在
此外(但这对我来说不是什么问题)如果该用户帐户也有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的解决方案