【发布时间】:2012-07-07 21:52:08
【问题描述】:
Jekyll 正在我的本地机器(OS X 10.7.4,ruby 1.9.3)上处理我的 _plugins 文件夹,但它没有在服务器上处理它们(Ubuntu 12.04,ruby 1.9.3)。两者都安装了相同版本的 Jekyll (0.11.2)。
我正在尝试使用 generate_sitemap 插件,here。
我正在通过 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 警告,与插件无关。
有人对我可以尝试解决的问题有任何想法吗?我有点不知所措。
【问题讨论】:
-
后续问题:1)如果你直接在服务器上通过命令行运行jekyll,插件能用吗?如果是这样,它可能是 bash 脚本试图运行它的方式。 2)您是否尝试过另一个插件以查看它是否有效?想法是,如果另一个插件在服务器上工作,它将帮助您缩小不工作的细节。
-
好主意。当直接从服务器上的命令行运行时,插件正在工作。所以它一定是那个脚本中的东西。但我不确定它可能是什么。脚本没有做任何特别复杂的事情。
-
我需要稍微修改该响应。如果我 git clone 一个存储库到一个目录,然后 cd 到那个目录,然后运行'jekyll',插件就可以工作了。但是,如果我将存储库 git 克隆到目录中,然后运行“jekyll /my_tmp/ /my_public/”,则不会处理插件。因此,如果您将目录作为参数提供,那么 jekyll 命令中的某些内容将无法处理插件。
-
奇数。一种选择是尝试使用相对路径而不是从根开始的路径(即不以“/”开头)。另一种选择是在 bash 脚本中添加“cd /full/path/to/jekyll/source”行,看看是否可行。如果是这样,您可能必须将目标目录移动到 _config.yml 文件中。 (github.com/mojombo/jekyll/wiki/Configuration)
-
我认为这不是一个好的解决方案,因为它会破坏本地服务器上的插件,但是:如果将 _config.yml 中的 plugins 变量设置为插件临时所在的路径在服务器上构建站点时,插件将在服务器上运行。在我的情况下:'插件:/my_temp_folder/_plugins'。也许这是 Jekyll 中的错误或限制?谢谢你的帮助,艾伦。