【问题标题】:Rails3: Change location of temp (tmp) directoryRails3:更改临时(tmp)目录的位置
【发布时间】:2011-04-18 20:01:58
【问题描述】:

我通常在本地 Dropbox 文件夹中进行开发。 tmp 文件夹中的一些文件被浏览器锁定(并使 Dropbox 保持忙碌),Growl 抛出异常等等。

因此,我正在寻找将 tmp 文件夹放在 Rails-app 包之外的配置设置。这可能吗?

【问题讨论】:

  • 只要没有关于您的临时文件夹的任何配置(更多的是关于约定,它是/Rails.root/tmp)。但是您可以尝试作弊:从 Rails 应用程序中删除 tmp 文件夹,并为其创建一个符号链接作为普通的 Rails tmp 目录。我不知道它是否会起作用:))
  • 符号链接对于让 Dropbox 同步 Dropbox 文件夹外的文件也很有用... :)))
  • 好的,我刚试过 :) 没用过 Dropbox

标签: ruby-on-rails-3 configuration tmp


【解决方案1】:

不是您要寻找的答案 - 但我可以肯定地说,没有配置选项可以更改 Rails 认为 tmp 文件夹的位置。该位置在 Rails 代码库的许多不同位置都被硬编码。

看起来符号链接同步原始文件,因此您可能会遇到相同的锁定问题。

如果你这样做,那么你可以使用符号链接反过来解决你的问题,即。在您的保管箱外部创建您的项目,并将tmp 以外的所有内容符号链接到您的保管箱中的文件夹中。

因此,您可能在 ~/work/rails_project/<all the rails dirs including tmp> 中拥有 Rails 应用程序,然后您的 Dropbox 中将有一个相应的目录,例如 ~/dropbox/rails_project,然后该目录中您将手动创建一堆的符号链接,然后删除 tmp 一个,使用 bash 你会这样做:

$ for f in ~/work/rails_project/*; do ln -s $f; done
$ rm tmp

如果您曾经将新文件/目录添加到应用的根目录,则需要记住再次运行它。

【讨论】:

  • 没错……这是一个创造性的解决方案。感谢您澄清没有配置选项!
【解决方案2】:
ENV['TMPDIR'] = Rails.root.join('tmp')

【讨论】:

  • 感谢您的回答。但是,我没有成功使用ENV['TMPDIR'] = '/tmp',无论我将这一行放在哪里,无论是配置文件还是初始化程序。你能扩大你的答案吗?
  • 尝试将 ENV['TMPDIR'] = Rails.root.join('tmp').to_s 放在你的 environment.rb 文件中
【解决方案3】:

你不能改变 tmp 目录,但是你可以配置 tmp 缓存目录。

# config/application.rb
config.cache_store                   = [ :file_store, "/tmp/rails-cache/" ]
config.assets.cache_store            = [ :file_store, "/tmp/rails-cache/assets/#{Rails.env}/" ]

您可以在configuration.rb阅读更多内容

【讨论】:

    【解决方案4】:

    您可以使用选择性同步将目录排除在 Dropbox 中同步:http://www.dropbox.com/help/175/en

    基本上选择 Dropbox 首选项并进入高级。然后选择 Selective Sync 并查找要从同步中排除的文件夹[如果您必须进入比 1 级目录深度更深的目录,还有一个高级视图]

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      • 2013-06-08
      相关资源
      最近更新 更多