0

第一次使用 Ruby,原因是 Jekyll。

首先,我安装了 RVM(在 Ubuntu Server 12.04 64 位上):

\curl -L https://get.rvm.io | bash -s stable

并按照安装过程的指导遵循后续说明(例如添加source ~/.profile~/.bash_profile)。我遵循的完整说明在这里

阅读rvm requirements命令的输出,并安装所有必要的二进制文件。

安装 Ruby 1.9.3,配置 RVM 以使用它,然后安装 RubyGems,依次发出以下命令:

rvm install 1.9.3
rvm use 1.9.3
rvm rubygems current

跑来ruby --version确保我使用的是 Ruby 1.9.3。

然后使用 gem 安装 Jekyll:

gem install jekyll

通过复制官方 Jekyll 存储库提供的jekyll/site的内容来设置基本站点结构,然后对_config.yml和进行必要的更改CNAME

事情就是这样!当我运行时,jekyll --server我得到相同的旧TCP/Webrick 错误(但没有一个解决方案有效)。

所以,正如 Jekyll wiki 所说,它可能是这样的:

在 Debian 或 Ubuntu 上,您可能需要添加/var/lib/gems/1.8/bin/到您的路径。

问题是:

  1. 在我的情况下,/var/lib/gems/...不存在。可能是因为我安装了 Ruby、RubyGems,都使用 RVM。那么,在我的情况下,路径是什么?

  2. 同样,如果我知道路径,我应该如何“添加/var/lib/gems/*.*/bin/到你的路径”

4

1 回答 1

1

首先,你可以忽略这个问题,如果你的意思是

[2012-04-21 13:46:40] WARN  TCPServer Error: Address already in use - bind(2)

这是因为 RubyGems 上最新版本的 jekyll 中的一些错误代码,但是,它似乎已在 github 上的最新代码中得到纠正。jekyll 创建的服务器尝试在 IPv4('0.0.0.0') 和 IPv6('::') 上进行绑定,因此第一次绑定成功,在 IPv6 上的绑定失败并记录了警告。

看看你的~/.rvm目录中的 jekyll 可执行文件,也许~/.rvm/gems/ruby-1.9.3-p392/gems/jekyll-0.12.1/bin/jekyll,大约在第 288 行:

s = HTTPServer.new(
  :Port            => options['server_port'],
  :MimeTypes       => mime_types
)

这里HTTPServerWEBrick::HTTPServer。jekyll 无需指定:BindAddress配置即可创建服务器。并且绑定地址设置nil为默认值。

WEBrick 将调用Socket.getaddrinfo从指定的绑定地址中获取真实地址,当传入nil地址时,会返回 IPv4('0.0.0.0') 和 IPv6('::') 的通配符地址。之后,WEBrick 调用TCPServer.new(address, port)创建 TCPServer。这就是TCPServer Error出现的地方。

有关更多详细信息,请阅读WEBrick::Utils.create_listeners

于 2013-03-25T16:36:08.970 回答