2014-06-18 4 views
1

TestLogger 클래스에서 'pg'(버전 0.16.0)가 true를 반환하지만 PGconn이 등록되어 있지 않아야합니다.'pg'가 true를 반환하지만 PGconn과 PG를 정의하지 못함

지금까지는 서버에만이 문제가 있으며 TestLogger에서만 발생합니다. 'pg'가 필요한 다른 루비 코드는 PG와 PGconn을 얻는데 문제가 없습니다. 모든 것이 내 개발자 컴퓨터에서 작동합니다 (Mac).

그래서 문제는 서버 (Debian)에서만 발생하며 TestLogger에서만 발생합니다.

실패한 환경은 다음과 같이 구성됩니다. autorun.rb, Gemfile (번들 설치 실행으로 생성 된 + 새 Gemfile.lock) 및 testlogger.rb가 포함 된 폴더가 있습니다. autorun.rb 스크립트는 때로는 수동으로, 때로는 cron에서 실행되지만, 항상 cd $ some_folder로 실행됩니다. 시작하기 전에 cd autorun_folder를 실행하여 적절한 환경 (rvm 및 Gemfile)이로드되도록하십시오.

TestLogger은 다음과 같습니다

# encoding: UTF-8 
class TestLogger 
    def initialize(opt = {}) 
    require 'pg' 
    @@pg = PGconn.open :dbname => 'statuslog' 
    end 
end 

autorun.rb은 다음과 같이 시작 :

require_relative './testlogger' 
$runlog = TestLogger.new 
... 

하면서, 코드는 "PGconn 누락"로 죽으면, 그래서 그 '페이지'를 요구하는 것 true를 반환하면 PG와 PGconn을 실제로로드하지 않습니다. 이상한 점은 자동 실행으로 시작되는 작업도 postgres를 사용한다는 것입니다 ('pg'와 PGconn.open이 필요함) 작동합니다. 동일한 테이블 'statuslog'를 사용하며 동일한 사용자가 실행합니다.

필자는 $ PATH와 $ : 및 .rvm 폴더를 검사하여 pg.rb 파일을 찾았습니다. 필요한 pg.rb 파일은 require 대신에 찾을 수 있습니다. activerecord-jdbc-adapter-1.2.9/lib/pg.rb (그리고 차례로 PG가로드 됨)와 heroku-2.35.0/lib/heroku/command/pg.rb가 발견되었습니다. 확인할 수 있을까요?

답변

1

(속성에 대한 사이몬 B.의 대답에 따라 & 붙여 넣기를 복사 - 감사합니다 시몬)

testlogger.rb에서 : 파일이 실제로 '페이지'를 필요로로드

before = $LOADED_FEATURES.dup 
require 'pg' 
p $LOADED_FEATURES-before 

이 인쇄 activerecord-jdbc-adapter 였으므로 jdbc는 java/jruby 용이고 Simon은 MRI를 사용하므로 jdbc 어댑터를 제거하는 것이 솔루션입니다.

gem uninstall activerecord-jdbc-adapter 

으로 제거

을 근무
관련 문제