1

複数の環境 (より具体的には、WPF、Silverlight、および WinForms ですが、それほど重要ではありません) をサポートする必要がある [Iron]Ruby プロジェクトを作成しています。以下は、私が立ち往生している場所の実際の具体的な例です。

ライブラリの一部としてクラスを実装Bitmapする必要があります。このクラスは、実行中の環境に応じて異なる方法で実装する必要があります (たとえば、これを Silverlight アプリとしてブラウザーで実行している場合、アクセスできません)。デスクトップで利用できるメソッドに)。ここに問題があります。私は のインスタンス化Bitmapも、ライブラリ内の他のクラスも制御しません。なんで?これは別のアプリケーションのポートであるためです。また、アプリケーションのコードはありますが、そのコードを変更して互換性を壊したくはありません。ただし、アプリケーションへのエントリ ポイントを制御しているので、必要requireことは何でも実行でき、セットアップを実行し、グローバル変数を構成できます。

編集:興味があるなら、これは私が取り組んでいるプロジェクトです: http://github.com/cstrahan/open-rpg-maker

知りたいことは次のとおりです。

  1. Bitmap が適切に動作するように、起動時に構成をどのように設定すればよいですか?
  2. git リポジトリ / ソース ツリーでこれをどのように構成すればよいですか?

以下は私の考えの一部ですが、もっと良いアイデアがあると確信しています。

  1. 起動時の構成はどのように設定すればよいですか?
    • アプリを配布するときはrequire、対象の環境に応じて、次のように先頭に を配置しますrequire silverlight/bitmap。この場合、lib/bitmap.rb空にlib/silverlight/bitmap.rbなりますが、実装が含まれます。または...
    • すべての実装を に詰め込みlib/bitmap.rb、クラス インスタンス変数または定数に基づいて条件付きで実行しますBitmap.impl = "silverlight"または...
    • ライブラリはほぼ同じですが、ディストリビューションごとに個別のブランチを維持します。
  2. git リポジトリ / ソース ツリーでこれをどのように構成すればよいですか?
    • ディストリビューションごとに別々のブランチ。または...
    • 個別の実装固有のサブフォルダー (例: lib/silverlight/bitmap.rb)。

私は Ruby を初めて使用するので、そのようなベスト プラクティスにあまり詳しくありません (私は C# 出身です)。どんなアドバイスでも大歓迎です!

-チャールズ

4

0 に答える 0