2008-09-19 81 views
24

我想知道是否有可能分发RoR应用程序用于没有源代码的生产使用?我看过this post on SO,但我的情况有点不同。这将是一个由某些线索管理的应用程序,所以我很酷,仍然需要在客户端安装Apache/Mongrel/MySQL。我真正想要的是为源保护。编码似乎是分发PHP应用的流行方式(例如:Helpspot)。您可以在没有源代码的情况下分发Ruby on Rails应用程序吗?

我发现这些潜在的解决方案:

  • Zenobfuscate - 但并非所有类型的Ruby代码的支持,从而使计算了这一点
  • Ruby Encoder - 可能是最好的选择,因为它们的PHP编码器看起来不错(但我还没有尝试过),但它还没有提供。我之前使用过IONcube for PHP,它运行良好,但是it doesn't seem that IONcube is interested yet
  • Slingshot - 它在其他SO帖子中提到过,但它解决了我的一个不同的问题,并且源代码仍然可见。
  • RubyScript2Exe - 从doco开始,它不是生产准备好的,所以这一点很重要。

我听说可能使用JRuby并分发字节码可能是实现这一目的的一种方式,但我从未使用JRuby,因此我不确定涉及到什么。

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

回答

24

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

2

你可以,但它不会做任何事情来阻止某人进行反向工程或修改它。我记得有一篇文章讲述了类似的尝试来模仿Perl,以及它们如何被调试器和5分钟的努力有效地绕过。

+24

我不认为perl是需要obfusticating Perl本身是足够的... – UnkwnTech 2008-09-19 04:15:40

+1

无论它是什么解决方案,它不像任何人给应用程序一样安全。我只是想弄清楚如何在尽可能大的障碍人员面前试图找到源头。在客户付费使用该软件时,有一小部分信任。 – 2008-09-19 04:23:09

2

如果您不能等待RubyEncoder的交付,那么我认为ZenObfuscate是最有前途的。虽然它可能需要一些修改源代码,他们说这在他们的网站:

ZenObfuscate费用$ 2500站点许可证或其他许可方案单独转让。是的,这很贵。这是有意的。但是,不要让这个阻碍你太多。 如果您的产品非常酷,并且我们希望看到它成功,我们将使其工作。“真的很酷”不是freecell。

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

+0

我没有注意到,谢谢Pete,或许值得与他们谈论这件事。 – 2008-09-19 04:40:38

0

看看JumpBox

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

+0

JumpBox如何提供帮助? – 2011-06-01 13:31:44

7

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

+3

++这是Web应用程序的新开放/封闭源世界。它实际上代表了开发人员非常棒的场景 - 您的应用程序的价值在您的服务和执行中,而不一定在代码本身。您可以享受开放代码的自由和有限供应的好处。 – guns 2009-04-25 10:03:01

1

您还可以看看MingleThoughtWorks studios作为使用JRuby本的例子。 这是一个Ruby on Rails应用程序,他们使用JRuby运行它。他们已经定制jruby来加载加密的.rb文件。

0

我想知道是否可以使用像RubyScript2Exe这样的东西来将“ruby”代码“编译”成可执行文件?

说实话,我还没有使用它,但它似乎可能是你想要的,即使它只是将解释器的脚本打包到一个可执行文件中。

相关问题