Как обновить Ruby в Google SketchUp для Mac?

1210
Andrei

В настоящее время Google SketchUp для Mac имеет версию Ruby, 1.8.5которая, как мне кажется, несколько устарела. Я могу обновить Ruby до 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 

SketchUp запускается без проблем, а консоль Ruby показывает версию 1.8.7.

1.9.2

Теперь я пытаюсь пойти дальше и обновить до 1.9.2-rc2. Google SketchUp требует i386двоичного файла, который может быть произведен следующими командами

$ cd ~/ruby-1.9.2-rc2/ $ ARCHFLAGS="-arch i386" CFLAGS="-arch i386" LDFLAGS="-arch i386" ./configure --with-arch=i386 $ make && sudo make install 

Затем я копирую необходимые файлы в SketchUp

$ 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 

и когда я пытаюсь запустить SketchUp, я получаю следующее сообщение об ошибке

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, когда я пытался заставить Sketchup загрузить любой 1.9.x, я получил «точку входа не найдена» для функции ruby ​​C «rb_set_kcode», которой больше нет в 1.9.x (она была переименована, а пользователи Ruby - нет). псевдоним старого имени к новому имени.)

В основном Sketchup вызывает rb_set_kcode для установки кодировки символов на UTF8 сразу после загрузки интерпретатора Ruby. Он отлично работает для любого Ruby в ветке 1.8.x, но в 1.9.x проект Ruby полностью переработал кодировку символов, дал всем функциям C новые идентификаторы и добавил еще много функций.

Решение для 1.9.x и Sketchup, по-видимому, заключается в том, что Sketchup должен быть «Ruby Version Agile», что означает изменение кодировки Google Guys in Boulder.

1
* "... который я нахожу немного устаревшим." * Для потомков, пожалуйста, подробно об этом. По вашему мнению, зачем Google Sketchup выиграть от обновления Ruby? fideli 12 лет назад 0

1 ответ на вопрос

1
ere

Помимо обновления Ruby на всей вашей машине, которое может быть особенно болезненным и потенциально разрушительным, другой альтернативой будет использование RVM для управления конкретными версиями ruby. Это особенно хорошо, потому что обновление ruby ​​для всей вашей машины может привести к сбою любого другого приложения, которое зависит от конкретной версии.

Вы должны быть в состоянии легко сделать набросок, используя RVM для извлечения вашей конкретной версии ruby ​​через настройку или напрямую, если она запускается из командной строки.

RVM http://beginrescueend.com/

Также есть скринкаст, в котором подробно рассказывается, как установить и управлять RVM

Похожие вопросы