你如何将 sinatra 应用程序移动到 github 页面?

mgt*_*emp 1 ruby github heroku sinatra web

我创建了一个 sinatra 应用程序,并试图将它放在 github 页面上。我可以在本地主机上运行我的应用程序,但我不知道如何将它推送到实际的网络。

我尝试过谷歌搜索和搜索 stackoverflow,我一直看到人们使用 heroku。这是必需的吗?反正有没有直接从 sinatra 推送到网络?我可以得到一个简单的 index.html 文件在 github 页面上运行,但我不知道如何让我的 sinatra 应用程序运行。任何帮助都会很棒。

iai*_*ain 5

正如 Sirajus 所说,Github 页面只提供静态 HTML 页面。Sinatra 是一个生成网页代码的框架。它确实适用于需要一些服务器端处理(即动态)但也可以提供静态页面(一个明智的决定)的站点。

它本身不提供页面服务,它运行在Rack兼容的应用程序服务器(如 Thin、Puma、Unicorn 或 Webrick)上,并在被询问时构建页面,将其提供给服务器,然后服务器将其提供给您。

像 Github 页面或通过 Amazon S3 提供服务的完全静态站点只是位于 HTTP 文件服务器(Apache 和 Nginx 类型的服务器)后面的一组 HTML 文件。它们是静态的,因为它们不是动态生成的……动态的。它们不会改变,不需要额外的处理来为它们服务。他们只是坐在那里等待服务。您可以使用 Sinatra 和 Thin 之类的工具来执行此操作,但增加的复杂性会增加维护工作、安全问题、花费额外的金钱和时间……而且至关重要的是,会降低服务速度。如果您的站点基本上都是静态的,我的意思是服务器不需要处理任何内容,那么您最好使用从关闭状态生成静态页面的内容。有很多库可以帮助解决这个问题,Middleman(基于Padrino,因此基于Sinatra)和Jekyll 和Nanoc 一样。

您可以通过保存每个路由的输出并上传(如果合适)来模拟这些库的作用。有一些库可以帮助解决这个问题,例如Sinatra Static及其分支Sinatra Export。如果您愿意,您可以使用 cURL 来保存页面,其中的命令类似于 curl http://localhost:9292/ > index.html每个路径。前几天我为我自己的博客做了这样的事情。

如果这样做不合适或者您无法打扰,请设置一些服务器托管。许多这些服务可以免费开始使用,因此尝试所有这些服务不会有什么坏处,您会从每个服务中学到很多东西。