24

我想知道是否可以在没有源代码的情况下分发 RoR 应用程序以供生产使用?我在 SO 上看过这篇文章,但我的情况有点不同。这将是一个由有一些线索的人管理的应用程序,所以我很高兴仍然需要在客户端设置 Apache/Mongrel/MySQL。我真正想要的只是保护源。编码似乎是分发 PHP 应用程序的一种流行方式(例如:Helpspot)。

我找到了这些潜在的解决方案:

  • Zenobfuscate - 然而,并非所有类型的 Ruby 代码都受支持,因此不包括在内
  • Ruby Encoder - 可能是最好的选择,因为他们的 PHP 编码器看起来不错(但是我还没有尝试过),但它还不可用。我以前用过 IONcube for PHP 并且效果很好,但似乎 IONcube 还没有兴趣
  • Slingshot - 在其他 SO 帖子中提到过,但它解决了与我不同的问题,并且源仍然可见。
  • RubyScript2Exe - 来自 doco,它还没有准备好生产,所以算了。

我听说可能使用 JRuby 和分发字节码可能是实现这一目标的一种方式,但我从未使用过 JRuby,所以我不确定其中涉及到什么。

任何人都可以提供任何想法和/或已知的例子吗?理想情况下,我也希望有某种自动构建方案。

4

7 回答 7

27

您现在最好的选择是使用 JRuby。一点背景:我的公司(BitRock) 与许多专有和商业开源供应商合作。我们帮助他们将通常基于 PHP、Java 或 Ruby 的服务器软件与 Web 服务器或应用程序服务器(Apache、Tomcat)、语言运行时和数据库(通常是 Postgres、MySQL)打包成一个独立的、易于使用的安装程序。我们有大量基于 PHP 的客户(包括您提到的 HelpSpot),但也有一些基于 Rails 的客户。对于 RoR 客户,标准是将 JRuby 与 Tomcat 或 Glassfish 一起使用,尽管在某些情况下,我们还捆绑了一个原生 Ruby 解释器来运行依赖于尚未移植到 JRuby 的库的特定脚本(通常不是应用程序的核心) . JRuby 已经迅速成熟,并且在许多情况下,它实际上比常规 Ruby 更快地运行他们的代码。您还需要考虑,尽管将代码移植到 JRuby 相当简单,但您需要在这方面投入一些时间。你可能想检查JRuby Stack,它是一个免费安装程序,可安装您入门所需的一切。祝你好运!

于 2009-04-25T10:42:52.490 回答
8

如果您发布源代码、混淆或其他方式,您的应用程序将被盗版。例如,参见Mint。这取决于您要构建的内容,但您可能会发现最好将应用程序作为各种混合体发布:具有明确定义的 API 的托管应用程序,以及在客户服务器上运行的组件。只要你的产品的真正价值存在于服务器端,你就不需要混淆你的代码,你可以不加修改地发布源代码。此外,这也可能使您有机会接触到运行 PHP 而不是 Ruby 的客户端。例如,参见Google AnalyticsHopToadScout等。

于 2009-04-24T15:11:10.747 回答
2

你可以,但它不会阻止某人逆向工程或修改它。我记得有一篇关于混淆 Perl 的类似尝试以及如何通过调试器和 5 分钟的努力有效地绕过它们的文章。

于 2008-09-19T04:12:12.153 回答
2

如果你等不及 RubyEncoder 的交付,那么我认为 ZenObfuscate 是最有前途的。尽管可能需要对您的源代码进行一些修改,但他们确实在他们的网站上这样说:

ZenObfuscate 的站点许可费用为 2500 美元,或者可以单独协商其他许可方案。是的,那很贵。那是故意的。但不要让这阻碍你太多。如果您的产品真的很酷,并且我们希望看到它成功,我们会让它发挥作用。“真的很酷”不是freecell。

当然,对于 2500 美元(或更多),您希望对编译器进行一些调整,以使您的代码库得到完全支持。让他们参与对话可能是值得的。

于 2008-09-19T04:35:42.330 回答
1

您还可以查看来自ThoughtWorks 工作室的Mingle作为使用 JRuby 的示例。这是一个 Ruby on Rails 应用程序,他们使用 JRuby 运行它。他们定制了 jruby 来加载加密的 .rb 文件。

于 2009-04-25T09:46:46.570 回答
0

看看JumpBox

我已经就这个话题与他们进行了对话,他们似乎有一个很快就会适用于 Rails 应用程序的解决方案。

于 2008-09-19T08:13:37.377 回答
0

我想知道您是否可以使用RubyScript2Exe 之类的东西将 ruby​​ 代码“编译”成可执行文件?

老实说,我没有使用过它,但它似乎是您想要的,即使它只是将带有解释器的脚本打包成一个可执行文件。

于 2009-04-28T07:51:47.540 回答