2011-03-26 36 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