2012-01-27 30 views
5

Tôi đang gặp vấn đề với đá quý libv8 với ruby ​​1.9.3p0 (phiên bản 2011-10-30 33570) [x86_64-darwin10.8.0]. gem install libv8 hoạt động tốt và tôi cóvấn đề cài đặt bó với libv8 và đường ray

gem 'therubyracer' 

trong Gemfile tôi và điều này có một sự phụ thuộc vào libv8 được cài đặt khi tôi làm một 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) 
... 

nhưng khi tôi chạy:

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

không thể tìm thấy libv8 - đây có phải là sự cố 32/64 bit không? Nếu vậy, làm thế nào để giải quyết nó?

Trả lời

1

Tôi nghi ngờ điều này là do tôi có bit không khớp 32/64.

tôi giải quyết này như sau:

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

Nếu bạn đóng gói đá quý vào nhà cung cấp/bộ nhớ cache, khi bạn triển khai, bạn sẽ có những viên đá quý được đóng gói cho kiến ​​trúc môi trường phát triển của bạn - ví dụ: 32 bit hoặc OSX. Nếu bạn sau đó triển khai vào một môi trường sản xuất bằng cách sử dụng đá quý đóng gói, bạn có thể yêu cầu phiên bản bổ sung. –

0

Bạn đã thử bundle exec rails s? Có thể có một cuộc xung đột giữa những viên đá quý bạn đã cài đặt trên hệ thống của bạn và những viên đá quý được yêu cầu cho dự án của bạn để chạy.

1

Một giải pháp khác là sử dụng nodejs thay vì therubyracer. Bạn cài đặt nó trên máy chủ bằng cách sử dụng apt-get/yum, vì vậy không cần Gemfile của bạn bao gồm execjs hoặc therubyracer.

1

Tôi đã có một vấn đề tương tự triển khai từ một hộp x86 dev đến một máy chủ x86_64 (sử dụng capistrano)

Khi tôi đã làm việc triển khai, tôi đã cùng 'Không thể tìm libv8-3.3.10.4 trong bất kỳ thông điệp của các nguồn. Điều này là do chạy 'gói gói' trên máy x86 chỉ sao chép x86 vào thư mục/vendor/cache!

Tôi đã sửa lỗi này bằng cách thêm tệp đá quý linux x86_64 vào thư mục/vendor/cache để nó đồng ý với kiến ​​trúc máy chủ triển khai. Triển khai chạy tốt sau đó.

1

Bạn thực sự có thể cài đặt phiên bản trên Mavericks:

gem install libv8 -v 3.11.8.17 - --with-system-v8

Bạn có thể cung cấp bất cứ điều gì libv8 ngọc phiên bản bạn muốn cài đặt. .

Sau đó bạn có thể phải đối mặt với vấn đề với việc cài đặt therubyracer sau đó

cập nhật phiên bản Gemfile để trỏ đến phiên bản cuối cùng như sau:

gem "therubyracer", "~> 0.10.2"

và tôi đã có thể cài đặt thành công đá quý.

Nếu bạn muốn tự cài đặt các viên ngọc, bạn có thể sử dụng:

gem install therubyracer --version "~> 0.10.2"

0

tôi giải quyết vấn đề này bằng cách cài đặt nodejs (phiên bản mới nhất). Những gì nó làm là nó cài đặt thư viện libv8 -dev cùng với nó.Vì vậy, thay vì cài đặt gem, thứ bạn cần là thư viện riêng.

Bạn có thể cài đặt trực tiếp hoặc cài đặt nút cũng như trong hệ thống của bạn và lỗi trên phải được giải quyết.

Các vấn đề liên quan