2013-09-03 4 views
4

내 응용 프로그램이 정상적으로 작동하므로 등록을 진행했습니다. 그래서 여기Errno :: ECONNREFUSED in UsersController # create

app/controllers/users_controller.rb:14:in `create' 

를 일으키는 내 코드입니다 : 내가 입력 한 후 내 정보는 내가 오류 페이지의 말이 나타납니다 : 메시지가

의 errno :: UsersController 번호에 ECONNREFUSED를

Connection refused - {:data=>"<?xml version=\"1.0\" encoding=\"UTF-8\"?><add><doc><field name=\"id\">User 1</field><field name=\"type\">User</field><field name=\"type\">ActiveRecord::Base</field><field name=\"class_name\">User</field><field name=\"username_text\">mikeadeleke</field><field name=\"bio_text\">Founder of Edopter</field></doc></add>", :headers=>{"Content-Type"=>"text/xml"}, :method=>:post, :params=>{:wt=>:ruby}, :query=>"wt=ruby", :path=>"update", :uri=>#<URI::HTTP:0x007fb6c3c911d0 URL:http://localhost:8982/solr/update?wt=ruby>, :open_timeout=>nil, :read_timeout=>nil, :retry_503=>nil, :retry_after_limit=>nil} 

를 만들 기다려. 나는 아무 문제도보고 roodi 검사기를 통해 그것을 달렸다.

class UsersController < ApplicationController 
    before_filter :get_user, except: [:new, :create] 

    def get_user 
     @user = User.find_by_username(params[:user_name]) 
    end 

    def new 
     @user = User.new 
    end 

    def create 
     @user = User.new(params[:user]) 
     if @user.save 
      sign_in @user 
      flash[:success] = "Woohoo! Thanks for creating an account. Feel free to edit your profile or look around elsewhere!" 
      redirect_to(user_url(@user.username)) 
     else 
      render 'new' 
     end 
    end 

    def show 
     @resources_upvoted = [] 
     @user.upvotes.where(upvotable_type: "Resource").each do |upvote| 
      @resources_upvoted << upvote.upvotable 
     end 
     @crafts_interested = [] 
     @resources_upvoted.each do |resource| 
      craft = resource.craft 
      if [email protected]_interested.include?(craft) 
       @crafts_interested << craft 
      end 
     end 
    end 

    def edit 
     if @user != current_user 
      redirect_to user_url(@user.username) 
     end 
    end 

    def update 
     @user.email = params[:email] 
     @user.bio = params[:bio] 
     @user.save 

     redirect_to edit_user_url(params[:user_name]) 
    end 

    def destroy 
     @user.destroy 

     redirect_to home_url 
    end 
end 
+0

데이터베이스 연결에 문제가있는 것 같습니다. 'database.yml'의 정보가 올바른지 확인하십시오. – cortex

+0

이 내 코드입니다 : 개발 : 어댑터 : sqlite3를 데이터베이스 : DB/<% = Rails.env %> sqlite3를 수영장 :. 5 제한 시간 : 5000 시험 : 어댑터 : sqlite3를 데이터베이스 : DB/<% = Rails.env %> sqlite3를 풀 :. 5 초과 5000 생산 : 어댑터 : sqlite3를 데이터베이스 :. dB/<% = Rails.env %> sqlite3를 풀 5 초과 5000 –

답변

9

귀하의 DB 연결, 사실, 당신이 당신의 오류 메시지에 대답을 잘이다, 당신은 그것을 볼 것이다 경우 해당 코드를 찾을 수

) : 의미

URL:http://localhost:8982/solr/update?wt=ruby> 

을 solr 서버를 시작해야합니다. 간단한 RAILS_ENV=your_env rake sunspot:solr:run으로 시작할 수 있습니다. 또한 전체 응용 프로그램을 중단시키지 않고 일부 메시지를 출력하기 위해 @user.save 주위에 일부 begin... rescue 블록을 추가하는 것을 고려하십시오.

는 SOLR를 명시 적으로 호출하지 않고 그 오류가 왜 당신이 관심이 있다면 - SOLR는 save 방법에 콜백을 추가하면에서 (이론적으로) 재 인덱싱이 없음을 의미합니다 모든 새로운 (또는 업데이트) 레코드는 인덱스 때문에 새 데이터를 추가 한 후 스크래치합니다.

+0

감사. 그렇다면 응용 프로그램을 열 수 없기 때문에 서버를 계속 실행해야합니다. 어댑터 : sqlite3를 # SQLite는 버전 3.x # 보석은 SQLite는 3 보석이 당신의 Gemfile # 보석 'sqlite3를' 개발에 정의되어 있는지 확인 sqlite3를 #을 설치 # : 나는 또한 내 database.yml을에 대한 질문을 받았다 데이터베이스 : dB/<% = Rails.env %> sqlite3를 풀 :. 5 초과 5000 시험 : 어댑터 : sqlite3를 데이터베이스 :. dB/<% = Rails.env %> sqlite3를 풀 5 시간 초과 : 5000 생산 : 어댑터 : sql ite3 데이터베이스 : db/<% = Rails.env %>. sqlite3 풀 : 5 시간 초과 : 5000 –

+1

solr을 계속 실행하지 않아도됩니다. 검색 또는 업데이트 수행). 당신의 app! = solr, 그것들은 두가지 다른 것들입니다. 필자가 작성한 것처럼 db (sqlite3)는 괜찮습니다. solr (또는 sunspot)은 검색에 사용되는 다른 데이터베이스입니다. – zrl3dx

+0

컨트롤러의 Sunspot에서 예외를 구출 할 수 없습니다. 하지만 Sunspots는 예외를 발생시키고 응용 프로그램을 중단시키는 새로운 스레드를 생성합니다. http://stackoverflow.com/questions/22704241/how-do-i-capture-a-rsolr-sunspot-exception-raised-on-a-different-thread-from-a-m을 참조하십시오. – Chloe

관련 문제