我想知道是否可以在没有源代码的情况下分发用于生产的RoR应用程序?我见过this post on SO,但我的情况有点不同。这将是一个由具有一些线索的人管理的应用程序,所以我很酷,仍然需要在客户端设置Apache / Mongrel / MySQL。我真正想要的是保护源。编码似乎是分发PHP应用程序的一种流行方式(例如:Helpspot)。
我找到了这些潜在的解决方案:
我听说可能使用JRuby并分发字节码可能是实现此目的的一种方法,但我从未使用过JRuby,因此我不确定所涉及的内容。
任何人都可以提供任何想法和/或已知示例吗?理想情况下,我也喜欢拥有某种自动构建方案。
答案 0 :(得分:25)
现在最好的选择是使用JRuby。一点背景:我的公司(BitRock)与许多专有和商业开源供应商合作。我们帮助他们将服务器软件(通常基于PHP,Java或Ruby)与Web服务器或应用程序服务器(Apache,Tomcat),语言运行时和数据库(通常是Postgres,MySQL)打包成一个独立的,易于使用的安装程序。我们有大量基于PHP的客户(包括你提到的HelpSpot),还有几个基于Rails的客户。对于RoR客户,规范是将JRuby与Tomcat或Glassfish一起使用,尽管在某些情况下我们还捆绑了一个本机Ruby解释器来运行依赖于尚未移植到JRuby的库(通常不是应用程序的核心)的特定脚本。 JRuby已经快速成熟,在许多情况下,它实际上比常规Ruby更快地运行代码。您还需要考虑尽管将代码移植到JRuby是相当简单的,但您需要花一些时间在其上。您可能需要查看JRuby Stack,它是您开始使用所需内容的免费安装程序。祝你好运!
答案 1 :(得分:7)
如果您发布源代码,混淆或其他方式,您的应用将被盗版。例如,请参阅Mint。这取决于您正在构建的内容,但您可能会发现最好将应用程序作为各种类型的混合发布:具有定义良好的API的托管应用程序以及在客户服务器上运行的组件。只要产品的真实价值存在于服务器端,您就不需要对代码进行模糊处理,只需不加修改即可发布源代码。此外,这也可能让您有机会接触运行PHP而不是Ruby的客户端。例如,请参阅Google Analytics,HopToad,Scout等等。
答案 2 :(得分:2)
你可以,但它不会阻止某人进行逆向工程或修改它。我记得有一篇文章关于类似的尝试来篡改Perl,以及如何通过调试器和5分钟的努力有效地绕过它们。
答案 3 :(得分:2)
如果您不能等待RubyEncoder的交付,那么我认为ZenObfuscate是最有前途的。虽然可能需要对源代码进行一些修改,但是他们会在他们的网站上说这个:
ZenObfuscate的站点许可费用为2500美元,或者可以单独协商其他许可方案。是的,这很贵。那是故意的。但是,不要让那种方式挫败你。 如果您的产品非常酷,我们希望看到它成功,我们会让它发挥作用。“真的很酷”不是freecell。
当然,对于2500美元(或更多),您希望对编译器进行一些调整,以使您的代码库得到完全支持。可能值得他们参与对话。
答案 4 :(得分:1)
您还可以查看Mingle中的ThoughtWorks studios作为使用JRuby的示例。 它是一个Ruby on Rails应用程序,它们使用JRuby运行它。他们定制了jruby来加载.rb文件。
答案 5 :(得分:0)
看看JumpBox。
我已就此主题与他们进行过对话,他们似乎有一个解决方案可以很快用于Rails应用。
答案 6 :(得分:0)
我想知道你是否可以使用类似RubyScript2Exe之类的东西将ruby代码“编译”成可执行文件?
说实话,我没有使用它,但它似乎可能是你想要的,即使它只是将带有解释器的脚本打包成一个可执行文件。