另一个晚上,我试图让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,但我相信其他人之前遇到过这个问题。
答案 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/
我还应该补充一点,虽然开尔文给出的答案可能让我解决了这个错误,但这两个问题都不是解决问题的理想方法。