문제

내가 코드 루비 IRC 는 github(/ninjex/rubot)는 데 어떤 충돌하는 출력으로 MySQL 전용 서버에서 나는 단지입니다.

첫째는 우리는 연결을 데이터베이스에서 MySQL 폴더(습니다.gitignore)는 다음과 같은 코드 블록입니다.

@con = Mysql.new('localhost', 'root', 'pword', 'db_name')

그런 다음 우리는 실제 기능을 쿼리 데이터베이스

def db_query
 que = get_message # Grabs query from user i.e,./db_query SELECT * FROM words
 results = @con.query(que) # Send query through the connection i.e, @con.query("SELECT * FROM WORDS")
 results.each {|x| chan_send(x)} # For each row returned, send it to the channel via
end

에는 로컬 컴퓨터 명령을 실행할 때:

./db_query SELECT amount, user from words WHERE user = 'Bob' and word = 'hello'

나는 받을 출력에서 배열과 같은 패션: ["17", "Bob"] 는 17 일 금액이 밥입니다.

그러나 사용하여 이 같은 기능을 내에는 전용 서버에서 결과 같은 출력: 17Bob 나는 시도는 많은 변화에 코드뿐만 아니라,구문 분석하는 데이터는 그것의 고유 변수,그러나 그것은 보인다 17Bob 이 나오는 하나의 변수하는 것이 불가능하고,구문 분석으로 무언가가 같은 배열,내가 사용할 수 있습니다 다음을 보낼 데이터를 올바르게.

이 나에게 이상한 것 같다 모두에서 나는 로컬 컴퓨터와 서버에 같이 내가 기대하는 출력하는 첫 번째 보낼 17IRC 그리고 밥 같:

17
Bob

모든 기능과 원본 확인할 수 있습니다 내 github/Ninjex/rubot,그러나 당신이 필요할 수 있습을 설치하는 몇 가지 보석입니다.

도움이 되었습니까?

해결책

몇 가지 메모:

  1. 고 있는지 확인 위생를 통해 쿼리 get_message.거나 당신에 자신을 개방하는 일부 심각한 보안 문제.
  2. 를 사용하는지 확인하십시오 같은 버전의 mysql 보석,ruby 와 MySql.차이에 이러한 변경할 수 있습을 예상 출력됩니다.
  3. 는 경우성의 끝에서와 못하는 근본 문제를 해결할 수 있습니다 항상 보낼 사용자 지정 구분 기호하는 데 사용할 수 있다.불행하게도,그것은 깨끗하는 경우는 실제로 일하고 제거해야 합니다.

여기에 어떻게 접근하는 문제를 디버깅에 전용 machine:

def db_query
 que = get_sanitized_message
 results = @con.query(que)
 require 'pry'
 binding.pry

 results.each {|x| chan_send(x)}
end
  1. 추가 올립 gem 하도록 gemfile 을나 gem install pry.
  2. 업데이트 코드를 사용 pry:위 참조
  3. 열게 될 것이고 놀리려면 콘솔 binding.pry 라인은 히트할 수 있습 거의 모든 질의에 실행 중인 응용 프로그램.
  4. 나는 살펴보 results 면 그것은 훌륭한 기능들을 가지고 있습니다.그냥 유형 results 콘솔에서 그것을 인쇄합니다.또한 유형 results.class.그것은 가능한 쿼리를 반환하는 일부 특별한 결과로 설정되지 않은 개체는 배열에만 있는 방법에 액세스하는 결과 배열입니다.
  5. 는 경우 results 이 배열한 후 문제에서 가장 가능성이 높은 chan_send.아마도 그것이 필요 같은 것을 사용하는 putsprint 이 있는지 확인하려면의 새로운 라인한 후 각각의 메시지입니다.가능 있는 다양한 버전의 codebase 배포되는?또한 추가 sleep 1 에서 각 블록하도록 이와 관련된 당신의 처리에 도착하는 메시지에는 동일한 시간입니다.
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top