簡體   English   中英

Ruby PG gem連接問題

[英]Ruby PG gem connection issue

我已經在幾個相關的帖子中搜索了我遇到的問題,但找不到答案。 我是大多數人都使用Mac的編碼程序的學生,但是我使用的是Windows(7,Pro,64)-因此,我對這里將要發布的工具/軟件有一定的限制。

我正在嘗試通過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 Method。

方法是:

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的連接錯誤有關。

第一次發布,因此請對我輕松一點=)如果我遺漏了任何必要的信息,我們深表歉意-讓我知道還有什么其他背景可能會有所幫助,我將盡力提供! 謝謝!

兩點:

  1. 將您的Sinatra幫助程序包裝在helpers {}塊中。 這將允許您使用settings.db_config而不是Sinatra::Application.db_config

     helpers do def db_connection connection = PG.connect(settings.db_config) yield connection ensure connection.close end end 
  2. PG.connect調用中,您應該傳遞主機,用戶,密碼以及pg gem查找,連接並驗證您的實例所需的任何其他選項。 dbname是不夠的-至少在Windows上還不夠。

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

祝好運!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM