2014-01-14 54 views
3

我有一個運行Ubuntu的Virtual Box VM。我配置了一個nsf共享(當我說我時,有人幫助了我,所以我沒有在NFS共享上找到很多東西),這樣我就可以在我的Mac主機上工作,並使用它的工具,如Sublime Text。Jekyll --watch命令不能在共享文件夾(nfs)中使用Mac主機使用虛擬機Ubuntu客機

然而,當我運行以下命令:jekyll serve --watch

當我更改代碼的網站是不會自動再生。所以目前我必須停止服務器並再次運行該命令。

編輯:

此外,如果我的NFS共享之外創建一個化身網站能正常工作。只是來賓機器上的標準普通文件夾。

+0

你運行的是什麼版本的jekyll?運行'jekyll -v'來查看。 – jbranchaud

+1

我正在使用1.4.2 –

+0

我發現了這個:https://github.com/jekyll/jekyll/issues/1763 - 似乎在'jekyll 1.2.1'之後,你只需要使用強制輪詢(add) '--force_polling')爲VirtualBox,因爲'inotify'事件不會發送到共享文件夾(如預期),所以'jekyll'必須手動輪詢文件。顯然'jekyll'用於強制輪詢默認最高1.2.1,後來改變。 – mechalynx

回答

2

然後卸載傑基爾v 1.4.2並安裝傑奇v 1.2.1

爲此運行這些命令,

gem uninstall jekyll 
y 
gem install jekyll -v 1.2.1 
+0

安裝1.2.1有效。謝謝! –

-1

更新到傑奇的最新版本,或者至少給傑基爾v 1.2.1

+1

我目前使用1.4.2 –

0

沒有必要安裝舊版本的jekyll - 您需要使用--force_polling。解釋如下:

VirtualBox將不會將共享文件夾的inotify事件發送給來賓。這是故意的:

傑基爾高達1.2.1版本將輪詢目錄在默認情況下的變化,但它已經改變了它偵聽的修改,顯然使用inotify事件的方式,這樣效果更好。這確實突破聽力上的共享文件夾,雖然,但可以使用帶--watch沿--force_polling選項被強制舊行爲使用buildserve時:

jekyll serve --watch --force_polling 

我發現了這一點,從一個相關的問題上哲基爾的回購:

更新:我現在開始通過VirtualBox自己使用jekyll,並且發現jekyll通過共享文件夾觀看文件有時會遇到輕微問題:它會讀取文件修改錯誤,導致文件應該未修改地複製到生成的網站與之前的版本相同,除了垃圾回車結束(即使文件格式設置爲unix行尾)。爲了解決這個問題,你可以使用rsync將文件複製到虛擬硬盤驅動器,並化身觀看該目錄,而不是:

rsync -a --recursive --delete /source/directory/ /target/directory/inside/vm/ 

保留它的自動化,你可以把上面到一個腳本(或沒有)和使用watch

watch -n1 /path/to/rsync/script.sh 

那麼就已經化身看目標目錄,它工作正常。如果你這樣做,--force_polling應該是不必要的,除非你的虛擬化操作系統不使用inotify事件。我已經離開了它,我沒有任何問題,雖然明確inotify事件是一個更加優雅的方式來處理問題。

+0

它的force_polling不是強制輪詢 – Emad

+0

@Emad你的權利,糾正。在我開始使用jekyll之前寫了這篇文章:P – mechalynx

相關問題