我有什麼可能是一個愚蠢的問題。如果是,對不起。如何處理Rails中的非寶石依賴關係
我最近接受了一個Rails項目,需要PhantomJS才能使其黃瓜方案正常運行。不幸的是,該應用程序並沒有說它取決於PhantomJS,所以當情景失敗時,它看起來像事情被打破了,並且它不是很清楚爲什麼。
使錯誤停止的唯一方法是做brew install phantomjs
。顯然,這不是一個寶石,安裝PhantomJS寶石也沒有做任何事情。
在Rails項目中處理非寶石依賴的正確方法是什麼?
我有什麼可能是一個愚蠢的問題。如果是,對不起。如何處理Rails中的非寶石依賴關係
我最近接受了一個Rails項目,需要PhantomJS才能使其黃瓜方案正常運行。不幸的是,該應用程序並沒有說它取決於PhantomJS,所以當情景失敗時,它看起來像事情被打破了,並且它不是很清楚爲什麼。
使錯誤停止的唯一方法是做brew install phantomjs
。顯然,這不是一個寶石,安裝PhantomJS寶石也沒有做任何事情。
在Rails項目中處理非寶石依賴的正確方法是什麼?
我不相信有一個標準的方法。
PhantomJS是一個獨立的應用程序,需要像這樣安裝。如果您的應用程序依賴於它,它將與安裝redis或postgreSQL相同。
雖然你是正確的安裝使用自制軟件,使更新刪除更容易。
這不是一件小事。 AFAIK,沒有內置的實用程序來聲明除gem/rubies之外的其他內容的依賴關係。 Ruby是一種解釋型語言,因此可以運行在各種環境中;管理這個級別的依賴將是一項相當複雜的任務。
很多人處理這個使用部署工具像capistrano或puppet,以確保環境中運行的應用程序是足夠的,並安裝所需的依賴關係如果需要的話。通常,您將創建一個rake任務來完成此操作,並通過capistrano呼叫,或者讓用戶手動調用它。
如果你想警告依賴的人,一個選擇是使用初始化來檢查應用程序的啓動是必需的依賴安裝在環境,併發出警告(或完全關閉應用程序)如果不。
另一種選擇將簡單地將執行依賴性檢查作爲一系列測試。因此,如果這些測試失敗,您可以提供有關缺少的詳細說明。
總而言之,你至少可以做的只是列表環境依賴關係在你的文檔。確保它位於主文檔文件的頂部。
很好的答案,以及很好的建議。我已經選擇了其他的答案,但我upvoted。我在其他框架(Symfony)中看到了依賴檢查,所以也許我會複製這個想法。 – 2013-03-27 19:27:23
我接受了這個答案,雖然不是沒有悲傷。 :)順便說一句,這是我從這裏來的地方:http://www.12factor.net/dependencies – 2013-03-27 19:17:16
啊,但最後一段 - 「十二個因素的應用程序也不依賴於隱含的存在任何系統工具.',使用ImageMagick的一個例子,我將它與PhantomJS相提並論:) – 2013-03-27 20:05:44
m_x的回答很好 - 我總是推薦使用像廚師或木偶這樣的服務器配置系統。沒有明確指出軌道的一部分,但是有一個很好的方法可以確信一切都在它應該在的地方。 – 2013-03-27 20:08:57