2013-09-29 4 views
2

나는 Heroku에서 호스팅되는 Postgres 데이터베이스에 연결을 시도하는 Ruby 스크립트를 작성했습니다.루비 숨겨진 입력 암호

하드 코드 된 암호를 사용하거나 gets을 사용하여 암호를로드하면 모든 것이 정상적으로 작동합니다. 여기

storing.rb:11:in `initialize': FATAL: password authentication failed for user "***" (PG::ConnectionBad) 
FATAL: no pg_hba.conf entry for host "****", user "***", database "***", SSL off 
    from storing.rb:11:in `new' 
    from storing.rb:11:in `create_conn' 
    from fetch_currencies.rb:11:in `<main>' 

내 코드 것 : 나는 IO.noecho를 사용하여 암호를로드하는 경우 그러나, 나는 다음과 같은 예외를 얻을 내가로드 한 후 암호를 인쇄 할뿐만 아니라, 그것의 여부를 확인하려

def create_conn(password) 
    conn = PGconn.connect(
     :host => '***', 
     :port => 5432, 
     :dbname => '***', 
     :user => '***', 
     :password => password) 
    return conn 
end 

puts 'Postgres DB password:' 
pass = STDIN.noecho(&:gets) 
conn = create_conn(pass) 

문자열, 그리고 모든게 잘 될 것 같습니다. 무엇이 문제 일 수 있습니까?

답변

2

문제는 물론 내가 입력 한 chomp이 아니기 때문에, 줄 바꿈 문자도 암호의 일부로 전달 된 것 같습니다.

갈 올바른 방법은 다음

pass = STDIN.noecho(&:gets).chomp 
입니다