2016-09-03 11 views
0

私は持っている問題のいくつかの関連記事を検索しましたが、答えを見つけることができませんでした。私は、ほとんどの人がMacを使っているコーディングプログラムの学生ですが、私はWindows(7、Pro、64)を使っています。そのため、ここに投稿するツール/ソフトウェアに少し縛られています。Ruby PGの宝石の接続の問題

私はpg gemでRubyを介して接続しようとしています。私はSinatraとPostgreSQLを使用しています。私はPostgreSQL用のサーバ、データベース、および設定パス変数を設定しましたが、pg gem(他の記事のように問題はありませんでした)を次の行にインストールしました。

gem install pg -- --with-pg-config=C:\Program Files\PostgreSQL\9.5\bin

Sinatraを起動してローカルホストに移動すると、 Macユーザー以外の方法でNil:NilClassのNoMethodError、Undefinedメソッドが取得されます。

方法であって、そう

configure :development do 
    set :db_config, { dbname: "news_aggregator_development" } 
end 

configure :test do 
    set :db_config, { dbname: "news_aggregator_test" } 
end 

def db_connection 
    begin 
    connection = PG.connect(Sinatra::Application.db_config) 
    yield(connection) 
    ensure 
    connection.close 
    end 
end 

get '/articles' do 
    @results = db_connection do |conn| 
    conn.exec("SELECT * FROM articles") 
    end 
    erb :index 
end 

connection戻りnil、および未定義の方法エラーとclose方法戻ります。私は構文エラーがあるとは思わないが、これについて他の人に確認したところ、pgとの接続エラーに関連していると思っている。

初めての投稿ですので、私の上で簡単に行ってください=)必要な情報を残しておけば謝罪します。もっと多くの文脈が役立つかもしれないと私はそれを提供しようとします!ありがとうございました!

+0

dbサーバは稼動していますか? –

+0

はい、確認しました – CTAnthny

+0

'db_connection'メソッドをヘルパーにすると、' Sinatra :: Application.db_config'の代わりに 'settings.db_config'を使うことができます。 DBホスト、ユーザー、パスワードなどはどこで設定していますか? – mwp

答えて

0

2点:

  1. helpers {}ブロックであなたのシナトラヘルパーを包みます。これは、あなたがSinatra::Application.db_configの代わりにsettings.db_configを使用できるようになります:

    あなたPG.connectコールで
    helpers do 
        def db_connection 
        connection = PG.connect(settings.db_config) 
        yield connection 
        ensure 
        connection.close 
        end 
    end 
    
  2. 、あなたはホスト、ユーザー、パスワードを渡す必要があり、かつPG宝石のために必要な他のオプションは、見つけ接続し、認証するために、あなたのインスタンスに。 dbnameだけでは不十分です。少なくともWindowsではそうではありません。

    configure :development do 
        set :db_config, { 
        host: "localhost", 
        port: 5432, 
        user: "foo", 
        password: "bar", 
        dbname: "news_aggregator_development" 
        } 
    end 
    

幸運!

関連する問題