你可以在没有源的情况下分发Ruby on Rails应用程序吗?

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

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

  • Zenobfuscate – 然而,并不支持所有类型的Ruby代码,所以这一点很重要
  • Ruby编码器 – 可能是最好的选择,因为他们的PHP编码器看起来没问题(但我还没有尝试过)但它还没有。 我之前使用过IONcube for PHP并且运行良好,但IONcube似乎并不感兴趣 。
  • 弹弓 – 它在其他SOpost中被提及,但它解决了我的一个不同的问题,源仍然是可见的。
  • RubyScript2Exe – 来自doco,它不是生产就绪的,所以重要的是。

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

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

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

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

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

如果你不能等待RubyEncoder的交付,那么我认为ZenObfuscate是最有前途的。 虽然可能需要对源代码进行一些修改,但他们会在其网站上说出这一点:

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

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

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

看一下JumpBox吧 。

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

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

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