वर्तमान में मैक के लिए Google स्केचअप में रूबी संस्करण है 1.8.5
जो मुझे थोड़ा पुराना लगता है। मैं निम्नलिखित कमांड द्वारा रूबी को 1.8.7 (OSX के संस्करण) में अपडेट कर सकता हूं
$ cd /Applications/Google\ SketchUp\ 7/SketchUp.app/Contents/Frameworks/Ruby.framework/Versions/Current
$ ls
Headers/ Resources/ Ruby
$ ls Headers/
config.h defines.h intern.h missing.h ruby.h
$ rm -r Headers
$ ln -s /System/Library/Frameworks/Ruby.framework/Headers
$ ln -fs /System/Library/Frameworks/Ruby.framework/Ruby
स्केचअप समस्या के बिना शुरू होता है और रूबी कंसोल 1.8.7 संस्करण दिखाता है।
1.9.2
अब मैं आगे जाने और अपडेट करने की कोशिश करता हूं 1.9.2-rc2
। Google स्केचअप को i386
बाइनरी की आवश्यकता होती है , जिसे निम्न कमांड द्वारा उत्पादित किया जा सकता है
$ cd ~/ruby-1.9.2-rc2/
$ ARCHFLAGS="-arch i386" CFLAGS="-arch i386" LDFLAGS="-arch i386" ./configure --with-arch=i386
$ make && sudo make install
फिर मैं स्केचअप में आवश्यक फ़ाइलों की प्रतिलिपि बनाता हूं
$ cd /Applications/Google\ SketchUp\ 7/SketchUp.app/Contents/Frameworks/Ruby.framework/
$ rm Headers Ruby
$ cp /usr/local/bin/ruby Ruby
$ mkdir Headers
$ cp /usr/local/include/ruby-1.9.1/i386-darwin10.4.0/ruby/config.h Headers/
$ cp /usr/local/include/ruby-1.9.1/ruby.h Headers/
$ cp -r /usr/local/include/ruby-1.9.1/ruby/* Headers/
$ ls Headers
backward/ defines.h dl.h intern.h missing.h re.h ruby.h util.h vm.h
config.h digest.h encoding.h io.h oniguruma.h regex.h st.h version.h
और जब मैं स्केचअप शुरू करने की कोशिश करता हूं तो मुझे निम्नलिखित त्रुटि रिपोर्ट मिलती है
Exception Type: EXC_BREAKPOINT (SIGTRAP)
Dyld Error Message:
Library not loaded: @executable_path/../Frameworks/Ruby.framework/Versions/A/Ruby
Referenced from: /Applications/Google SketchUp 7/SketchUp.app/Contents/MacOS/SketchUp
Reason: no suitable image found. Did find:
/Applications/Google SketchUp 7/SketchUp.app/Contents/MacOS/../Frameworks/Ruby.framework/Versions/A/Ruby: can't map
/Applications/Google SketchUp 7/SketchUp.app/Contents/MacOS/../Frameworks/Ruby.framework/Versions/A/Ruby: can't map
/usr/local/lib/Ruby: not a file
/usr/lib/Ruby: not a file
Model: MacBookPro7,1, BootROM MBP71.0039.B05, 2 processors, Intel Core 2 Duo, 2.4 GHz, 4 GB, SMC 1.62f5
क्या आप मुझे बता सकते हैं क्यों?
Update1
डैन रथबुन ने कुछ परीक्षण किए और निम्नलिखित पाया
Win32 पर जब मैंने स्केचअप को किसी भी 1.9. लोड करने की कोशिश की तो मुझे माणिक सी फ़ंक्शन "rb_set_kcode" के लिए एक "एंट्री पॉइंट नहीं मिला" जो अब 1.9 में है। (इसका नाम बदल दिया गया था, और रूबी लोगों ने नहीं किया था) पुराने नाम को नए नाम पर उर्फ करें।)
मूल रूप से स्केचअप रूबी दुभाषिया को लोड करने के बाद बस UTF8 में वर्ण एन्कोडिंग सेट करने के लिए rb_set_kcode कॉल करता है। यह 1.8.x शाखा में किसी भी रूबी के लिए ठीक काम करता है, लेकिन 1.9.x में रूबी परियोजना ने पूरी तरह से चरित्र एन्कोडिंग को फिर से परिभाषित किया, और सभी सी कार्यों को नए पहचानकर्ता दिए, और अधिक कार्य जोड़े।
1.9.x और स्केचअप का समाधान ऐसा लगता है कि स्केचअप को "रूबी संस्करण एजाइल" होना चाहिए, जिसका अर्थ है बोल्डर में Google दोस्तों द्वारा एक कोडिंग परिवर्तन।