Ruby บน OS X 10.9 ไม่สนใจอัญมณีเนื่องจากส่วนขยายไม่ได้ถูกสร้างขึ้น


36

ทุก ๆ สองสามวันนี้จะเกิดขึ้นเมื่อทำสิ่งต่าง ๆ ใน Ruby CLI (โดยเฉพาะการใช้knifeยูทิลิตี้สำหรับ Chef) บน OS X (ไม่สามารถทำซ้ำในสภาพแวดล้อมอื่น ๆ ได้ Linux, FreeBSD และอื่น ๆ ):

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

และในขณะที่มันเป็นการแก้ไขที่ง่าย แต่ก็ยังคงเกิดขึ้น มีใครเคยเจอเรื่องนี้มาก่อนหรือไม่?

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

คำตอบ:


5

ฉันเพิ่งเปลี่ยนจากrvmเป็นchrubyและวิ่งgem update --systemนั่นคือเมื่อปัญหาเริ่มเกิดขึ้นกับฉัน หลังจากนั้นทุกครั้งที่ฉันวิ่งมัดผมก็ถูกฆ่าด้วยคำเตือนเดียวกัน ยังไม่แน่ใจว่าสิ่งใดเป็นสาเหตุของปัญหา

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

ไม่แน่ใจว่าสิ่งที่แก้ไขมัน แต่ฉันทำ 2 สิ่งและคำเตือนหายไป:

gem uninstall bundler
gem install bundler

gem install curb

น่าแปลกที่มันเริ่มต้นสำหรับฉันเมื่อฉันเปลี่ยนจาก OS X ที่เป็นบันด์ทับทิมเป็น RVM โดยทั่วไปแล้วจะล้างด้วยตัวเองหลังจากไม่กี่วันหรือถ้าฉันเปิดเซสชั่นใหม่ (ซึ่งเป็นเรื่องยุ่งยากเมื่อมันเกิดขึ้นเที่ยงวัน) โดยทั่วไปฉันจะต้องติดตั้งสิ่งที่ฉันใช้ในเวลาที่กำหนดและนั่นคือมีด
tony_perkis666

มันเกิดขึ้นกับอัญมณีหลายสิบอันในเครื่องของฉัน ฉันคิดว่าพวกเขาจะต้องสร้างใหม่
lfender6445

สำหรับตัวฉันเองฉันต้องถอนการติดตั้งอัญมณีแต่ละตัวที่แจ้งเตือนแล้วติดตั้งใหม่อีกครั้งbundle install
Noah Passalacqua

"ฉันถูกฆ่า" - ว้าว
B เซเว่

ไม่ว่าฉันจะลองทำอะไรYou don't have write permissions for the /Library/Ruby/Gems/2.3.0 directoryปัญหาเหล่านั้นเริ่มต้นขึ้นเองฉันไม่ได้ใช้ทับทิมสำหรับทุกอย่างที่ฉันรู้ แต่ฉันได้รับข้อผิดพลาดเกี่ยวกับส่วนขยายที่ไม่ได้สร้างขึ้นclocale-0.0.3เมื่อใดก็ตามที่ฉันเริ่มเชลล์ใหม่
Vadorequest

62

ในกรณีของฉันฉันเริ่มเห็นข้อผิดพลาดนี้หลังจากติดตั้ง rvm

ฉันแก้ไขปัญหาดังกล่าวด้วย: gem pristine --all


คำสั่งที่มีประโยชน์คืออะไร
lfender6445

2
มันใช้งานได้ ... แต่ฉันไม่รู้ว่าทำไม
Hubro

1
การถอนการติดตั้ง Bundler และการติดตั้งไม่ทำงาน แต่อันนี้ใช้ได้ผล! ขอบคุณ!
Srikanth Jeeva

3
นี่ควรเป็นคำตอบที่ยอมรับได้
ILikeTurtles

19

ปัญหานี้เกิดขึ้นหากมีการรวบรวมอัญมณีกับบรรณารักษ์อื่นที่กำลังทำงานอยู่ ตัวอย่างเช่นหากใช้ ruby ​​ที่อยู่ในโฮมไดเร็กตอรี่ของเขาด้วย chruby และติดตั้ง gems เป็น ~ / .gem / ruby, แต่รันสคริปต์ที่เรียก / usr / bin / ruby, ซึ่งจะนำอัญมณีที่ติดตั้งกลับมาใช้ใหม่ ในกรณีนี้gem pristine --allจะไม่ช่วยเพราะอัญมณีสามารถเชื่อมโยงกับทับทิมรุ่นเดียวเท่านั้น


อ่าขอบคุณ! ฉันได้รับข้อผิดพลาดนั้นเมื่อใช้งาน "rails s" ฉันเปลี่ยนเป็น "bundle exec rails s" และปัญหาหายไป
เจอร์รี่

1
นี่ควรเป็นคำตอบที่ได้รับการยอมรับ
Dominik Schreiber

1
คำตอบนี้ถูกต้อง หากปัญหาที่เกิดขึ้นในพื้นที่เก็บข้อมูลทางรถไฟที่อัญมณีที่ถูกบันทึกไว้ในvendor/bundleเพียงลบพวกเขาด้วยและติดตั้งพวกเขาด้วยrm -rf vendor/bundle bundle install
vmarquet

ขอขอบคุณ. ฉันพยายามgem pristine --allจนเป็นสีน้ำเงินในหน้าและตอนนี้ฉันรู้ว่าทำไมมันไม่ทำงาน ...
GDP2


2

สิ่งนี้ใช้ได้กับฉันใน MacOs Sierra:

xcode-select --install
gem install nokogiri

ฉันได้ติดตั้ง xcode ทั้งหมดแล้วก่อนที่จะเรียกใช้คำสั่งข้างต้น แต่ฉันต้องทำสิ่งนี้ต่อไปอาจเป็นเพราะสคริปต์แรกอัปเดตบางไลบรารี / การอ้างอิงภายใน


นี่คือสิ่งที่ฉันกำลังมองหาวิธีการแก้ปัญหา MacOS Sierra ขอบคุณ
Sakares

1

ตรวจสอบให้แน่ใจว่าคุณกำลังใช้งาน "gem pristine - all" สำหรับทับทิมรุ่นที่ถูกต้อง หาก / usr / bin / ruby ​​ถูกเรียกใช้ ... ให้ใช้ "/ usr / bin / gem pristine --all" ไม่ชัดเจนหากคุณใช้ rvm และคุณติดตั้งทับทิม 10 เวอร์ชัน

นี่เป็นการแก้ไขปัญหาของฉันเป็นเวลาหนึ่งวันแล้วมันก็กลับมา

สิ่งที่ดูเหมือนจะเป็นทางออกที่ถาวรกว่าคือ "rvm reset" เพื่อให้ ruby ​​เริ่มต้นเป็น OSX version / usr / bin / ruby ​​ที่ติดตั้งและ / usr / bin / gem ถ้าฉันต้องการใช้ ruby ​​รุ่นใหม่สำหรับโครงการฉันใช้. ruby-version และ. ruby-gemset ในไดเรกทอรีรากของโครงการเพื่อตั้งรุ่น ruby ​​ที่ฉันต้องการใช้อย่างชัดเจน ไม่เหมาะ ... แต่ควรทำให้ข้อผิดพลาดนี้หายไป



0

ฉันยังใหม่กับรางมากดังนั้นนี่อาจเป็นคำแนะนำที่เข้าใจผิดอย่างสมบูรณ์ แต่เนื่องจากไม่มีวิธีแก้ไขปัญหาอื่นสำหรับฉันฉันคิดว่าฉันจะแบ่งปันของฉัน

Mic92 และ Gerry ใส่ฉันในการติดตามที่ถูกต้อง: ฉันใช้rails sซึ่งอาจทำให้เกิดข้อผิดพลาดเพราะมันรันเวอร์ชั่นรางที่อาจเป็นรุ่นที่แตกต่างจากโครงการ

ฉันพยายามที่จะเชื่อมต่อกับbin/rails serverฉันได้รับข้อผิดพลาดที่แตกต่างกัน (อัญมณีที่หายไป) ดังนั้นฉันจึงวิ่งbundle install

ณ จุดนี้ฉันได้รับข้อผิดพลาดที่สาม ("รุ่นไลบรารีที่เข้ากันไม่ได้") ซึ่งspring stopหาย

จากนั้นฉันก็วิ่งrails generate controllerอีกครั้งสปริงรีสตาร์ทและทุกอย่างทำงานได้ (ฉันร้องไห้นิดหน่อย)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.