Ruby on rails 3 SocketError(getaddrinfo:名称或服务未知)-Sunspot/Solr Rails开发

Ruby on rails 3 SocketError(getaddrinfo:名称或服务未知)-Sunspot/Solr Rails开发,ruby-on-rails-3,sunspot,sunspot-rails,sunspot-solr,Ruby On Rails 3,Sunspot,Sunspot Rails,Sunspot Solr,在使用Passenger、Capistrano、nginx和MySQL将rails 3.0.10应用程序部署到Ubuntu10.04服务器时,我遇到了很多麻烦(使用apache2时更麻烦)。在将rake降级到0.8.7之后,它终于可以工作了,但现在Sunspot/Solr在我的开发环境中不起作用。sunspot_solr服务器正在运行,我可以获取服务器的url,并通过浏览器连接到它。url与sunspot.yml中的相同。我不知道我做了什么导致了这个问题。早些时候(在我降级rake之前),我对太

在使用Passenger、Capistrano、nginx和MySQL将rails 3.0.10应用程序部署到Ubuntu10.04服务器时,我遇到了很多麻烦(使用apache2时更麻烦)。在将rake降级到0.8.7之后,它终于可以工作了,但现在Sunspot/Solr在我的开发环境中不起作用。sunspot_solr服务器正在运行,我可以获取服务器的url,并通过浏览器连接到它。url与sunspot.yml中的相同。我不知道我做了什么导致了这个问题。早些时候(在我降级rake之前),我对太阳黑子也有同样的问题。然后它突然又开始工作了。我不知道为什么。。。我试过两个版本的太阳黑子(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
自从控制器工作以来,我没有更改任何内容

我的档案:

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

只是随便猜测一下,您是否有可能使用localhost作为主机名?尝试将localhost更改为127.0.0.1

我遇到了一个类似的问题,我通过编辑/etc/resolv.conf解决了这个问题

以前

nameserver 10.0.x.x
search example.com
之后


我将这一行添加到app/controllers/search_controller.rb文件的顶部

require 'resolv-replace'

或者你也可以把它放到initializers/requires.rb上,我在OSX上的rails和logstasher也遇到了同样的问题,直到我读了这篇文章才知道发生了什么。我想我应该加上这个,这样其他任何和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下的列表中,对我来说,删除我的resolv.conf中的搜索行就足够了。我的公司自动插入了自己的域,我的主机名在我的主机文件中不是FQDN。这显然是一个测试环境。

可能是您的第三方服务URL之一不正确。例如,我们有错误的SMTP邮件地址。应用程序中的异常导致它将错误通过电子邮件发送给管理员,但由于错误而失败。以下是您如何知道地址不正确的原因:

irb(main):009:0> Socket.gethostbyname("example.net")
SocketError: getaddrinfo: Name or service not known
我加了这一行

需要“解决替换”


我的控制器文件的错误是从哪里来的,它为我工作。希望它对你也有用

请发布控制器的来源编辑我的帖子以包括控制器的相关部分我认为我们需要更多,因为模型中触发了错误:app/models/resource。rb:128:控制器中的所有内容和模型都工作正常。我唯一更改的是gemfile、rakefile等文件。我将编辑我的初始帖子,包括这些。啊,它起作用了吗?美好的是的,不知道,但是localhost有时很奇怪……是的,它正在工作!我猜当部署应用程序时,“localhost”指向远程服务器上的localhost,而不是开发机器上的localhost。否则我也无法理解。我也有同样的问题,但我的服务器名不是localhost,有什么建议吗?@SamBaumgarten你解决过这个问题吗?您检查了/etc/hosts文件了吗?我在更改主机名时遇到了一些问题,因为Ror不使用Apache。是否应该将localhost映射到hosts文件中的127.0.0.1,或者您的意思是什么?上面的更改实际上是做什么的?
irb(main):009:0> Socket.gethostbyname("example.net")
SocketError: getaddrinfo: Name or service not known