2011-04-18 75 views
5

我通常在我的本地Dropbox文件夹中开发。 tmp文件夹中的某些文件被浏览器锁定(并使Dropbox保持忙碌状态),Growl引发异常等等。Rails3:更改temp(tmp)目录的位置

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

+0

只要没有关于您的任何配置临时文件夹(它更多的是约定,它是'/ Rails.root/tmp')。但是你可以尝试作弊:从你的Rails应用程序中移除你的tmp文件夹并为它创建一个符号链接作为普通的Rails'tmp'目录。我不知道它是否会工作:)) – fl00r 2011-04-18 20:13:16

+0

符号链接很好用来让Dropbox在Dropbox文件夹外同步文件... :)) – 2011-04-18 20:21:27

+0

好吧,我刚刚试过:)从来没有使用Dropbox – fl00r 2011-04-18 20:22:34

回答

6

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

看起来像符号链接同步原始文件,所以你可能会有相同的锁定问题。

如果你做,那么你可以用其他方式来解决你的问题,即,只需使用符号链接。创建您的项目外部您的保管箱,并将除tmp以外的所有内容符号链接到您的保管箱中的文件夹中。

所以,你可能有你的Rails应用程序在~/work/rails_project/<all the rails dirs including tmp>,然后你就会有一个相应的目录在您的保管箱,如~/dropbox/rails_project然后该目录,你会手动创建一批符号链接,然后删除tmp一个,使用bash你可以这样做:

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

你需要记住,如果你增加了一个新的文件/目录到你的应用程序的根目录下再运行。

+0

对,你是...这是一个创造性的解决方案。谢谢澄清,没有配置选项! – 2011-04-26 18:58:24

4
ENV['TMPDIR'] = Rails.root.join('tmp') 
+0

感谢您的回答。但是,我没有成功使用ENV ['TMPDIR'] ='/ tmp'',无论我把这行放在哪里,既没有配置文件也没有初始化器。你能否扩大你的答案? – 2011-05-11 07:38:33

+0

尝试将 ENV ['TMPDIR'] = Rails.root.join('tmp')。to_s 在您的environment.rb文件中 – rodrigo 2011-05-11 17:36:30

+0

不,这不起作用。 – 2011-05-12 06:51:32

2

您不能更改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

1

您可以通过使用选择性同步从Dropbox的同步被排除目录:http://www.dropbox.com/help/175/en

基本上选择Dropbox的喜好和去高级。选择然后选择性同步并查找要从同步中排除的文件夹[如果您必须深入第一级目录深度,则还需要高级视图]