web-dev-qa-db-ja.com

SocketError(getaddrinfo:名前またはサービスが不明)-Sunspot / Solr Rails development

Rails 3.0.10アプリケーションをPassenger、Capistrano、nginx、MySQLを使用してUbuntu 10.04サーバーにデプロイすることで多くの問題が発生しました(Apache2ではさらに問題が発生しました)。rakeを0.8にダウングレードした後。 7ようやく動作しましたが、Sunspot/Solrは私の開発環境では動作しません。sunspot_solrサーバーが実行されており、サーバーのURLを取得して、ブラウザー経由で接続できます。URLは、 sunspot.yml。問題を引き起こした可能性のある私が何をしたのかわかりません。以前に(レーキをダウングレードする前に)sunspotで同じ問題が発生しました。その後、突然再び動作し始めました。理由はわかりません... Sunspotの2つのバージョン(1.2.1と1.3.0)を試しましたが、どちらも以前は機能していましたが、現在は機能していません。

これは私が受け取っているエラーメッセージです:

SocketError (getaddrinfo: Name or service not known):
app/models/resource.rb:128:in `text_search'
app/controllers/search_controller.rb:21:in `index'

Rendered /usr/lib/Ruby/gems/1.8/gems/actionpack-3.0.10/lib/action_dispatch/middleware/templates/rescues/_trace.erb (2.0ms)
Rendered /usr/lib/Ruby/gems/1.8/gems/actionpack-3.0.10/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (161.6ms)
Rendered /usr/lib/Ruby/gems/1.8/gems/actionpack-3.0.10/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within rescues/layout (168.9ms)

コントローラは少し面倒なので、関連する部分だけを含めます:

@criterion = params[:criterion]
@sort_direction = params[:sort_direction]
if @criterion && @sort_direction
  session["sort_search"] = @criterion + "|" + @sort_direction 
elsif session["sort_search"]
  @criterion = session["sort_search"].split("|")[0]
  @sort_direction = session["sort_search"].split("|")[1]
else
  @criterion = "updated_at"
  @sort_direction = "desc"
 end
@search = Resource.text_search(session[:search_params] || "", current_user, @criterion, @sort_direction) 
@resources = @search.results

それが働いていたので、私はコントローラーで何も変更していません。

私のgemfile:

source 'http://rubygems.org'
gem 'rake'
gem 'Rails', '3.0.10'
gem 'jquery-Rails', '>= 1.0.12'
gem 'sqlite3'
gem 'ancestry'
gem 'carrierwave'
gem 'sunspot_Rails', '>= 1.3' #'~> 1.2.1' #
gem 'authlogic'
gem 'will_paginate'
gem 'declarative_authorization'
group :production do
  gem 'mysql'
end
group :development do
  gem 'sunspot_solr'
end
gem 'capistrano'

私のレイクファイル:

require File.expand_path('../config/application', __FILE__)
require 'rake'

Skolearkivet::Application.load_tasks
14
Johan Hovda

ワイルドな推測ですが、localhostをホスト名として使用している可能性はありますか? localhostを127.0.0.1に変更してみてください

28
Roger

この行をファイルapp/controllers/search_controller.rbの先頭に追加しました

require 'resolv-replace'

あるいは、initializers/requires.rbに置くこともできます

9
ramdanplusplus

私はRailsとOSXのlogstasherで同じ問題を抱えていましたが、この投稿を読むまで何が起こっているのか理解できませんでした。これを追加して、ログスタッシャーと同じ種類の問題が何かを見つけることができます...

`=> Booting Unicorn
=> Rails 4.2.5 application starting in development on http://0.0.0.0:3000
=> Run Rails server -h for more startup options
=> Ctrl-C to shutdown server
Exiting
/Users/xx/Projects/xx/config/environments/development.rb:80:in 'getaddress': getaddrinfo: nodename nor servname provided, or not known (SocketError)`

修正は、マシンのホスト名を127.0.0.1の/ etc/hostsの下のリストに追加することでした。

1
oktobermoon

/etc/resolv.confを編集して回避した同様の問題がありました

nameserver 10.0.x.x
search example.com

#nameserver 10.0.x.x
nameserver 8.8.8.8
#search example.com
1
spuder

私にとっては、resolv.confの検索行を削除するだけで十分でした。私の会社は自分のドメインを自動的に挿入し、ホスト名はホストファイルのFQDNではありませんでした。これは明らかにテスト環境です。

1
Marco Mazzucco

サードパーティのサービスURLの1つが正しくない可能性があります。たとえば、間違ったSMTPメールアドレスがありました。アプリ内の例外により、管理者にエラーがメールで送信され、エラーが発生して失敗しました。不正なアドレスであることがわかる方法は次のとおりです。

irb(main):009:0> Socket.gethostbyname("example.net")
SocketError: getaddrinfo: Name or service not known
0
konyak

この行を追加しました

'resolv-replace'が必要

エラーが発生している私のコントローラーファイルに、それは私のために働いた。それもあなたのために働くことを願っています!

0
Linda Kadz