2013-03-25 1 views
0

Первый пользователь Ruby здесь, и Джекил - причина.Путь к драгоценному камню (например, /var/lib/gems/1.8/bin/), когда Ruby установлен с использованием RVM?

Во-первых, я установил RVM (на Ubuntu Server 12.04 64-бит):

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

и следовали последующие инструкции, руководствуясь в процессе установки (например, для добавления к source ~/.profile~/.bash_profile). FULL INSTRUCTIONS I followed are here.

Считать выход команды rvm requirements и установить все необходимые двоичные файлы.

установлен рубин 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 install jekyll 

Настройка основной структуры сайта путем копирования содержимого jekyll/site provided by the official Jekyll repository, затем внесли необходимые изменения в _config.yml и CNAME.

Вот что! Когда я запускаю jekyll --server Я получаю тот же старый TCP/Webrick error (но ни одно из решений не работает).

Так, as the Jekyll wiki says, это, вероятно, это:

В Debian или Ubuntu, вам может понадобиться добавить /var/lib/gems/1.8/bin/ в путь.

Проблема заключается в том:

  1. В моем случае, /var/lib/gems/... не существует. Вероятно, потому, что я установил Ruby, RubyGems, используя RVM. Итак, каков был бы путь в моем случае?

  2. Опять же, если я знаю путь, как я должен ", чтобы добавить /var/lib/gems/*.*/bin/ на ваш адрес"?

+0

может быть в ~/.rvm/... – three

ответ

1

Прежде всего, вы можете просто проигнорировать эту проблему, если вы имеете в виду

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

Это потому, что некоторые ошибки кода в последней версии Джекила на RubyGems, однако, по-видимому, была исправлена latest code on github. Сервер, созданный jekyll, пытается связываться как с IPv4 ('0.0.0.0'), так и с IPv6 ('::'), поэтому первое связывание завершается успешно, а привязка на IPv6 завершается с ошибкой и регистрируется предупреждение.

Посмотрите на Джекил исполняемый в вашем ~/.rvm каталоге, может быть ~/.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 
) 

Здесь HTTPServer является WEBrick::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

+0

Вы можете быть правы, но я просто понял, что добавление 'сервер: false' в моем _config.yml зафиксировал его. Любая идея почему? Сейчас это работает, но я действительно хочу знать, почему. –

+0

@ TheoneManis это не имеет смысла. Параметры командной строки имеют более высокий приоритет, чем файл конфигурации '_config.yml'. Если вы укажете опцию командной строки '--server', запись конфигурации' server: false' не будет иметь никакого эффекта. –

+0

Хорошо. Затем я создаю проблему в Jekyll github repo и вижу, могу ли я получить некоторую информацию (и отчитаться здесь). –