archan937 / motion-bundler

Use Ruby gems and mock require statements within RubyMotion applications
http://www.rubymotion.com/news/2013/05/21/motionbundler-good-old-fashioned-requirements-for.html
MIT License
98 stars 11 forks source link

app.require throwing errors for core library #12

Open bitgangsta opened 11 years ago

bitgangsta commented 11 years ago

Hi-

I've been tearing my hair out trying to figure this out. I added MotionBundler to my project, and now see it compiling stuff in the group :motion category of my Gemfile. However, when I try to add a core ruby class ("set" in my case) to MotionBundler.setup do |app| app.require it fails.

Here is my sample rakefile snip:

MotionBundler.setup do |app|
  app.require 'set'
end

And the error I get is:

/Users/drj/.rvm/rubies/ruby-2.0.0-p195/bin/ruby -e $stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift) /Users/drj/.rvm/gems/ruby-2.0.0-p195@global/bin/rake simulator
/Users/drj/.rvm/gems/ruby-2.0.0-p195@rubymotion/gems/motion-bundler-0.2.1/lib/motion-bundler/require/ripper/builder.rb:9:in `read': No such file or directory - set (Errno::ENOENT)
    from /Users/drj/.rvm/gems/ruby-2.0.0-p195@rubymotion/gems/motion-bundler-0.2.1/lib/motion-bundler/require/ripper/builder.rb:9:in `initialize'
    from /Users/drj/.rvm/gems/ruby-2.0.0-p195@rubymotion/gems/motion-bundler-0.2.1/lib/motion-bundler/require/ripper.rb:36:in `new'
    from /Users/drj/.rvm/gems/ruby-2.0.0-p195@rubymotion/gems/motion-bundler-0.2.1/lib/motion-bundler/require/ripper.rb:36:in `block in parse'
    from /Users/drj/.rvm/gems/ruby-2.0.0-p195@rubymotion/gems/motion-bundler-0.2.1/lib/motion-bundler/require/ripper.rb:32:in `each'
    from /Users/drj/.rvm/gems/ruby-2.0.0-p195@rubymotion/gems/motion-bundler-0.2.1/lib/motion-bundler/require/ripper.rb:32:in `parse'
    from /Users/drj/.rvm/gems/ruby-2.0.0-p195@rubymotion/gems/motion-bundler-0.2.1/lib/motion-bundler/require/ripper.rb:14:in `initialize'
    from /Users/drj/.rvm/gems/ruby-2.0.0-p195@rubymotion/gems/motion-bundler-0.2.1/lib/motion-bundler/require/tracer/log.rb:51:in `new'
    from /Users/drj/.rvm/gems/ruby-2.0.0-p195@rubymotion/gems/motion-bundler-0.2.1/lib/motion-bundler/require/tracer/log.rb:51:in `register'
    from /Users/drj/.rvm/gems/ruby-2.0.0-p195@rubymotion/gems/motion-bundler-0.2.1/lib/motion-bundler/require/tracer/hooks.rb:32:in `require_with_mb_trace'
    from /Users/drj/.rvm/gems/ruby-2.0.0-p195@rubymotion/gems/motion-bundler-0.2.1/lib/motion-bundler/cli.rb:15:in `block in trace'
    from /Users/drj/.rvm/gems/ruby-2.0.0-p195@rubymotion/gems/motion-bundler-0.2.1/lib/motion-bundler/require.rb:14:in `block (2 levels) in mock_and_trace'
    from /Users/drj/.rvm/gems/ruby-2.0.0-p195@rubymotion/gems/motion-bundler-0.2.1/lib/motion-bundler/require.rb:21:in `block in trace'
    from /Users/drj/.rvm/gems/ruby-2.0.0-p195@rubymotion/gems/motion-bundler-0.2.1/lib/motion-bundler/require/tracer.rb:18:in `yield'
    from /Users/drj/.rvm/gems/ruby-2.0.0-p195@rubymotion/gems/motion-bundler-0.2.1/lib/motion-bundler/require.rb:20:in `trace'
    from /Users/drj/.rvm/gems/ruby-2.0.0-p195@rubymotion/gems/motion-bundler-0.2.1/lib/motion-bundler/require.rb:13:in `block in mock_and_trace'
    from /Users/drj/.rvm/gems/ruby-2.0.0-p195@rubymotion/gems/motion-bundler-0.2.1/lib/motion-bundler/require.rb:27:in `block in mock'
    from /Users/drj/.rvm/gems/ruby-2.0.0-p195@rubymotion/gems/motion-bundler-0.2.1/lib/motion-bundler/require/mocker.rb:13:in `yield'
    from /Users/drj/.rvm/gems/ruby-2.0.0-p195@rubymotion/gems/motion-bundler-0.2.1/lib/motion-bundler/require.rb:26:in `mock'
    from /Users/drj/.rvm/gems/ruby-2.0.0-p195@rubymotion/gems/motion-bundler-0.2.1/lib/motion-bundler/require.rb:12:in `mock_and_trace'
    from /Users/drj/.rvm/gems/ruby-2.0.0-p195@rubymotion/gems/motion-bundler-0.2.1/lib/motion-bundler/cli.rb:14:in `trace'
    from /Users/drj/.rvm/gems/ruby-2.0.0-p195@rubymotion/gems/thor-0.18.1/lib/thor/command.rb:27:in `run'
    from /Users/drj/.rvm/gems/ruby-2.0.0-p195@rubymotion/gems/thor-0.18.1/lib/thor/invocation.rb:120:in `invoke_command'
    from /Users/drj/.rvm/gems/ruby-2.0.0-p195@rubymotion/gems/thor-0.18.1/lib/thor.rb:363:in `dispatch'
    from /Users/drj/.rvm/gems/ruby-2.0.0-p195@rubymotion/gems/thor-0.18.1/lib/thor/base.rb:439:in `start'
    from /Users/drj/.rvm/gems/ruby-2.0.0-p195@rubymotion/gems/motion-bundler-0.2.1/bin/motion-bundler:7:in `<top (required)>'
    from /Users/drj/.rvm/gems/ruby-2.0.0-p195@rubymotion/bin/motion-bundler:23:in `load'
    from /Users/drj/.rvm/gems/ruby-2.0.0-p195@rubymotion/bin/motion-bundler:23:in `<main>'
rake aborted!
undefined method `values_at' for false:FalseClass
/Users/drj/.rvm/gems/ruby-2.0.0-p195@rubymotion/gems/motion-bundler-0.2.1/lib/motion-bundler/require/tracer/log.rb:55:in `register'
/Users/drj/.rvm/gems/ruby-2.0.0-p195@rubymotion/gems/motion-bundler-0.2.1/lib/motion-bundler/require/tracer/hooks.rb:32:in `require_with_mb_trace'
/Users/drj/.rvm/gems/ruby-2.0.0-p195@rubymotion/gems/motion-bundler-0.2.1/lib/motion-bundler.rb:85:in `block (2 levels) in tracer_require'
/Users/drj/.rvm/gems/ruby-2.0.0-p195@rubymotion/gems/motion-bundler-0.2.1/lib/motion-bundler.rb:85:in `each'
/Users/drj/.rvm/gems/ruby-2.0.0-p195@rubymotion/gems/motion-bundler-0.2.1/lib/motion-bundler.rb:85:in `block in tracer_require'
/Users/drj/.rvm/gems/ruby-2.0.0-p195@rubymotion/gems/motion-bundler-0.2.1/lib/motion-bundler/require.rb:14:in `block (2 levels) in mock_and_trace'
/Users/drj/.rvm/gems/ruby-2.0.0-p195@rubymotion/gems/motion-bundler-0.2.1/lib/motion-bundler/require.rb:21:in `block in trace'
/Users/drj/.rvm/gems/ruby-2.0.0-p195@rubymotion/gems/motion-bundler-0.2.1/lib/motion-bundler/require/tracer.rb:18:in `yield'
/Users/drj/.rvm/gems/ruby-2.0.0-p195@rubymotion/gems/motion-bundler-0.2.1/lib/motion-bundler/require.rb:20:in `trace'
/Users/drj/.rvm/gems/ruby-2.0.0-p195@rubymotion/gems/motion-bundler-0.2.1/lib/motion-bundler/require.rb:13:in `block in mock_and_trace'
/Users/drj/.rvm/gems/ruby-2.0.0-p195@rubymotion/gems/motion-bundler-0.2.1/lib/motion-bundler/require.rb:27:in `block in mock'
/Users/drj/.rvm/gems/ruby-2.0.0-p195@rubymotion/gems/motion-bundler-0.2.1/lib/motion-bundler/require/mocker.rb:13:in `yield'
/Users/drj/.rvm/gems/ruby-2.0.0-p195@rubymotion/gems/motion-bundler-0.2.1/lib/motion-bundler/require.rb:26:in `mock'
/Users/drj/.rvm/gems/ruby-2.0.0-p195@rubymotion/gems/motion-bundler-0.2.1/lib/motion-bundler/require.rb:12:in `mock_and_trace'
/Users/drj/.rvm/gems/ruby-2.0.0-p195@rubymotion/gems/motion-bundler-0.2.1/lib/motion-bundler.rb:80:in `tracer_require'
/Users/drj/.rvm/gems/ruby-2.0.0-p195@rubymotion/gems/motion-bundler-0.2.1/lib/motion-bundler.rb:23:in `block in setup'
/Users/drj/.rvm/gems/ruby-2.0.0-p195@rubymotion/gems/bubble-wrap-1.3.0/lib/bubble-wrap/ext/motion_project_app.rb:12:in `call'
/Users/drj/.rvm/gems/ruby-2.0.0-p195@rubymotion/gems/bubble-wrap-1.3.0/lib/bubble-wrap/ext/motion_project_app.rb:12:in `block in setup_with_bubblewrap'
/Library/RubyMotion/lib/motion/project/config.rb:108:in `call'
/Library/RubyMotion/lib/motion/project/config.rb:108:in `block in setup'
/Library/RubyMotion/lib/motion/project/config.rb:108:in `each'
/Library/RubyMotion/lib/motion/project/config.rb:108:in `setup'
/Library/RubyMotion/lib/motion/project/app.rb:64:in `config'
/Users/drj/.rvm/gems/ruby-2.0.0-p195@rubymotion/gems/motion-rubberstamp-0.0.6/lib/motion/project/rubberstamp.rb:46:in `create_caption'
/Users/drj/.rvm/gems/ruby-2.0.0-p195@rubymotion/gems/motion-rubberstamp-0.0.6/lib/motion/project/rubberstamp.rb:82:in `block (2 levels) in <top (required)>'
/Library/RubyMotion/lib/motion/project/template/ios.rb:55:in `block in <top (required)>'
-e:1:in `load'
-e:1:in `<main>'
Tasks: TOP => build:simulator => rubberstamp:run
(See full trace by running task with --trace)

Any help would be most appreciated. I'm using this by the book, and "set" is a core class in Ruby... so this seems very odd.

dubroe commented 10 years ago

Did you ever figure this out?

bitgangsta commented 10 years ago

Nope, I stopped using the class instead :( Moved on to more pressing problems unfortunately. But I still would love to solve this one.

AteqEjaz commented 10 years ago

Guys i also struck with the same problem!! anyone solved this... i'm also trying!!

benbonnet commented 10 years ago

+1

AteqEjaz commented 10 years ago

For routing... main_app.require should do the trick.

sohocoke commented 10 years ago

Routing?

nomhaq commented 10 years ago

What's that

Sent from my iPhone

On Mar 14, 2014, at 5:23 AM, Ateq Ejaz notifications@github.com wrote:

main_app.require should do the trick.

— Reply to this email directly or view it on GitHub.

benbonnet commented 10 years ago

Same problem; getting the following :

..motion_bundler_path../lib/motion-bundler/require/ripper/builder.rb:9:inread': No such file or directory - etc.so (Errno::ENOENT)`

ruby-2.0.0-p353

lucaslt89 commented 10 years ago

anyone with a solution for this issue?

andreheijstek commented 9 years ago

Here another person trying to use set