18

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

这并非是一个基于Web的应用程序 - 也许我选择了错误的语言,但是......

我的理解是,为了在某人运行此应用程序的实例别人的计算机,他们需要在rails上安装ruby,以及web服务器(或webrick,也许)以及我的应用程序代码。

我只是好奇,如果有任何其他选项分发我的应用程序作为独立的应用程序,或者也许只是一个简单的方法来打包一个Web浏览器和ROR与我的应用程序一起简单,一步安装?

回答

7

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

+0

这看起来正是我所需要的,有潜在的2个缺点: 1)目前还不清楚是否点击生成的可执行文件实际启动网络服务器,或者如果没有,它做了什么 2)它看起来不像你可以打包跨平台的应用程序。是这样吗? – Brent 2008-09-11 23:48:14

1

通过将Ruby冻结到您想要在项目中使用的Rails版本,您可以包含Ruby on Rails。他们把这叫做冰冻。用户不需要安装Rails来使用你的应用程序。您可以使用您在项目中使用的任何库。如果项目使用库,只需将其放置在项目的Vendor文件夹下。然后使用类似于@Josh回答的工具来打包它。

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

不幸的是,你可能选择了错误的框架来做你想做的事情。除了Ruby on Rails,您可能还想看看Shoes,它是使用Ruby开发GUI应用程序的框架。

3

注意,Slingshot似乎是一个死了的项目(见评论)。我会在这里留下这个答案的历史目的和它回来的机会

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

Joyent的弹弓允许开发者部署Rails的像一个标准的桌面应用程序的应用程序,其工作在线和离线(带同步),具有拖放,并与所有其他桌面应用程序的交互。

随着Joyent的弹弓:

  • 创建一个混合网络/桌面应用程序
  • 同步在线和离线数据
  • 使用在线和离线应用(一个或多个)
  • 部署和更新相同的代码您的应用程序很容易
  • 拖入和拖出应用程序

这里有一些进一步的联系,以帮助您评估和/或帮助您开始:

+1

这仍然可用吗?我无法在任何地方找到它。链接都是死路一条。 – stellard 2010-01-28 08:58:26

1

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

您可能想要查看Shoes在Ruby中构建桌面应用程序。 Rails真的被调整用于构建网站。

0

你不具体说它是否应该是一个GUI应用程序。从其他答案中,我会这样猜测。

因此,你需要澄清你的目标是什么。 RoR是Web应用程序的专用框架。如果您的目标是学习RoR,我会说让自己一些便宜的网络托管,并使自己的应用程序。如果你的目标是学习Ruby,那么不一定需要Rails,Shoes,IronRuby,JRuby,MacRuby等等。

2

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

正如其他人提到的,Ruby不一定是Rails,如果你真的想在Ruby中编写一个可分发的GUI应用程序的简单方法,Shoes是一个很好的开始寻找的地方。