Ruby:在一个项目中定位多个平台

时间:2010-02-12 18:47:35

标签: ruby ironruby

我正在创建一个[Iron] Ruby项目,需要支持多个环境(更具体地说,WPF,Silverlight和WinForms - 但这并不重要)。以下是我被困的实际具体例子:

我必须将Bitmap类作为库的一部分来实现,并且这个类需要根据它运行的环境以不同的方式实现(例如,如果我在浏览器中运行它作为silverlight应用程序,我将无法访问桌面上可用的方法。这是捕获 - 我不控制Bitmap的实例化,也不控制库中的任何其他类。为什么?因为它是另一个应用程序的端口;虽然我确实有应用程序的代码,但我不想通过更改代码来破坏兼容性。但是,我,控制应用程序的入口点,所以我可以require我需要的任何东西,执行设置,配置全局变量等。

编辑:如果你很好奇,这就是我正在研究的项目: http://github.com/cstrahan/open-rpg-maker

这是我想知道的:

  1. 如何在启动时设置配置,以使Bitmap的行为正常?
  2. 我应该如何在我的git repo / source树中构建它?
  3. 以下是我的一些想法,但我相信你会有更好的想法:

    1. 我应该如何在启动时设置配置?
      • 分发应用时,请根据目标环境在顶部放置require,如下所示:require silverlight/bitmap。在这种情况下,lib/bitmap.rb将为空,而lib/silverlight/bitmap.rb将包含实现。 或者...
      • 填充lib/bitmap.rb中的所有实现,并根据类实例变量或常量有条件地执行:Bitmap.impl = "silverlight"或者...
      • 为每个发行版维护一个单独的分支 - 尽管库几乎完全相同。
    2. 我应该如何在我的git repo / source树中构建它?
      • 每个分发单独的分支。 或者...
      • 单独的特定于实现的子文件夹(例如lib/silverlight/bitmap.rb)。
    3. 对Ruby非常陌生,我不太熟悉这样的最佳实践(我来自C#)。任何建议将不胜感激!

      - 查尔斯

0 个答案:

没有答案