【问题标题】:Issues starting Jenkins启动 Jenkins 的问题
【发布时间】:2011-04-07 03:55:29
【问题描述】:

那天晚上,我尝试让 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 的问题吗?导轨?詹金斯?

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

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

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

【问题讨论】:

  • P.S. SO 抓取工具发布新帖子的速度有多快,而谷歌却将它们捡起来,这太荒谬了。发布此内容后,我继续搜索并找到了一个链接,其中包含更多信息……这是此链接的一部分,但在不同的站点上。

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


【解决方案1】:

为了快速修复,请尝试将 ruby​​gems 降级到 1.6 以下。 看起来 ruby​​gems 开发人员引入了一些代码来避免多次加载文件。

如果您有兴趣,这里是违规代码(来自https://github.com/rubygems/rubygems.git at 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

如果你无法降级,一个不太理想的解决方案是编辑 ruby​​gems.rb 所以

Regexp.escape path

变成

Regexp.escape path.to_s

【讨论】:

    【解决方案2】:

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

    这个 URL 最终让我开始着手解决这个问题:http://www.ygamretuta.com/2011/03/ruby-installing-ramaze-working-around-cant-convert-pathname-to-string-error/

    我还应该补充一点,尽管 Kelvin 给出的答案可能让我绕过了这个错误,但都不是问题的理想解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-09-22
      • 1970-01-01
      • 1970-01-01
      • 2011-11-21
      • 2015-10-09
      • 2012-03-03
      • 1970-01-01
      相关资源
      最近更新 更多