编辑 2
正如@MrTJ 在评论中所说。显然苹果不会让你有一个简单的“网站包装”应用程序。因此,您唯一的选择是移植 Ruby,就像我的答案的其余部分所描述的那样,本地移植应用程序,或者像 @MrTJ 在他的答案中描述的那样做一个 Web 应用程序。本地移植它,由 REST 类 Web 服务支持,可能是最好的解决方案。Web 应用程序很好,但本机应用程序通常更好。这取决于您要提供什么样的用户体验。
结束编辑 2
编辑 1
我需要更仔细地阅读。我回答了你的问题,假设你想嵌入应用程序,而不需要访问互联网。如果这不是您想要做的,那么这绝对是可能的。
只需创建一个具有 web 视图并加载站点的基本 URL 的应用程序。您可能想要制作一个始终具有后退按钮等的特殊版本的网站,因此用户永远不会卡在您网站的角落(因为您希望隐藏导航栏)。
另外,我个人不会这样做,你可以,但你可能不应该这样做。当用户没有互联网连接时,您将需要处理该做什么。当他们(可能)为他们无法在任何地方使用的应用程序付费时,您可能会让他们不开心。原生应用程序的销售/性能往往要好得多。
结束编辑 1
我对这个问题的个人反应
很酷的问题。就我个人而言,我不是 Ruby 或 Rails 的粉丝(我更喜欢 Python,但 Python 实际上是我对这种情况一无所知的原因),但这无论如何都是一个很酷的问题。
要问自己的问题
这可能吗? 大概
这是个好主意吗? 可能不是
值得付出努力吗? 可能不是
最重要的是,苹果会让你卖掉它吗? ....也许吧,但对于这样的事情,你不知道,直到你尝试......
你需要什么
使用协议与您的本机应用程序对话的 WebView。这就像用于与浏览器中的 iFrame 对话的 URL 哈希标记黑客,或 PhoneGap 用于与其 WebView 通信的协议
Ruby 解释器的嵌入式版本。人们一直在使用Python和JavascriptCore解释器在 iOS 上执行此操作。有些人会试图告诉你 Apple 不会让你这样做,但事实并非如此。你需要专门为 iOS 编译 Ruby,这可能会很烦人,但我敢打赌,如果你的实现基于 Python/Javascript 实现,你最终可以让它工作。
编辑
与此答案相关的另一个 SO 问题/答案在 iOS 应用程序端编辑
中嵌入 JavaScript 引擎
Rails 的嵌入式版本...祝你好运:)
在没有 Web 服务器的情况下触发 Rails 应用程序的方法(您可能无法在 iPhone 上本地运行 apache(会很困难并且可能会立即崩溃),而且绝对不会在 Android 上运行)。您要么需要以某种方式手动触发每个视图,将输出通过管道传输到字符串或文件,然后将该字符串 (HTML) 或文件加载到 WebView
在 Rails 应用程序中触发导航的方法。这将需要从 WebView 捕获链接按下(您可以观察 iOS 上的 URL 变化),并触发正确的 Rails 视图以生成其 HTML。
问题
Ruby 和 Rails 都非常重。我见过的大多数实现都需要至少 256mb 的 RAM,如果 iOS 在启动时尝试使用这么多内存,它会立即杀死你的应用程序。Android 可能会不太优雅地处理它,并且会在应用程序运行的某个时刻意外崩溃。
Android 不运行本机编译代码。这意味着您将需要运行 JRuby,这将为您提供以解释语言运行的解释语言(读作,在移动设备上慢如地狱)。
这将需要编写更多的 Ruby、一些 Javascript 和更多的 Java 或 Objective-C。所以换句话说,不要。弄清楚你的应用程序做了什么,然后移植它。
重点学习
这可能比任何理智的开发人员都愿意在“简单的 Web 应用程序”上花费更多的精力。学习原生开发会好得多,因为无论如何完成这项工作都需要这样做。