【发布时间】:2011-06-03 12:46:36
【问题描述】:
我有一个 Rails 应用程序,我想添加一个博客功能;我的想法是使用 Jekyll,这是一个很棒的博客工具,我只需要弄清楚是否可以使用 http://my.app.com/blog 作为 url(知道 Jekyll 将使用自己的 url 运行自己的服务器进程)。
有人知道实现此目的的方法吗?能够这样做真是太好了。最好的问候!
【问题讨论】:
标签: ruby-on-rails blogs jekyll
我有一个 Rails 应用程序,我想添加一个博客功能;我的想法是使用 Jekyll,这是一个很棒的博客工具,我只需要弄清楚是否可以使用 http://my.app.com/blog 作为 url(知道 Jekyll 将使用自己的 url 运行自己的服务器进程)。
有人知道实现此目的的方法吗?能够这样做真是太好了。最好的问候!
【问题讨论】:
标签: ruby-on-rails blogs jekyll
...只需要弄清楚是否可以使用http://my.app.com/blog 作为 url(知道 Jekyll 将使用自己的 url 运行自己的服务器进程)。
虽然 jekyll 的网络服务器正常工作,但使用 Rails 应用程序的网络服务器为所有页面提供服务可能会更容易、更简单、更安全。
最简单的方法是 hooking 对服务器的 git 存储库的 jekyll 调用,因此每次推送时,jekyll 的静态内容都会自动添加到您的 rails 应用程序的 public/blog/ 目录中。
public 文件夹中创建一个名为public/blog 的符号链接。使其指向您的 jekyll 存储库中生成的 _site 文件夹。在控制 jekyll 博客内容的 git 存储库上,添加一个 post-receive hook,它执行以下操作:
#!/bin/sh
rm -rf _site
jekyll
这些是基本步骤。您可能必须正确配置读取权限,如果您使用 SCM(就像您应该这样做的那样)忽略 /blog/ 链接,如果您使用 Capistrano 或 Vlad 进行部署,则自动创建链接。
还有其他选择,比如使用真实文件夹而不是符号链接,并让 jekyll 直接在那里生成内容,但我觉得我展示的那个是最干净的。
【讨论】:
您会使用 nginx 反向代理 Rails 应用程序吗?如果是这样,您应该能够只创建一个异常,以便 /blog 直接由 nginx 提供服务,而不是转发给 Rails。
【讨论】:
【讨论】:
几周前我遇到了同样的问题。如果你真的必须使用 Jekyll,我认为最好的解决方案是使用已经提到的Bloggy gem。
但是,我对这个解决方案并不满意,因为您仍然需要复制或同步很多东西,例如模板、路由、样式表等等。所以我决定在 Rails 中实现我自己的类似 Jekyll 的简单博客功能。
你可以在这里找到我描述实现的文章:Create a simple Jekyll-like blog in your Rails 4 app。
【讨论】: