如何从Rails背景制作桌面或离线应用程序

时间:2014-07-02 03:29:14

标签: ruby-on-rails web-applications desktop-application offlineapps

我已经构建了一个Rails应用程序,该应用程序将在一个仅限于没有互联网的位置使用。我试图尽可能快地决定将我的工作转化为功能的最佳途径 - 无论是通过桌面应用程序还是我所拥有的某些离线版本。

该应用程序的用途如下: - 从一对一的个人调查中记录传记数据 - 导出本地输入的人口统计数据集,并导入和处理其他类似数据集 ----不需要支持任何过于复杂(图形或其他方面)的东西,只需使用Backbone.js的基本Rails进行交互式调查视图

我只是想知道在我拥有的Rails应用程序(以及我的Rails背景)下获得可以脱机工作的最快方法。我想要像Titanium这样的东西吗?谷歌Gears?像Prism或Fluid这样的东西?我主要担心的是快速完成工作。

3 个答案:

答案 0 :(得分:3)

如果您有一个离线应用,并且想要在本地存储数据并将其同步回HTML5环境中,那么我知道有三种解决方案。

  • Firebase - 似乎在数据同步世界中坚定地试图做太多。缺点是商业和托管服务。

  • Hood.ie - 我不喜欢大框架,对我而言,这似乎是在尝试做太多,我不明白为什么有些功能在那里(例如电子邮件)和可能不完整。它是开源的,并且由JS场景中的一些大牌创建,所以它当然值得考虑。

  • SyncIt - 免责声明我写了这篇文章,所以我只看到它的优点,当然认为这是最好的解决方案。 SyncIt是OSS,只是进行数据同步而不是其他任何东西。它是由具有小API的非常分离的组件组成的,所以将Node.JS后端改为Rails只需要一天左右的工作(我不知道rails但会帮助这样的努力)。它具有良好的测试覆盖率,主要是VanillaJS,因此应该是未来稳定的技术基础。

答案 1 :(得分:1)

本地

为什么不使用Rails应用程序但使用所有本地组件?

例如,您可以在本地使用MYSQL / PGSQL;在本地安装web server,然后将简单域添加到您的hosts文件以联系

这将允许您将本地请求视为生产,使您能够在浏览器中加载域,并让它像连接到真实网站一样运行:

-

<强> DB

您可以install mysql使用以下内容:

enter image description here

如果你安装了它,只需进入database.yml并将设置更改为本地设置:

#config/database.yml
production:
   ...
   host: 127.0.0.1

-

服务器

虽然您可以运行Rails服务器,但只能在development模式下运行。

您可以更好地安装Apache (to handle inbound requests) and Phusion Passenger来运行Rails环境

您可以使用this tutorial执行此操作(如果您发表评论,我可以提供具体信息)

-

<强>域

最后,您可以在hosts文件中设置域名

您需要做的就是使用127.0.0.1之类的域名掩盖Rails.app,所以如果您转到http://rails.app,它会提出您的申请:

#hosts
127.0.0.1 rails.app

答案 2 :(得分:0)

您可以从Railcast使用机架离线

尝试本教程
  • 添加gem&#34; rack-offline&#34;
  • 添加到路线match "/application.manifest"=. Rails::Offline
  • 这将创建一个缓存文件清单
  • 布局视图中的
  • 添加<html manifest="/application.manifest">
  • 现在您需要一个变量,因此资产将加载到离线应用ENV["Rails_ASSET_ID"] =""上,这将禁用资产文件中的时间戳,将其添加到application.rb配置文件中 现在你让应用程序离线仍然需要修复一些代码以使其完美运行
  • 任何动态内容都要通过js和json添加它,需要存储动态内容 我在教程中使用相同的代码添加内容
  • jquery.tmpl
  • jquery.offline 您可以查看更多信息。