Plugins Jekyll不在服务器上处理插件

Plugins Jekyll不在服务器上处理插件,plugins,jekyll,Plugins,Jekyll,Jekyll在我的本地机器(OS X 10.7.4,ruby 1.9.3)上很好地处理我的插件文件夹,但它没有在服务器上处理它们(Ubuntu 12.04,ruby 1.9.3)。两者都安装了相同版本的Jekyll(0.11.2) 我正在尝试使用generate_站点地图插件 我通过git和post receive钩子进行部署,如下所示: #!/bin/bash -l GIT_REPO=/my_repo.git TMP_GIT_CLONE=/my_temp_folder/ PUBLIC_WWW

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

我正在尝试使用generate_站点地图插件

我通过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文件夹中有多个插件

所以可能是你的一个或一些插件导致了这个问题

如果我是对的,您可以执行以下操作:

  • 杀了你的杰基尔
  • 在另一个位置(不是在插件中)创建插件的备份 文件夹)
  • 在你的_plugins文件夹中只留下一个插件,然后启动Jekyll
  • 如果有效,请将另一个插件复制到_plugins文件夹,直到 找到让杰基尔失败的那个
找到后,可以将调试打印输出添加到有问题的插件(我就是这么做的)

比如: 将“放在…”之前

我已经用Jekyll构建了only,您可以在我们的GitHub repo中找到并使用我们的许多有用示例:

最近,我开始用Jekyll构建。 我在
\u plugins
中编写了两个插件,我发现很难调试

起初,我使用
放置“balabala”
进行调试,这似乎是可行的。但一旦我遇到问题,在
\u站点
文件夹中没有生成任何内容,并且控制台中没有“balabala”,我就惊慌失措

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


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

当从post接收挂钩调用Jekyll时,我也遇到了同样的问题,Jekyll没有加载插件

正如上面的评论所提到的,将当前工作目录更改为
$TMP\u GIT\u CLONE
就可以做到这一点

您不必在_config.yml中更改任何内容

#/bin/bash-l
GIT_REPO=/my_REPO.GIT
TMP\u GIT\u CLONE=/my\u temp\u文件夹/
PUBLIC\u WWW=/my\u PUBLIC\u文件夹/
git克隆$git\u REPO$TMP\u git\u克隆
cd$TMP_GIT_CLONE#移动到临时目录
杰基尔——没有自动$TMP\u GIT\u克隆$PUBLIC\u WWW
cd#向后移动以允许删除
rm-Rf$TMP\u GIT\u克隆
出口

这是一个真正令人头痛的问题,因为git用户工作得很好,手动执行原始的post接收钩子。。。无论如何,Jekyll现在正在我的服务器上加载插件,希望这是一个正确的答案,可以帮助其他人找到解决方案。

后续问题:1)如果您直接通过服务器上的命令行运行Jekyll,插件是否工作?如果是这样,可能是bash脚本试图运行它的方式。2) 你是否尝试过其他插件,看看它是否有效?这种想法是,如果服务器上有另一个插件工作,它将帮助你缩小不工作的细节。好主意。当直接从服务器上的命令行运行时,插件正在工作。所以一定是剧本里的东西。但我不确定它可能是什么。脚本没有做任何特别复杂的事情。我需要稍微修改一下响应。如果我git将一个存储库克隆到一个目录中,然后将cd复制到该目录中,然后运行'jekyll',插件就可以工作了。但是,如果我git将存储库克隆到一个目录中,然后运行'jekyll/my\u tmp//my\u public/',插件将不会被处理。因此,如果您将目录作为参数提供给jekyll命令,那么它似乎有一些错误,无法处理插件。奇怪。一种选择是尝试使用相对路径,而不是根路径(即不以“/”开头)。另一个选项是在bash脚本中添加“cd/full/path/to/jekyll/source”行,看看是否有效。如果是这样,您可能必须将目标目录移动到_config.yml文件中。()我认为这不是一个好的解决方案,因为它会破坏本地服务器上的插件,但是:如果将_config.yml中的plugins变量设置为在服务器上构建站点时插件临时所在的路径,那么插件将在服务器上工作。在我的例子中:“plugins:/my_temp_folder/_plugins”。也许这是Jekyll的一个缺陷或限制?谢谢你的帮助,艾伦。