2012-05-06 2 views
4

У меня разные проблемы, связанные с зависимостью CocoaPods от работы в RubyMotion. Во-первых, если я добавлю dependency 'JSONKit' в свой файл Rakefile, а затем запустим rake, он будет прерван с ошибкой can't convert Pathname into String. rake --trace затем производит следующий вывод:Проблемы с RubyMotion и CocoaPods

** Invoke default (first_time) 
** Invoke simulator (first_time) 
** Invoke build:simulator (first_time) 
** Execute build:simulator 
/usr/bin/gen_bridge_metadata --format complete --no-64-bit --cflags "-I. -I." JSONKit.h -o "JSONKit.bridgesupport" 
invalid option: --no-64-bit 
Usage: gen_bridge_metadata [options] <headers...> 
Use the `-h' flag or consult gen_bridge_metadata(1) for help. 
rake aborted! 
Command failed with status (1): [/usr/bin/gen_bridge_metadata --format comp...] 
/Users/xxxx/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/rake/file_utils.rb:53:in `block in create_shell_runner' 
/Users/xxxx/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/rake/file_utils.rb:45:in `call' 
/Users/xxxx/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/rake/file_utils.rb:45:in `sh' 
/Users/xxxx/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/rake/file_utils_ext.rb:39:in `sh' 
/Library/RubyMotion/lib/motion/project/vendor.rb:93:in `block in build_static' 
/Library/RubyMotion/lib/motion/project/vendor.rb:34:in `chdir' 
/Library/RubyMotion/lib/motion/project/vendor.rb:34:in `build_static' 
/Library/RubyMotion/lib/motion/project/vendor.rb:23:in `build' 
/Library/RubyMotion/lib/motion/project/builder.rb:37:in `block in build' 
/Library/RubyMotion/lib/motion/project/builder.rb:36:in `each' 
/Library/RubyMotion/lib/motion/project/builder.rb:36:in `build' 
/Library/RubyMotion/lib/motion/project/app.rb:50:in `build' 
/Library/RubyMotion/lib/motion/project.rb:33:in `block (2 levels) in <top (required)>' 
/Users/xxxx/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/rake/task.rb:205:in `call' 
/Users/xxxx/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/rake/task.rb:205:in `block in execute' 
/Users/xxxx/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/rake/task.rb:200:in `each' 
/Users/xxxx/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/rake/task.rb:200:in `execute' 
/Users/xxxx/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/rake/task.rb:158:in `block in invoke_with_call_chain' 
/Users/xxxx/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize' 
/Users/xxxx/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/rake/task.rb:151:in `invoke_with_call_chain' 
/Users/xxxx/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/rake/task.rb:176:in `block in invoke_prerequisites' 
/Users/xxxx/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/rake/task.rb:174:in `each' 
/Users/xxxx/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/rake/task.rb:174:in `invoke_prerequisites' 
/Users/xxxx/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/rake/task.rb:157:in `block in invoke_with_call_chain' 
/Users/xxxx/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize' 
/Users/xxxx/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/rake/task.rb:151:in `invoke_with_call_chain' 
/Users/xxxx/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/rake/task.rb:176:in `block in invoke_prerequisites' 
/Users/xxxx/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/rake/task.rb:174:in `each' 
/Users/xxxx/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/rake/task.rb:174:in `invoke_prerequisites' 
/Users/xxxx/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/rake/task.rb:157:in `block in invoke_with_call_chain' 
/Users/xxxx/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize' 
/Users/xxxx/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/rake/task.rb:151:in `invoke_with_call_chain' 
/Users/xxxx/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/rake/task.rb:144:in `invoke' 
/Users/xxxx/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/rake/application.rb:116:in `invoke_task' 
/Users/xxxx/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/rake/application.rb:94:in `block (2 levels) in top_level' 
/Users/xxxx/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/rake/application.rb:94:in `each' 
/Users/xxxx/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/rake/application.rb:94:in `block in top_level' 
/Users/xxxx/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/rake/application.rb:133:in `standard_exception_handling' 
/Users/xxxx/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/rake/application.rb:88:in `top_level' 
/Users/xxxx/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/rake/application.rb:66:in `block in run' 
/Users/xxxx/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/rake/application.rb:133:in `standard_exception_handling' 
/Users/xxxx/.rbenv/versions/1.9.3-p194/lib/ruby/1.9.1/rake/application.rb:63:in `run' 
/Users/xxxx/.rbenv/versions/1.9.3-p194/bin/rake:32:in `<main>' 
Tasks: TOP => default => simulator => build:simulator 

Каталог поставщиков в проекте содержит различные JSONKit файлы.

Во-вторых, в другом RubyMotion приложение, если добавить dependency 'Nimbus' к моему Rakefile, а затем запустить rake приложение строит, но ошибки с неинициализированными постоянных ошибок, когда я пытаюсь использовать что-нибудь Nimbus связанных в моем коде и ни каталога поставщика не создается ,

В чем проблема в этих двух случаях?

ответ

4

В игре есть пара вопросов.

не может преобразовать PathName в строку

Update: По состоянию на 5/7/12, вы можете просто sudo motion update и это будет исправлено

Эта ошибка связана с тем, что вы используете Ruby 1.9. Хотя я не вижу в нем явного указания в документации, тот факт, что примеры установки этого значения относятся к использованию sudo в командах gem install, означает, что предполагается, что вы используете встроенный рубин OS X (1.8.7). Если вы переключите свой проект на системный рубин (добавьте в него файл .rbenv-version с system). С другой стороны, если вы хотите придерживаться 1.9, вы можете изменить линию 22 из /Library/RubyMotion/lib/motion/project/vendor.rb читать:

App.info 'Build', @path.to_s 

После того, как сделать это, есть хороший шанс, то вы получите сообщение об ошибке, как это:

ERROR! Building vendor project `./vendor/JSONKit' failed to create at least one `.a' library.` 

Вам нужно отредактировать линии 77 из того же файла для чтения:

objs = Dir.glob('**/*.o') # Removed the leading "*/" 

Затем rake должны, наконец, работать должным образом.

Проблема была подана на motion-cocoapods репо в отношении этих вопросов: https://github.com/HipByte/motion-cocoapods/issues/1

Кроме того, я подал официальный билет поддержки для этого с помощью motion support. (Помните, что вы заплатили деньги за это совершенно новый продукт, который включает в себя поддержку;! Использовать)

Nimbus

Проблема здесь состоит в том, что вы требующие cocoapod верхнего уровня. Так как у него есть «подпрограммы», вам нужно напрямую их потребовать, поэтому, возможно, dependency 'Nimbus/Core'. Вы можете увидеть полный список из них here (см s.subspec записи)

+0

Благодаря Дилан. Я пробовал обходить rbenv, как вы предлагали, но это привело к другой ошибке (https://gist.github.com/fa676e1f52349067d49e). Поэтому вместо этого я отредактировал vendor.rb, как вы сказали, но все еще оставляет меня с недопустимой опцией: --no-64-bit', как указано ниже shawn42. Спасибо, что решение Nimbus было мертвым. – alistairholt

+1

Да, я не столкнулся с 64-битной ошибкой на моей машине, но, похоже, ответ shawn42 ниже должен помочь в этом. –

+0

Кроме того, спасибо за подачу заявки на поддержку. Я сделал это сам в пятницу вечером, но я не получил никакого ответа - догадываясь, что ребята из HipByte очень заняты прямо сейчас! – alistairholt

1

Компиляция ошибка о --no-64-битным флагом из-а, но на RubyMotion на Snow Leopard. update/Library/RubyMotion/lib/motion/project/vendor.гь на https://gist.github.com/2597428

Буга было подтверждено Laurent Sansonetti:

Привет,

Благодарим за сообщение! Проблема в том, что флаг -no-64-bit был добавлен в Lion, и вы, похоже, используете Snow Leopard. Мы получим это исправлено.

Laurent

+0

Спасибо shawn42. Я действительно бегу Snow Leopard. Ваше изменение от gist плюс изменение Dylan на строку 77 vendor.rb (упомянутое выше) исправило ошибки «-no-64-bit». – alistairholt

Смежные вопросы