Having trouble including BigDecimal

T Tom Carvin 3 years 5 months ago
1 3 0

I'm trying to utilize BigDecimal in a RhoMobile app I have inherited, but I cannot seem to successfully use it.  A simple require is all I need from IRB, but things are not so simple with RhoMobile.  No ruby background, so I've hit the wall.  I've located the gem on my system and it appears to include both ruby and C as part of the implementation, so I don't think I can just drop it into the application.  Any tips on including it would be appreciated!

Please Register or Login to post a reply

3 Replies

D Deepali Singh

Hi Tom,

Any luck incorporating BigDecimal library in Rhodes? I am trying to do the same but failing, as the library has got bunch of dependencies.

Thank you in advance.

J Jon Tara

No, you can't just drop it in. You'll need to create a a native extension.

Pure ruby is easy - you just extract the lib directory from the Gem. (OK, not so easy if the Gem you are interested in has a bunch of dependencies...)

For BigDecimal, you will need to make a native extension. Start here:

    Rhomobile | Building a native extension

This one looks easy. Looks like it's a single C file.

Pretty sure there are some additional resources including video,  screencast, examples. Maybe the RhoMobile folks can weigh-in here.

What version of Rhodes? Make sure you follow the docs for the right version. Since 4.0+ it is different, but still supports old extensions at least for now. (Unless you need iOS 64-bit...)

In fact, the next couple of days, I will be converting a 3.x native extension (Objective-C) to 5.x, because I need it to build for iOS 64-bit. (Currently needs SP3 branch from Git, apparently not quite ready for release.)

Please consider open-sourcing your extension when you are done! (You might want to Google or search on GitHub to see if somebody else has done so already.)

Note: Rhodes uses Ruby 1.9.2-p290 internally (regardless of what version you might use to build Rhodes - you need Ruby to build Rhodes only because the build process uses Ruby tools too)

So make sure you grab a version that will work with that. It's good to have a copy of 1.9.2-p290 installed (use rvm) for testing. It's useful for many things, e.g. just testing out some code that you will use in your app, and so you can first test it on desktop with the exact same version. (Realize that some libraries are missing in Rhdoes, etc. though.)

So, to clarify, what I would first do is to install Ruby 1.9.2-p290 on your development machine using rvm. Create a GemSet and install the BigDecimal gem there. Now you know that you have a compatible BigDecimal. Go grab it from the Gem and follow the instructions in Building a native extension from the link above.

J Jon Tara

Oh, I don't think BigDecimal is even a Gem, right? It's just part of the standard Ruby library, but omitted from Rhodes. So, install 1.9.2-p290 on your development computer (rvm is best to do this!) and go find it in the library.

CONTACT
Can’t find what you’re looking for?