【问题标题】:How to use disk quota in rails app?如何在 Rails 应用程序中使用磁盘配额?
【发布时间】:2012-02-07 03:39:21
【问题描述】:

我想在 rails 应用程序中使用 linux 配额来限制用户在磁盘上的空间使用。但是我当前的实现将保存用户的附件,因为它们由启动 rails 应用程序的人拥有。我需要在 linux 服务器上创建每个用户并为他们分配磁盘配额吗?

那么,是否有任何 Rails 插件/宝石允许我这样做?什么是 github 解决方案?他们不仅限制了附件的大小,还限制了用户的 git 存储库。谢谢。

【问题讨论】:

    标签: ruby-on-rails ruby linux quota


    【解决方案1】:

    最好在应用程序级别限制用户的磁盘空间使用,而不使用操作系统级别的工具。

    举个简单的例子,在用户模型中添加disk_quotacurrent_disk_usage字段,每次文件上传成功后更新current_disk_usage。每次上传文件前,如果上传文件大小+current_disk_usage>disk_quota抛出异常。

    这是一种更加通用和跨平台的方法。这样您就不会限制自己使用 Linux 操作系统,可以将文件和应用程序服务器存储在不同的机器上,可以将文件存储在 Amazon S3 上等。此外,它更易于维护。

    【讨论】:

    • 感谢您的建议,但我的问题是我想托管其他服务,例如 git 存储库。因此,如果我只是在应用级别做某事,我就无法限制存储库磁盘的使用。
    • 有一些 git gem 封装了 git repo 创建/交互(不确定它们中是否有任何方法可以获取总存储库大小;无论如何,它们可以扩展以支持此方法)。可以从 Rails 获取存储库大小 1) 在低级别:du -s repo_dir,然后解析输出 2) 使用像 File.size('repo_dir') 等 ruby​​ 方法等。在每次 repo 文件更改后检查 repo 文件大小(或定期如果有更改,以避免开销),将用户的 repo 大小 + 他其他文件的大小与他的配额进行比较,如果超出配额则抛出异常。
    猜你喜欢
    • 2016-02-12
    • 1970-01-01
    • 1970-01-01
    • 2019-09-08
    • 2022-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多