我想知道是否可以在没有源代码的情况下分发用于生产的RoR应用程序?我在SO上看过这篇文章,但我的情况有点不同.这将是一个由具有一些线索的人管理的应用程序,所以我很酷,仍然需要在客户端设置Apache/Mongrel/MySQL.我真正想要的是保护源.编码似乎是分发PHP应用程序的一种流行方式(例如:Helpspot).
我发现了这些潜在的解决方案:
Zenobfuscate - 然而,并不支持所有类型的Ruby代码,因此可以计算出来
Ruby编码器 - 可能是最好的选择,因为他们的PHP编码器看起来没问题(但我还没有尝试过),但它还没有.我之前使用过IONcube for PHP并且运行良好,但IONcube似乎并不感兴趣.
弹弓 - 它在其他SO帖子中提到过,但它解决了我的另一个问题,来源仍然可见.
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等.