分发离线Ruby on Rails应用程序的选项

时间:2020-03-05 18:51:12  来源:igfitidea点击:

我正在开发一个使用Ruby on Rails的应用程序,主要是作为学习该语言的借口。

这并不是要成为基于Web的应用程序,也许我选择了错误的语言,但是...

我的理解是,为了在其他人的计算机上运行此应用程序的实例,他们将需要在Rails上安装ruby,Web服务器(也许是Webrick)以及我的应用程序代码。

我只是想知道是否还有其他选择可以将我的应用程序分发为独立应用程序,或者仅仅是将Web浏览器和ROR与我的应用程序打包在一起以进行简单的一步安装的一种简单方法?

解决方案

回答

齿轮可能在Rails上吗?

回答

我个人从来不需要这样做。但是,我遇到了本教程http://www.erikveen.dds.nl/distributingrubyapplications/rails.html,我认为这会有所帮助。本教程介绍了如何将Rails应用程序实际转换为独立的exe文件。

回答

我们可以通过将Ruby on Rails冻结为要在项目中使用的Rails版本来包括它。他们称此为冻结。用户将不必安装Rails即可使用应用程序。我们可以使用项目中使用的任何库来执行此操作。如果项目使用库,则将其放置在项目中的Vendor文件夹下。然后使用类似于@Josh回答的工具对其进行打包。

但是,我们将需要一个Web服务器来运行该项目。没有办法解决这个问题。在这方面,Ruby on Rails就像ASP.NET,因为它是服务器端框架。服务器运行代码,并使用Rails框架将HTML输出到浏览器。

不幸的是,我们可能选择了错误的框架来执行所需的操作。我们可能需要检查Shoes,而不是Ruby on Rails,这是一个使用Ruby开发GUI应用程序的框架。

回答

注意,弹弓似乎是一个死项目(请参阅注释)。我将把这个答案留在这里是出于历史目的以及它回来的机会

Joyent的弹弓可能是一个不错的选择。

Joyent Slingshot allows developers to deploy Rails applications like a standard desktop application, which work online and offline (with synchronization), have drag and drop, and interact with all the other desktop applications.
  
  With Joyent Slingshot:
  
  
  Create a hybrid Web/desktop application
  Synchronize online and offline data
  Use the same code for online and offline application(s)
  Deploy and update your application easily
  Drag into and out of application

以下是一些其他链接,可进行评估和/或者入门:

  • 介绍Joyent弹弓
  • 基本应用演练
  • 弹弓Wiki

回答

我们始终可以考虑将Ruby编译为JVM字节码(通过JRuby)或者.NET字节码(通过IronRuby),以分发给拥有这些虚拟机并且不想安装Ruby运行时的人。

我们可能想要查看用于在Ruby中构建桌面应用程序的Shoes。 Rails确实适合构建网站。

回答

我们没有具体说明它是否应该是GUI应用程序。从其他答案中,我会猜测是这样。

因此,我们需要澄清目标是什么。 RoR是Web应用程序的专用框架。如果目标是学习RoR,那么我想给自己准备一些便宜的虚拟主机,并让自己成为一个应用程序。如果目标是学习Ruby,而不必学习Rails,那么Shoes,IronRuby,JRuby,MacRuby和其他工具可能是不错的选择。

回答

大多数人将ruby程序(包括Rails webapps)作为独立exe交付的方式是通过rubyscript2exe。他们在http://www.erikveen.dds.nl/distributingrubyapplications/rails.html中描述了如何打包Rails应用程序。 Ruby,Rails和所有相关的库将包含在EXE文件中。

正如其他人提到的那样,Ruby不一定是Rails,如果我们真的想以一种简单的方式在Ruby中编写可分发的GUI应用程序,Shoes是一个不错的起点。