2011-03-26 38 views
1

另一个晚上,我刺杀了Hudson并在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>' 

我没有使用walkthrough得到这个设置,并引用回,看看是否错过了一些东西,但它非常简单。我已经搜索了can't convert Pathname to String但没有运气。我真的不知道该从哪里开始研究这个问题。这是一个Ruby问题吗? Rails的?詹金斯?

我会更新这个,如果我发现任何其他有用的信息。

编辑 我还要补充一点,我没去成,我有詹金斯建设,并能启动它就好了该项目的工作空间。因此,我不认为这是一个Ruby问题。

编辑2 好的,所以我决定把EC2排除在等式之外,用Ubuntu 10.10自带服务器。相同的设置,一切运作良好,然后我重新启动,现在我再次得到这个错误。现在我相信这是一个简单的愚蠢的错误,因为我是一个相对的Ubuntu新手,但我相信别人之前遇到过这个。

+0

P.S.荒谬的是,SO刮板有多快击中了新的帖子,谷歌将它们捡起来。张贴后,我继续我的搜索,并发现一个链接,看起来像更多的信息.​​..这是一个刮这个,但在一个不同的网站。 – 2011-03-26 23:02:00

回答

1

说来话长SH或者,解决方案是将Jenkins安装为apt-get,而不是使用Gem。看来,这归结于Jenkins正在查看错误版本的Ruby的问题。

这个网址是什么最终让我开始到解决这个问题的路径:http://www.ygamretuta.com/2011/03/ruby-installing-ramaze-working-around-cant-convert-pathname-to-string-error/

我还要补充一点,虽然答案是开尔文给可能已经得到了我周围的错误,也不是理想的解决问题的方案。

1

为了快速修复,请尝试将rubygems降级到低于1.6。 看起来像rubygems开发人员推出了一些代码,以避免多次加载文件。

如果你有兴趣,这里的(在转dcfba4e1de4c7388425eb5de5066cb5aa9bea6e6从https://github.com/rubygems/rubygems.git)违规代码:

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