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插件。
我通过git和post-receive钩子部署,看起来像这样:
#!/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警告,并与插件无关。
任何人有什么想法,我可以尝试解决这个问题? 我有点不知所措。
使用Jekyll很难调试,但它是一个很棒的工具!
我假设你在_plugins文件夹中有多个插件。
所以也许有一个或一些插件会导致问题。
如果我是对的,你可以做以下事情:
当你找到它时,你可以添加调试打印输出到有问题的插件(这就是我所做的)。
就像: 把......放在“......之前”
我只用Jekyll构建了http://www.cloudifysource.org/,您可以在我们的GitHub repo中找到并使用大量有用的示例:https://github.com/CloudifySource/cloudifysource.github.com
我在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
这是一个真正的head-scratcher,看起来像手动执行原始的post-receive钩子,因为git用户工作得很好......无论如何,Jekyll现在正在我的服务器上加载插件,并希望这个正确答案能够帮助其他人找到这个解。
最近,我开始用jekyll构建https://github.com/alswl/code-standards-jekyll。 我在_plugins
编写了两个插件,我发现它很难调试。
起初,我用puts "balabala"
进行调试,看起来很顺利。但是一旦我遇到在_site
文件夹中没有生成任何东西的_site
,并且控制台中没有“balabala”,我很恐慌。
在阅读jekyll源码之后,我尝试在_config.yml
设置auto=false
,运行jekyll会产生一些调试跟踪堆栈错误。 感谢神。
所以,ues auto=false
会帮助你调试插件。