Jekyll不处理服务器上的插件

时间:2012-07-07 21:52:09

标签: plugins jekyll

Jekyll正在我的本地机器上处理我的_plugins文件夹(OS X 10.7.4,ruby 1.9.3),但是它没有在服务器上处理它们(Ubuntu 12.04,ruby 1.9.3)。两者都安装了相同版本的Jekyll(0.11.2)。

我正在尝试使用generate_sitemap插件here

我正在使用git和post-receive hook进行部署,如下所示:

#!/bin/bash -l

GIT_REPO=/my_repo.git
TMP_GIT_CLONE=/my_temp_folder/
PUBLIC_WWW=/my_public_folder/

git clone $GIT_REPO $TMP_GIT_CLONE
jekyll --no-auto $TMP_GIT_CLONE $PUBLIC_WWW
rm -Rf $TMP_GIT_CLONE
exit

我在部署时看到了这个错误:

remote: /home/ed/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require': iconv will be deprecated in the future, use String#encode instead.

但是,据我所知,这是一个Maruku警告,与插件无关。

任何人都有任何想法,我可以尝试解决这个问题?我有点失落。

3 个答案:

答案 0 :(得分:5)

使用Jekyll进行调试非常困难,但这是一个很棒的工具!!!

我假设你的_plugins文件夹中有多个插件。

所以也许你的一个或一些插件导致问题。

如果我是对的,你可以做以下事情:

  • 杀死你的杰基尔
  • 在另一个位置创建插件备份(不在_plugins中 文件夹)。
  • 只在_plugins文件夹中保留一个插件并启动Jekyll。
  • 如果有效,请将另一个插件复制到_plugins文件夹,直到您 找到一个未通过杰基尔的人。

当你找到它时,你可以为有问题的插件添加调试打印输出(这就是我所做的)。

像: 将“放在......之前”

我只使用Jekyll构建了http://www.cloudifysource.org/,您可以在我们的GitHub仓库中找到并使用大量有用的示例:https://github.com/CloudifySource/cloudifysource.github.com

答案 1 :(得分:2)

我遇到了同样的问题,Jekyll在从post-receive钩子调用时没有加载插件。

正如上面的评论中所提到的,将当前工作目录更改为$TMP_GIT_CLONE就可以了。

您无需在_config.yml中更改任何内容。

#!/bin/bash -l

GIT_REPO=/my_repo.git
TMP_GIT_CLONE=/my_temp_folder/
PUBLIC_WWW=/my_public_folder/

git clone $GIT_REPO $TMP_GIT_CLONE
cd $TMP_GIT_CLONE                             # move to the temp dir
jekyll --no-auto $TMP_GIT_CLONE $PUBLIC_WWW
cd                                            # move back to allow deletion
rm -Rf $TMP_GIT_CLONE
exit

这是一个真正令人头疼的问题,因为git用户工作正常时手动执行原始的post-receive挂钩...无论如何,Jekyll现在正在我的服务器上加载插件并希望这个正确的答案将帮助其他人找到这个解决方案。

答案 2 :(得分:1)

最近,我开始用jekyll构建https://github.com/alswl/code-standards-jekyll。 我在_plugins中编写了两个插件,我发现它很难调试。

首先,我使用puts "balabala"进行调试,看起来很有效。但是一旦我遇到了_site文件夹中没有生成任何内容的问题,并且控制台中没有'balabala' ,我很恐慌。

在我阅读jekyll源代码后,我尝试在auto=false中设置_config.yml,运行jekyll会产生一些调试跟踪堆栈错误。感谢上帝。

因此,ues auto=false将帮助您调试插件。