I am using Rhodes to develop android application. I have i开发者_运维百科nstalled HTTpary gem in Rhodes. Now when I am writing the statement "require 'httparty' " at top of the application it gives me error like "No such file to load". What should I do to solve this problem?
From the documentation, scroll down to the section beginning "Adding Ruby Extension Libraries to Your Rhodes Application". It details 3 ways you can include external libraries into your application, summarized below.
- Add ruby extension to an individual application
- Add ruby library to an individual application
- Add ruby library to the Rhodes framework to be built for all applications
The base Rhodes framework only contains things deemed generic enough to be included - so the built application package size can be kept low. Anything not in the base framework can be included in the application through the aforementioned methods.
This is just a guess since w/ Rhodes environment; but if this were a normal ruby script you would need to have require 'rubygems'
first (assuming your used rubygems...).
The Motorola documentation is horrendous; allow me to help if I can. Firstly, examine the constant $LOAD_PATHS
from your Ruby code to see the entire list of paths that Rhodes searches. Any .rb
file in this path is automatically made available to require
.
Then you have to decide whether to add this library to the entire Rhodes framework or just your app; personally I opt for one app at a time, because that way it reduces the chances of incompatibilities, and your apps are still provided all the libraries in rhodes-*version/lib/framework
If you want to add a library to your app, the docs suggest plopping it into the directory app/lib
, but keep in mind that only this exact path is searched, so if you don't have a .rb
file of the same name as your require statement directly under this path, it won't be detected automatically. I mention this because the common structure is a single file with the library name placed directly in lib
, and the actual library contents inside a folder of the same name.
Example: the mime-types
library is made up of: lib/mime-types.rb
and lib/mime/
, which are named differently and can lead to exactly this kind of confusion when including in Ruby.
精彩评论