您可以在没有源代码的情况下分发 Ruby on Rails 应用程序吗?
-
01-07-2019 - |
题
我想知道是否可以在没有源代码的情况下分发 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 堆栈 这是一个免费安装程序,包含您开始使用所需的一切。祝你好运!
其他提示
你可以,但它不会做任何事情来阻止某人对其进行逆向工程或修改。我记得有一篇文章介绍了类似的混淆 Perl 的尝试,以及如何通过调试器和 5 分钟的努力有效地绕过它们。
如果你等不及RubyEncoder的交付,那么我认为ZenObfuscate是最有前途的。尽管可能需要对源代码进行一些修改,但他们确实在其网站上这么说:
ZenObfuscate 站点许可证的费用为 2500 美元,或者可以单独协商其他许可证方案。是的,那很贵。那是故意的。但不要让这太阻碍你。 如果您的产品真的很酷并且我们希望看到它成功,我们就会让它发挥作用。 “真的很酷”不是空当接龙。
当然,对于 2500 美元(或更多),您希望对编译器进行一些调整,以使您的代码库得到完全支持。让他们参与对话可能是值得的。
您还可以看看 交融 从 ThoughtWorks工作室 作为使用 JRuby 的示例。这是一个 Ruby on Rails 应用程序,他们使用 JRuby 运行它。他们定制了 jruby 来加载加密的 .rb 文件。
看一眼 跳箱.
我已经与他们就这个主题进行了交谈,他们似乎有一个很快适用于 Rails 应用程序的解决方案。
我想知道你是否可以使用类似的东西将 ruby 代码“编译”成可执行文件 RubyScript2Exe ?
老实说,我还没有使用过它,但它似乎可能是您想要的,即使它只是将脚本与解释器打包成单个可执行文件。