【问题标题】:How do I properly manage the rails tmp directory?如何正确管理 rails tmp 目录?
【发布时间】:2015-02-13 04:07:11
【问题描述】:

在生产模式下部署 Rails 应用程序后,是否需要安排定期清理 rails tmp 目录?又名:rake tmp:clear(或其子部分 tmp:sessions:clear、tmp:cache:clear、tmp:sockets:clear)。

我知道对 rails 进行了一些重大修订,这是必须要做的事情。我目前正在使用 Rails 4.1.x。谢谢。

【问题讨论】:

  • 如果应用程序将文件留在 tmp 文件夹中,我会调查为什么会发生这种情况,而不仅仅是删除它们。
  • 如果有人到这里想知道他们是否可以删除 tmp 目录,答案是"yes"

标签: ruby-on-rails ruby ruby-on-rails-4


【解决方案1】:

将其中的一个或多个添加到您的 crontab 文件中,这样应该可以 你……

rake tmp:cache:clear              
rake tmp:clear                     
rake tmp:create                     
rake tmp:sessions:clear              
rake tmp:sockets:clear   

请记住,清除会话将终止所有活动会话。一世 不建议这样做。 您可以创建一个名为:

定期有这样的东西:

def self.run
      CGI::Session::ActiveRecordStore::Session.
        destroy_all( ['updated_at <?', 48.hours.ago] )
  end

然后像这样 cron 你的脚本/运行器

script/runner -e production Periodic.run

【讨论】:

    【解决方案2】:

    这是 Rails 6 在清除 tmp 目录方面为 rails --tasks 吐出的内容。

    rails tmp:clear     # Clear cache, socket and screenshot files from tmp/ (narrow w/ tmp:cache:clear, tmp:sockets:clear, tmp:screenshots:clear)
    rails tmp:create    # Creates tmp directories for cache, sockets, and pids
    

    注意:在tmp:clear 评论中确实提到了tmp:cache:cleartmp:sockets:cleartmp:screenshots:clear

    对我来说,我的缓存已经填满了我的 Docker 容器并且 inode 用完了,因此看起来好像磁盘空间用完了。我将尝试为生产配置缓存设置来帮助解决这个问题。

    听起来如果您想让它通过文件缓存自动过期,您可以执行以下操作:Rails: control file store cache size。 他们提到将:expires_in 用于文件缓存,否则您可以使用config.cache_store = :memory_store, { size: 64.megabytes } 之类的东西设置内存大小限制

    还有关于缓存的当前文档,其中还提到了:expires_in

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-25
      • 2013-10-15
      • 2023-03-11
      • 2021-01-04
      相关资源
      最近更新 更多