2012-02-07 67 views
0

我想在rails應用程序中使用linux配額來限制用戶在磁盤上的空間使用量。但是我目前的實現將會節省用戶的附件,因爲它們由啓動Rails應用程序的人所擁有。我是否需要在Linux服務器上創建每個用戶併爲其分配磁盤配額?如何在Rails應用程序中使用磁盤配額?

那麼,有沒有任何rails插件/寶石允許我這樣做?什麼是github解決方案?他們不僅限制了附件的大小,還限制了用戶的git存儲庫。謝謝。

回答

4

最好在應用程序級別限制用戶的磁盤空間使用情況,而不使用OS級別的工具。

作爲一個簡單的例子,在每次成功上傳文件後,將disk_quotacurrent_disk_usage字段添加到用戶模型,更新current_disk_usage。每次上傳文件之前,如果上傳文件大小+ current_disk_usage>disk_quota,則會拋出異常。

這是更通用和跨平臺的方法。這樣您就不會限制自己使用Linux操作系統,可以將文件和應用程序服務器存儲在不同的機器上,可以將文件存儲在Amazon S3等上。另外,它更易於維護。

+0

感謝您的建議,但我的問題是我想承載其他服務,如git存儲庫。所以我不能限制存儲庫的磁盤使用情況,如果我只是做一些應用程序級別。 – stcatz 2012-02-08 02:32:54

+0

這裏有一些git gems包含git repo創建/交互(不知道它們中的任何一個是否有一種方法來獲取整個存儲庫的大小;無論如何,它們可以被擴展來支持這種方法)。從低級別獲得倉庫大小1)在低級別:du -s repo_dir,然後使用像File.size('repo_dir')等ruby方法解析輸出2)等。每次回購後檢查回購文件大小文件更改(或定期如果有更改,以避免開銷),將用戶的回購大小+其他文件的大小與其配額相比較,並在超過配額時拋出異常。 – buru 2012-02-08 16:36:55

相關問題