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

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

  • 正则混淆 - 然而,并非所有类型的 Ruby 代码都受支持,因此将其排除在外
  • 红宝石编码器 - 可能是最好的选择,因为他们的 PHP 编码器看起来不错(但我还没有尝试过),但它还不可用。我之前在 PHP 中使用过 IONcube,效果很好,但是 IONcube 好像还没有兴趣.
  • 弹弓 - 它在另一篇 SO 帖子中提到过,但它解决了与我不同的问题,并且来源仍然可见。
  • RubyScript2Exe - 从 doco 来看,它还没有准备好生产,所以这不算在内。

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

谁能提供任何想法和/或已知的例子?理想情况下,我也希望有某种自动化构建场景。

有帮助吗?

解决方案

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

其他提示

如果您发布源代码、进行混淆或其他方式,您的应用程序将被盗版。例如,参见 薄荷. 。这取决于您正在构建的内容,但您可能会发现最好以混合形式发布应用程序:具有明确定义的 API 的托管应用程序以及在客户服务器上运行的组件。只要你的产品的真正价值存在于服务器端,你就不需要混淆你的代码,你可以直接发布未经修改的源代码。此外,这还可能让您有机会接触到运行 PHP(例如,PHP)而不是 Ruby 的客户。例如,参见 谷歌分析, , 侦察, 等等等等

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

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

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

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

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

看一眼 跳箱.

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top