2011-04-18 63 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的喜好和去高級。選擇然後選擇性同步並查找要從同步中排除的文件夾[如果您必須深入第一級目錄深度,則還需要高級視圖]