启动Jenkins的问题

时间:2011-03-26 22:53:51

标签: ruby-on-rails ruby hudson amazon-ec2 jenkins

另一个晚上,我试图让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进行了此设置,并参考了它以查看是否错过了某些内容,但它非常直接。我用Google搜索can't convert Pathname to String也没有运气。老实说,我不知道哪里可以开始研究这个。这是一个Ruby问题吗? Rails的?詹金斯?

如果我找到任何其他有用的信息,我会更新。

修改 我还应该补充一点,我确实进入了Jenkins构建的项目工作区,并且能够很好地启动它。因此我不认为这是一个Ruby问题。

编辑2 好的,所以我决定将EC2排除在外,并使用Ubuntu 10.10启动我自己的服务器。相同的设置,一切都很好,然后我重新启动,现在我再次收到此错误。现在我确信这是一个简单的愚蠢错误,因为我是一个相对的Ubuntu newb,但我相信其他人之前遇到过这个问题。

2 个答案:

答案 0 :(得分:1)

要快速修复,请尝试将rubygems降级到低于1.6。 看起来像rubygems devs引入了一些代码以避免多次加载文件。

如果您有兴趣,可以参考以下相关代码(来自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

答案 1 :(得分:1)

长话短说,解决方案是将Jenkins安装为apt-get而不是使用Gem。它似乎归结为Jenkins正在查看错误版本的Ruby的问题。

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

我还应该补充一点,虽然开尔文给出的答案可能让我解决了这个错误,但这两个问题都不是解决问题的理想方法。