用于分发离线 Ruby on Rails 应用程序的选项
Posted
技术标签:
【中文标题】用于分发离线 Ruby on Rails 应用程序的选项【英文标题】:Options for distribution of an offline Ruby on Rails application 【发布时间】:2010-09-08 12:22:14 【问题描述】:我正在开发一个使用 Ruby on Rails 的应用程序,主要是作为学习该语言的借口。
这不是一个基于 Web 的应用程序 - 也许我选择了错误的语言,但是...
我的理解是,为了在其他人的计算机上运行此应用程序的实例,他们需要安装 ruby on rails、网络服务器(或 webrick,也许),以及我的应用程序代码。
我只是好奇是否有任何其他选项可以将我的应用程序作为独立应用程序分发,或者只是一种简单的方法将 Web 浏览器和 ROR 与我的应用程序一起打包以进行简单的一步安装?
【问题讨论】:
【参考方案1】:您可以通过将 Ruby on Rails 冻结为您想要在项目中使用的 Rails 版本来包含它。他们称之为冻结。用户无需安装 Rails 即可使用您的应用程序。您可以使用您在项目中使用的任何库来执行此操作。如果项目使用库,只需将其放在项目的 Vendor 文件夹下即可。然后使用类似于@Josh 回答的工具进行打包。
不过,您将需要一个 Web 服务器来运行该项目。没有办法解决这个问题。 Ruby on Rails 在这方面就像 ASP.NET,因为它是一个服务器端框架。服务器运行代码并使用 Rails 框架将 html 输出到浏览器。
很遗憾,您可能选择了错误的框架来做您想做的事。除了 Ruby on Rails,您可能还想查看 Shoes,这是一个使用 Ruby 开发 GUI 应用程序的框架。
【讨论】:
【参考方案2】:注意,Slingshot 似乎是一个死项目(参见 cmets)。我将把这个答案留在这里出于历史目的和它回来的机会
Joyent 的 Slingshot 可能是个不错的选择。
Joyent Slingshot 允许开发人员像标准桌面应用程序一样部署 Rails 应用程序,这些应用程序可以在线和离线(同步)工作,具有拖放功能,并与所有其他桌面应用程序交互。
使用 Joyent 弹弓:
创建混合 Web/桌面应用程序 同步在线和离线数据 在线和离线应用使用相同的代码 轻松部署和更新您的应用程序 拖入和拖出应用程序
以下是一些进一步的链接,可帮助您进行评估和/或帮助您入门:
Introducing Joyent Slingshot Basic application walkthrough Slingshot wiki【讨论】:
这个还能用吗?我在任何地方都找不到它。链接都是死胡同。 我可以确认这个项目似乎已经消失了。相当多的 wiki 和博客文章似乎仍然存在,但我怀疑代码不再维护。【参考方案3】:大多数人将 ruby 程序(包括 Rails webapps)作为独立 exe 发布的方式是通过 rubyscript2exe。他们在http://www.erikveen.dds.nl/distributingrubyapplications/rails.html 描述了如何打包Rails 应用程序。 Ruby、Rails 和所有相关的库都将包含在 EXE 文件中。
正如其他人所提到的,Ruby 不一定是 Rails,如果您真的想要一种简单的方法来用 Ruby 编写可分发的 GUI 应用程序,Shoes 是一个很好的起点。
【讨论】:
【参考方案4】:您没有具体说明它是否应该是 GUI 应用程序。从其他答案,我猜是这样。
因此,您需要明确您的目标是什么。 RoR 是一个专门用于 Web 应用程序的框架。如果您的目标是学习 RoR,我会说让自己获得一些便宜的虚拟主机并让自己成为一个应用程序。如果您的目标是学习 Ruby,而不一定是 Rails,那么 Shoes、IronRuby、JRuby、MacRuby 等可能是不错的选择。
【讨论】:
【参考方案5】:您总是可以考虑将 Ruby 编译为 JVM 字节码(通过 JRuby)或 .NET 字节码(通过IronRuby)分发给拥有这些虚拟机但不想安装Ruby 运行时。
您可能想查看Shoes,了解如何使用 Ruby 构建桌面应用程序。 Rails 非常适合构建网站。
【讨论】:
【参考方案6】:我个人从来不需要这样做。但是,我遇到了本教程http://www.erikveen.dds.nl/distributingrubyapplications/rails.html,我认为这会有所帮助。本教程介绍了如何将 Rails 应用程序实际转换为独立的 exe 文件。
【讨论】:
这看起来正是我所需要的,可能有两个缺点:1) 不清楚点击生成的可执行文件是否真的启动了一个网络服务器,或者如果不是,它做了什么 2) 它没有看起来您可以将应用程序打包为跨平台。是这样吗?【参考方案7】:Gears on Rails 可能吗?
【讨论】:
以上是关于用于分发离线 Ruby on Rails 应用程序的选项的主要内容,如果未能解决你的问题,请参考以下文章
墨者靶场 Ruby On Rails漏洞复现第二题(CVE-2019-5418)
Ruby on Rails 開發秘籍 | Ruby on Rails 快速入門
在 ruby on rails 动态 id 不能用于两个词,但可以完美地用于一个词——使用引导程序崩溃