Rubyの拡張機能について(回答)

Rubyの拡張機能について

Q,Rubyの標準、拡張ライブラリ機能でCSVファイルを読み込む方法は?

A,Rhodesに入っているrubyは軽量化のためCRubyからいくつかの標準ライブラリが取り外されております。

 

extensions: ["csv"]

 

現状のRhodesにはcsvライブラリは含まれておりません。
手動でCSVをパースする実装を行うか、弊社では保証できかねますが、CRubyから該当のライブラリを持って来る事が出来ます。
CRuby(1.8.7)のcsvライブラリであれば、Pure Ruby実装ですので、以下の様な形で設置、呼び出すことが出来ます。

  • 1. 外部拡張ディレクトリをRhodesプロジェクトの直下に作成 {RHODES_APP_HOME}/extensions #=> 作成 {RHODES_APP_HOME}/extensions/csv #=> 作成
  • 2. CRuby1.8.7がインストールされていれば以下のファイルを1で作成したextensions/csvフォルダにコピー {CRUBY_HOME_1.8.7}/lib/ruby/1.8/csv.rb
  • CRuby1.8.7がインストールされていない場合は、CRuby1.8.7のソースから以下のファイルをextensions/csvフォルダにコピー {CRUBY_SOURCE_1.8.7}/lib/csv.rb
  • 3. build.ymlにextensions: ["csv"]を追加
  • 4. controller.rbの先頭にrequire 'csv'を追加
    extensions: ["fileutil"]
    FileUtilsは存在致します。
    "fileutil"は"fileutils"のtypoだと思われますので、
    extensions: ["fileutils"]
    として呼び出してください。


Q,C言語の拡張ライブラリの追加方法は?

A,RhodesではC言語で作成された拡張はRhodesのextensionsとしてAndroidやiOS向けに個別にビルドする必要があります。
テンプレートがございますので、プロジェクトで以下のコマンドを発行してください。


rhogen extension mylib(ライブラリ名)

 

上記のコマンドを発行すると、プロジェクト内のextensionsディレクトリ内に、上記の例ですと「mylib」というディレクトリが作成され、各プラットフォームごとの簡単なJavaやObjective-C等のコードが設置されます。
C言語拡張ですと、Androidの場合はJNIでの実装となりますので、
extensions/mylib/ext/mylib/platform/android/jni/mylib.cppをご参照ください。

システム工房エムのサイトへのリンク

住所〒690-0017 島根県松江市西津田3-2-3 TEL.0852-23-8590 FAX.0852-23-8591
Copyright 2008-2010 System Maker M,All right reserved