2012-03-11 37 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。這顯然是一個測試環境。

相關問題