Проблемы, начинающиеся с Дженкинса - PullRequest
1 голос
/ 27 марта 2011

Как-то ночью я попытался заставить Хадсона работать на экземпляре EC2.Все работало нормально и до сегодняшнего утра, пока я не создал AMI на основе того, что я создал.Это также привело к созданию снимка моего диска.

После этого я понял, что мой сервер Jenkins не работает.Конечно же, глядя на мой экземпляр SSH, я был отключен.Поэтому я снова вошел в систему и попытался запустить все, запустив Jenkins server, и вот что я получил за ошибку:

/home/ubuntu/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems.rb:1064:in `escape': can't convert Pathname to String (TypeError)
    from /home/ubuntu/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems.rb:1064:in `block in loaded_path?'
    from /home/ubuntu/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems.rb:1063:in `each'
    from /home/ubuntu/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems.rb:1063:in `find'
    from /home/ubuntu/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems.rb:1063:in `loaded_path?'
    from /home/ubuntu/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:35:in `require'
    from /home/ubuntu/.rvm/gems/ruby-1.9.2-p180/gems/httparty-0.6.1/lib/httparty.rb:10:in `<top (required)>'
    from /home/ubuntu/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:54:in `require'
    from /home/ubuntu/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:54:in `require'
    from /home/ubuntu/.rvm/gems/ruby-1.9.2-p180/gems/jenkins-0.6.2/lib/jenkins/api.rb:1:in `<top (required)>'
    from /home/ubuntu/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:54:in `require'
    from /home/ubuntu/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:54:in `require'
    from /home/ubuntu/.rvm/gems/ruby-1.9.2-p180/gems/jenkins-0.6.2/lib/jenkins.rb:3:in `<module:Jenkins>'
    from /home/ubuntu/.rvm/gems/ruby-1.9.2-p180/gems/jenkins-0.6.2/lib/jenkins.rb:1:in `<top (required)>'
    from /home/ubuntu/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:54:in `require'
    from /home/ubuntu/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:54:in `require'
    from /home/ubuntu/.rvm/gems/ruby-1.9.2-p180/gems/jenkins-0.6.2/bin/jenkins:4:in `<top (required)>'
    from /home/ubuntu/.rvm/gems/ruby-1.9.2-p180/bin/jenkins:19:in `load'
    from /home/ubuntu/.rvm/gems/ruby-1.9.2-p180/bin/jenkins:19:in `<main>'

Я использовал пошаговое руководство , чтобы получить эту настройкуи вернулись к нему, чтобы увидеть, пропустили ли что-то, но это довольно просто.Я гуглил на can't convert Pathname to String тоже не повезло.Честно говоря, я понятия не имею, с чего начать.Это проблема с Ruby?Rails?Дженкинс?

Я обновлю это, если найду другую полезную информацию.

РЕДАКТИРОВАТЬ Я должен также добавить, что я вошел в рабочую область проекта, который яу меня было здание Дженкинса, и он смог запустить его очень хорошо.Из-за этого я не думаю, что это проблема Ruby.

EDIT 2 Хорошо, поэтому я решил вывести EC2 из уравнения и запустить свой собственный сервер с Ubuntu 10.10.Та же настройка, все работало отлично, потом я перезагрузился, и теперь я снова получаю эту ошибку.Теперь я уверен, что это простая глупая ошибка, потому что я относительный новичок в Ubuntu, но я уверен, что кто-то еще сталкивался с этим раньше.

Ответы [ 2 ]

1 голос
/ 06 апреля 2011

Короче говоря, решение было установить Jenkins как apt-get вместо использования Gem.Похоже, что дело дошло до проблемы, когда Дженкинс искал не ту версию Ruby.

Этот URL-адрес, в конечном счете, помог мне начать с этого: http://www.ygamretuta.com/2011/03/ruby-installing-ramaze-working-around-cant-convert-pathname-to-string-error/

Я также должен добавить, что, хотя ответы, которые дал Кельвин, могли помочь мне обойти ошибку, ни одно из них не было идеальным решением проблемы.

1 голос
/ 05 апреля 2011

Для быстрого исправления попробуйте понизить число рубинов до уровня ниже 1,6.Похоже, что разработчики rubygems представили некоторый код, чтобы избежать загрузки файла более одного раза.

Если вам интересно, вот код обидчика (от https://github.com/rubygems/rubygems.git на rev dcfba4e1de4c7388425eb5de5066cb5aa9bea6e6):

def self.loaded_path? path
  # TODO: ruby needs a feature to let us query what's loaded in 1.8 and 1.9
  $LOADED_FEATURES.find { |s|
    s =~ /(^|\/)#{Regexp.escape path}#{Regexp.union(*Gem.suffixes)}$/
  }
end

Если вы не можете понизить рейтинг, менее идеальным решением будет отредактировать rubygems.rb, чтобы

Regexp.escape path

стал

Regexp.escape path.to_s
...