2014年10月28日火曜日

[Berkshelf::APIClient::TimeoutError] Unable to connect to: http://api.berkshelf.com/

vagrantでcentos6.5の環境を構築し、chefDKをinstallしてopscodeからソースを取得しようとしたら題名のエラーが発生した。

環境

  • box centos6.5 on vagrant 1.6.5
  • windows7 & mac Yosemite
  • chefDK 0.3.0

原因はconnection.rbファイルのopen_timeoutの設定時間が短すぎること。どうやらwindowsやmac上のvagrantで実行していると名前解決に時間がかかってしまうらしい。

対処方法は、connection.rbを書き換えるしかないようです。ということでLet's hacking。


  find /. -name connection.rb

  // result...
  /opt/chefdk/embedded/lib/ruby/gems/2.1.0/gems/berkshelf-api-client-1.2.0/lib/berkshelf/api_client/connection.rb
  

発見。このconnection.rbを書き換える。

before


  def initialize(url, options = {})
    options         = options.reverse_merge(retries: 3, retry_interval: 0.5,
      open_timeout: 3, timeout: 30)

after


  def initialize(url, options = {})
    options         = options.reverse_merge(retries: 3, retry_interval: 0.5,
      open_timeout: 30, timeout: 30)

保存したらいつものようにberks installをすれば上手くいくはずです。

以上

参考サイト

この記事がお役にたちましたらシェアをお願いします

このエントリーをはてなブックマークに追加

0 件のコメント:

コメントを投稿

Related Posts Plugin for WordPress, Blogger...