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

时间:2008-09-19 04:09:29

标签: ruby-on-rails ruby encoding obfuscation distribution

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

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

  • Zenobfuscate - 但并非所有类型的Ruby代码都受支持,因此将其计算出来
  • Ruby Encoder - 可能是最好的选择,因为他们的PHP编码器看起来没问题(但我还没试过),但还没有。我之前使用过IONcube for PHP,它运行良好,但是it doesn't seem that IONcube is interested yet
  • Slingshot - 在其他SO帖子中提到过,但它解决了我的另一个问题,而且源仍然可见。
  • RubyScript2Exe - 来自doco,它不是生产准备好的,所以重要的是。

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

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

7 个答案:

答案 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 AnalyticsHopToadScout等等。

答案 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代码“编译”成可执行文件?

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