2012-01-27 69 views
5

我遇到的問題與libv8寶石紅寶石1.9.3p0(2011-10-30修訂33570)[x86_64-darwin10.8.0]。創業板安裝libv8工作正常,我有捆綁安裝與libv8和rails的問題

gem 'therubyracer' 
Gemfile

,這已經在其上安裝libv8依賴當我做了bundle install

 
$ bundle exec gem list 

*** LOCAL GEMS *** 

actionmailer (3.1.3) 
actionpack (3.1.3) 
... 
libv8 (3.3.10.4 x86_64-darwin-10) 
... 

但是當我運行:

 
$ rails s 
Could not find libv8-3.3.10.4 in any of the sources 
Run `bundle install` to install missing gems. 

它無法找到libv8 - 這是一個32/64位的問題?如果是這樣,我該如何解決它?

回答

1

我懷疑這是因爲我有一個32/64位不匹配。

我解決了這個有以下幾點:

 
$ irb 
ruby-1.9.3-p0 :001 > `gem list`.each_line {|line| `sudo env ARCHFLAGS="-arch x86_64" gem install #{line.split.first}` 
+2

如果您將寶石包裝到供應商/緩存中,那麼當您部署時,您將擁有適合您開發環境架構的寶石 - 例如, 32位或OSX。如果您使用打包寶石部署到生產環境,則可能需要額外的版本。 – 2012-04-16 11:31:54

0

你試過bundle exec rails s?您系統上安裝的寶石與項目運行所需的寶石之間可能存在衝突。

1

另一種解決方案是使用替代的NodeJS therubyracer。您使用apt-get/yum將其安裝在服務器上,因此您的Gemfile不需要包含execjs或therubyracer。

1

我有一個類似的問題,從86開發框部署到x86_64的服務器(使用Capistrano的)

當我做了部署,我得到了同樣的「不能在任何的發現libv8-3.3.10.4來源'信息。這是因爲在x86機器上運行「捆綁包」只會將x86 gem複製到/ vendor/cache目錄!

我通過明確地將linux x86_64 gem文件添加到/ vendor/cache目錄來解決此問題,以便它可以與部署服務器體系結構一致。此後部署運行良好。

1

實際上,你可以安裝在小牛該版本:

創業板安裝libv8 -v 3.11.8.17 - --with系統-V8

你可以提供你想要安裝任何libv8寶石版本。 。

這個你可能面臨的問題與安裝therubyracer然後

的Gemfile的

更新版本指向的最後一個版本,像這樣經過:

寶石「therubyracer」,「〜> 0.10.2」

我能夠成功安裝寶石。

如果你想手動安裝的寶石,你可以使用:

創業板安裝therubyracer --version 「〜> 0.10.2」

0

我通過安裝的NodeJS(最新版本)解決了這個問題。它所做的是安裝libv8 -dev庫。因此,而不是安裝寶石,你需要的是本地庫。

您可以直接安裝它,或者在您的系統中安裝nodejs,並且應該解決上述錯誤。