2012-03-11 2 views
11

У меня было много проблем с развертыванием моего приложения rails 3.0.10 на сервер Ubuntu 10.04 с помощью Passenger, Capistrano, nginx и MySQL (и еще больше проблем с apache2). После понижения рейтинга до 0.8.7 он, наконец, работает, но теперь Sunspot/Solr не работает в моей среде разработки. Сервер sunspot_solr запущен, и я могу получить URL-адрес сервера и подключиться к нему через браузер. URL-адрес такой же, как и в sunspot.yml. Я понятия не имею, что я сделал, что могло вызвать проблему. У меня была такая же проблема с солнечным пятном раньше (до того, как я понизил грабли). Затем он снова начал работать. Я не знаю, почему ... Я пробовал две версии Sunspot (1.2.1 и 1.3.0). Оба они работали раньше, но больше не работают.SocketError (getaddrinfo: имя или услуга неизвестна) - разработка Sunspot/Solr Rails

Это сообщение об ошибке я получаю:

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' 

Мой rakefile:

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

Skolearkivet::Application.load_tasks 
+0

, пожалуйста, напишите источник контроллера – Roger

+0

отредактировал мое сообщение, чтобы включить соответствующие части контроллера –

+1

Мне кажется, нам нужно больше, поскольку в модели есть ошибка: app/models/resource.rb: 128: – Roger

ответ

24

просто дикое предположение, любой шанс, что вы используете Localhost в качестве имени хоста? Попробуйте изменить локальный хост на 127.0.0.1

+1

oops, который не должен был отвечать, но комментарий ... – Roger

+0

Спасибо !!! Я был так расстроен этим! Теперь я могу продолжать делать то, что я планировал! :-) –

+0

ах, его работа? хороший. да, не знаю, но эта вещь-локатор иногда бывает странной ... – Roger

1

У меня были аналогичный вопрос, который я работал вокруг редактирования /etc/resolv.conf

перед тем

nameserver 10.0.x.x 
search example.com 

после

#nameserver 10.0.x.x 
nameserver 8.8.8.8 
#search example.com 
7

Я добавил эту строку в начало файла app/controllers/search_controller.rb

require 'resolv-replace' 

Или же вы можете поместить его в инициализаторах/requires.rb

+0

превосходно, что работает .. можете ли вы дать информацию о вашем ответе @ramdanplusplus – praveenkumar

1

Я был с таким же вопросом с рельсами и logstasher на 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)` 

Fix, чтобы добавить свою машину имя хоста в списке под/и т.д./хостов для 127.0.0.1

1

Для меня было достаточно удалить строку поиска в моем resolv.conf. Моя компания автоматически добавила свой собственный домен, и мое имя хоста не было FQDN в моем файле hosts. Очевидно, это тестовая среда.

Смежные вопросы