2012-11-27 124 views
0

我正在Mac OS X 10.8上開發Rails,並試圖使用Capistrano來部署到Debian SqueezeBundler,ExecJS,Mac OS X和Debian

部署給了我這個錯誤:

Could not find libv8-3.3.10.4 in any of the sources 

這似乎是我bundle package - 天的Mac OS X二進制寶石:

Updating files in vendor/cache 
... 
* libv8-3.3.10.4-x86_64-darwin-12.gem 

Gemfile有:

gem 'therubyracer' 

我想使用二進制寶石,因爲Squeeze不提供包裝中的Node.js年齡經理和我想保持源代碼編譯出生產服務器。

有沒有什麼辦法告訴Bundler打包都是 Linux和Darwin二進制文件?

順便說一句,therubyracer它怎麼樣呢uses Bundler

+2

從MacOS for Linux交叉編譯?你有些痛苦。 – Reactormonk

+0

我不是指交叉編譯。 'libv8' gem在Linux和Mac上都有二進制變體。我想打包他們兩個。 – Laas

+0

本機擴展在您安裝時進行編譯。 – Reactormonk

回答

0

的一個解決辦法是跳過bundle package這會從源代碼下載的所有包,但他做出部署太慢對我的口味(由於某種原因,它仍然沒有重新每個下載的二進制寶石和編譯libv8可能B/C時間)。

所以我最終將源碼從源文件安裝到Debian中,並將其作爲項目的必備條件。然後我註釋掉的Gemfile這一部分:

group :assets do 
    ... 
    # gem 'therubyracer' 
    ... 
end 

現在我可以再次bundle package整批和部署快速。

0

在你的Debian盒子上安裝libv8

+0

我試過了,但Capistrano使用'bundle --deployment',它不使用系統安裝的gem。 – Laas