0

背景:私は多くの開発者がアクセスするJavaライブラリを持っています-通常はJavaを介して。ただし、一部の開発者は、RubyAPIを介してこれにアクセスすることを望んでいます。Java-Ruby APIを実装するために、Jrubyの方向に重力をかけています。

質問:

  1. 私の主な懸念は、これらの開発者が現在のRubyonRails開発フレームワークでAPIを利用できないことです。ただし、代わりにJrubyのRails環境内で動作する必要があります。これは事実になるのでしょうか?

  2. おそらく、JrubyとRubyonRailsの間の接続が欠落しています。しかし、Railsで作業することも、JrubyのRailsで作業することもできるようです。これらは、技術的には2つの異なる開発環境ですか?

誰かがこれに当てることができるどんな光でも本当にありがたいです。

編集:このAPIに対応するために、開発者(実際にはクライアントをより具体的にする)にプロジェクトに大きな変更を加えるように強制することは、実際にはオプションではありません。したがって、RailsアプリをJruby on Railsアプリに変換する必要がある場合、おそらく誰かが私にさらに別の代替手段(Jruby以外)を提供する可能性がありますか?

4

2 に答える 2

1

同様の質問に対する回答が役立つ場合があります。アプリケーションによっては、RoRアプリをシームレスに移植して、JRubyで実行できる場合がありますが、その回答に記載されている注意事項があります。しかし、そうすることの利点が努力と潜在的なリスクのバランスをとっていることを確認したいと思うでしょう。

あるいは、これらのJavaライブラリ機能をJRuby上に構築された内部Webサービス(RailsまたはSinatraなど)としてMRIRailsアプリで利用できるようにすることを検討することもできます。そうすることで、要素を切り離し、プロジェクトのリスクを軽減できます。その後、その作業に慣れている場合は、それらを折りたたんで元に戻すことを検討してください。それが理にかなっている場合は、すべてJRuby-on-Railsの下にあります。

更新:質問者の要求に応じて詳細を追加

私はあなたのアプリケーションやJavaライブラリが何をするのかよく知らないので、これはやや抽象的ですが、あなたのニーズに合うように空欄を埋めることができると信じています。

RailsアプリをJrubyで実行するために完全に移植することは現実的ではないようです。罰金。したがって、1つのアイデアは、JavaライブラリをWebサービス(RESTfulなど)としてRoRアプリケーションに公開することです。これをJLSと呼びましょう。この場合、JavaまたはJrubyネットワークサービスとして実行され、要求をリッスンし、ライブラリを呼び出して応答を返します(ここでは一般的に手を振っていますが、あなたはその考えを理解しています)。

開発者が何に慣れているかに応じて、Javaでサーブレットコンテナを実行するJLSを作成できます。または、RubyでJLSを開発し(Javaライブラリにバインド)、RailsやSinatraなどのフレームワークを使用して実装することもできます。

RoR側では、JLS RESTfulを作成したと仮定すると(そして、それがあなたの場合でも適切かどうかはわかりません)、ActiveResourceJLSとの通信にこの機能を使用できます。

要約すると、RoRアプリとJLSは別々のメモリスペース(おそらく異なるホスト)で実行されます。それぞれをある程度独立して開発することができ(もちろんRESTfulインターフェース契約を使用)、RoRアプリを中断したり危険にさらしたりする必要はありません。

この提案されたオプションにはたくさんの小さな印刷物が付属していますが、一般的なアイデアを理解していただければ幸いです。

于 2010-07-28T21:40:21.820 に答える
1

まず、Ruby on Railsは単なるRubyコードであり、同じコードをJRuby環境(JVM上)またはMRI(Cで記述)ランタイムで実行できることを説明しておきます。

ただし、JavaクラスをロードしてJavaAPIを使用できるのはJRubyだけです。クライアントにデプロイメント環境をJRubyに切り替えるように依頼することは現実的ではないかもしれませんが、XMLまたはJSONを話すJavaでサービスをセットアップできれば、Railsから簡単に使用できるようになります。

于 2010-07-30T02:20:01.017 に答える