Ruby trên OS X 10.9 Bỏ qua đá quý vì tiện ích mở rộng không được xây dựng


36

Cứ sau vài ngày điều này sẽ xảy ra khi thực hiện nhiều thứ khác nhau trong Ruby CLI (đáng chú ý là sử dụng knifetiện ích cho Chef) trên OS X (không thể sao chép trong các môi trường khác; Linux, FreeBSD, v.v.):

Ignoring bcrypt-3.1.7 because its extensions are not built.  Try: gem pristine bcrypt-3.1.7
Ignoring bigdecimal-1.2.5 because its extensions are not built.  Try: gem pristine bigdecimal-1.2.5
Ignoring ffi-yajl-1.1.0 because its extensions are not built.  Try: gem pristine ffi-yajl-1.1.0
Ignoring gem-wrappers-1.2.5 because its extensions are not built.  Try: gem pristine gem-wrappers-1.2.5
Ignoring gem-wrappers-1.2.4 because its extensions are not built.  Try: gem pristine gem-wrappers-1.2.4
Ignoring pg-0.17.1 because its extensions are not built.  Try: gem pristine pg-0.17.1
Ignoring psych-2.0.6 because its extensions are not built.  Try: gem pristine psych-2.0.6
Ignoring sqlite3-1.3.9 because its extensions are not built.  Try: gem pristine sqlite3-1.3.9

Và trong khi đó là một sửa chữa đơn giản, nó vẫn tiếp tục xảy ra. Đa co ai đi ngang qua đây chưa?

$ ruby -v
ruby 1.9.3p484 (2013-11-22 revision 43786) [x86_64-darwin11.2.0]

Câu trả lời:


5

Gần đây tôi đã chuyển sang từ rvmđến chrubyvà ran gem update --system, thats khi vấn đề bắt đầu xảy ra cho tôi. Sau đó, bất cứ khi nào tôi chạy bó tôi đều bị tàn sát với những cảnh báo tương tự. Vẫn không chắc chắn gây ra vấn đề.

Ignoring curb-0.8.6 because its extensions are not built. Try: gem pristine curb-0.8.6

Không chắc cái gì đã sửa nó, nhưng tôi đã làm 2 điều và cảnh báo biến mất:

gem uninstall bundler
gem install bundler

gem install curb

Thật kỳ lạ, nó bắt đầu với tôi khi tôi chuyển từ Ruby gói OS X sang RVM. Nói chung, nó sẽ tự xóa sau một vài ngày hoặc nếu tôi mở một phiên mới (đó là một rắc rối khi nó xảy ra vào giữa trưa). Tôi thường phải cài đặt lại bất cứ thứ gì tôi đang sử dụng tại một thời điểm nhất định và đó thường là Dao.
tony_perkis666

nó đã xảy ra với hàng tá đá quý trên máy của tôi. tôi nghĩ rằng họ phải được xây dựng lại
lfender6445

Đối với bản thân tôi, tôi đã phải gỡ cài đặt từng viên đá quý mà nó đưa ra cảnh báo và sau đó cài đặt lạibundle install
Noah Passalacqua

"Tôi đã bị tàn sát" - wow.
B Bảy

Bất cứ điều gì tôi cố gắng nhận được You don't have write permissions for the /Library/Ruby/Gems/2.3.0 directory, những vấn đề đó đều tự bắt đầu, tôi thậm chí không sử dụng ruby ​​cho tất cả những gì tôi biết. Nhưng tôi gặp lỗi về các tiện ích mở rộng không được xây dựng cho clocale-0.0.3bất cứ khi nào tôi bắt đầu một trình bao mới
Vadorequest

62

Trong trường hợp của tôi, tôi bắt đầu thấy lỗi này sau khi cài đặt rvm

Tôi giải quyết vấn đề như vậy với: gem pristine --all


thật là một lệnh hữu ích
lfender6445

2
Điều này đã làm việc ... Nhưng tôi không biết tại sao
Hubro

1
gỡ cài đặt gói và cài đặt không hoạt động. Nhưng cái này đã làm việc! Cảm ơn!
Srikanth Jeeva

3
Đây phải là câu trả lời được chấp nhận.
ILikeTurtles 2/2/2016

19

Vấn đề này xảy ra, nếu một viên đá quý được biên dịch chống lại một thủ thư khác như hiện đang chạy. Ví dụ: nếu một người sử dụng một viên ruby ​​nằm trong thư mục nhà của mình với chruby và cài đặt đá quý vào ~ / .gem / ruby, nhưng chạy một tập lệnh gọi / usr / bin / ruby, sử dụng lại các viên đá quý được cài đặt ở đó. Trong trường hợp gem pristine --allnày sẽ không giúp ích gì, vì đá quý chỉ có thể được liên kết với một phiên bản ruby.


Ahhhh cảm ơn bạn! Tôi đã nhận được lỗi đó khi chạy "rails s". Tôi chuyển sang "bundle exec rails s" và vấn đề đã biến mất.
Gerry

1
đây phải là câu trả lời được chấp nhận
Dominik Schreiber

1
Câu trả lời này là đúng. Nếu sự cố xảy ra trong kho lưu trữ Rails nơi lưu trữ đá quý vendor/bundle, chỉ cần xóa chúng bằng rm -rf vendor/bundlevà cài đặt lại chúng với bundle install.
vmarquet

Cảm ơn bạn. Tôi đã cố gắng gem pristine --allcho đến khi mặt tôi tái xanh và bây giờ tôi biết tại sao nó không hoạt động ...
GDP2


2

Điều này làm việc cho tôi trên MacOs Sierra:

xcode-select --install
gem install nokogiri

Tôi đã cài đặt toàn bộ xcode trước khi chạy các lệnh trên, nhưng tôi phải làm điều này bằng mọi cách, có lẽ vì tập lệnh đầu tiên cập nhật một số thư viện / phụ thuộc nội bộ.


Đây là những gì tôi đang tìm kiếm giải pháp MacOS Sierra. Cảm ơn
Sakares

1

Hãy chắc chắn rằng bạn đang chạy "gem pristine --all" cho phiên bản ruby ​​phù hợp. Nếu / usr / bin / ruby ​​đang được gọi là ... hãy sử dụng "/ usr / bin / gem pristine --all". Điều này không rõ ràng nếu bạn đang sử dụng rvm và bạn đã cài đặt 10 phiên bản ruby.

Điều này đã khắc phục vấn đề của tôi trong một ngày và sau đó nó trở lại.

Điều có vẻ là một giải pháp lâu dài hơn là thực hiện "rvm reset" để có ruby ​​mặc định là phiên bản OSX / usr / bin / ruby ​​và / usr / bin / gem được cài đặt. Nếu tôi muốn sử dụng phiên bản ruby ​​mới hơn cho dự án, tôi sử dụng .ruby-version và .ruby-Gemet trong thư mục gốc của dự án để đặt rõ ràng phiên bản ruby ​​tôi muốn sử dụng. Không lý tưởng ... nhưng nó sẽ làm cho lỗi này biến mất.



0

Tôi rất mới với đường ray vì vậy đây có thể là lời khuyên hoàn toàn sai lầm nhưng vì không có giải pháp nào khác hiệu quả với tôi nên tôi nghĩ tôi sẽ chia sẻ với tôi.

Mic92 và Gerry đưa tôi đi đúng hướng: Tôi đang sử dụng rails scó thể gây ra lỗi vì nó chạy phiên bản đường ray có thể là phiên bản khác với dự án.

Tôi đã cố gắng kết nối bin/rails server, tôi gặp một lỗi khác (thiếu đá quý) vì vậy tôi đã chạybundle install

Tại thời điểm này, tôi đã gặp một lỗi thứ ba ("phiên bản thư viện không tương thích"), đã spring stopđược chữa khỏi.

Sau đó tôi chạy rails generate controllerlại, mùa xuân khởi động lại và mọi thứ hoạt động (tôi đã khóc một chút).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.