2012-03-11 25 views
11

我在使用Passenger,Capistrano,nginx和MySQL部署我的rails 3.0.10应用程序到Ubuntu 10.04服务器时遇到了很多麻烦(甚至更麻烦与apache2)。将rake降级到0.8.7后,终于可以正常工作了,但现在Sunspot/Solr在我的开发环境中不起作用。 sunspot_solr服务器正在运行,我可以获取服务器的url,并通过浏览器连接到它。该网址与sunspot.yml中的相同。我不知道我所做的事情是否会导致问题。我之前在太阳黑子上遇到了同样的问题(在降级耙子之前)。然后突然又开始工作了。我不知道为什么...我尝试过两个版本的太阳黑子(1.2.1和1.3.0)。两者都在早期工作,但现在不再了。SocketError(getaddrinfo:名称或服务未知) - 太阳黑子/ 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 2012-03-11 11:06:10

+0

的来源包括控制器 – 2012-03-11 11:20:45

+1

我认为我们需要更多的相关部分,因为有错误被触发模型:应用程序/模型/ resource.rb:128: – Roger 2012-03-11 11:33:34

回答

24

只是胡乱猜测,你正在使用localhost作为主机名的任何机会呢?请尝试更改本地主机127.0.0.1

+1

哎呀,这不是应该是一个答案,但评论... – Roger 2012-03-11 11:53:45

+0

感谢的!我对此感到非常沮丧!现在我可以继续做我计划的事了! :-) – 2012-03-11 11:57:53

+0

啊,它的工作?不错。是啊不知道,但那本地东西有时很奇怪...... – Roger 2012-03-11 12:48:24

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 2016-12-16 05:27:25

1

我一直有与OSX轨道和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文件

1

对我来说,在我的resolv.conf中删除搜索行就足够了。我的公司自动插入它自己的域,我的主机名不是我的hosts文件中的FQDN。这显然是一个测试环境。

相关问题