安装多个版本时,如何强制 jekyll 使用特定版本?

Dee*_*Yen 3 rubygems jekyll rbenv github-pages

我正在建立自己的 Github 页面。我想在推送到远程仓库之前在本地机器上测试站点。我按照https://help.github.com/en/github/working-with-github-pages/creating-a-github-pages-site-with-jekyll的说明进行操作。

按照说明,我尝试了jekyll 3.8.5 new命令,因为 jekyll-3.8.5 是 github pages 使用的版本(https://pages.github.com/versions/)。但是,jekyll 在我的系统中找不到 3.8.5 版本。

这是在 macOS Catalina 上,安装了 rbenv 来管理 ruby​​ 版本。我尝试手动调用 jekyll 3.8.5 版。那完全有效。

以下是一些尝试的片段。gem list将 3.8.5 显示为可用版本。但是jekyll 3.8.5 new命令轰炸了。

$ gem list jekyll

*** LOCAL GEMS ***

jekyll (4.0.0, 3.8.6, 3.8.5)

$ which jekyll
/Users/deep/.gem/ruby/2.6.0/bin/jekyll

$ jekyll 3.8.5 new mygh-site
fatal: 'jekyll 3.8.5' could not be found. You may need to install the jekyll-3.8.5 gem or a related gem to be able to use this subcommand.
Run Code Online (Sandbox Code Playgroud)

我能够从它的安装路径显式调用 jekyll-3.8.5。

$ /Users/deep/.rbenv/versions/2.6.3/lib/ruby/gems/2.6.0/gems/jekyll-3.8.5/exe/jekyll new mygh-site
Run Code Online (Sandbox Code Playgroud)

当存在多个 jekyll 版本时,如何使用 3.8.5 版本?感谢任何帮助克服这次失败。

Ros*_*oss 5

您的which jekyll命令表明您没有使用通过 rbenv 安装的版本(可能是系统安装),对我来说是这样的:

$ which jekyll
~/.rbenv/shims/jekyll
Run Code Online (Sandbox Code Playgroud)

我会仔细检查您的 rbenv 安装说明(看起来已安装但未集成),您可能缺少rbenv init命令(https://github.com/rbenv/rbenv#how-rbenv-hooks-into-your-shell


排序后,约定会在版本的任一侧加下划线:

$ jekyll _3.8.5_ -v
jekyll 3.8.5

$ jekyll _2.4.0_ -v
jekyll 2.4.0
Run Code Online (Sandbox Code Playgroud)

由于您使用的是 rbenv,请确保rbenv rehash在安装 gem 后运行,以便可以访问它。