これが私のアプリです:価格インフレ計算機。[計算]をクリックすると、サーバー関連のエラーが発生する可能性があります。シナトラでアプリをテストしたところ、次のようなエラーが発生しました
PG::Error: FATAL: too many connections for role "********"
調べてみると、Herokuは無料のデータベースを20接続に制限していることがわかりました。
Herokuで小さなアプリ(特にデータベース駆動型アプリ)の開発を続けたいのですが、この制限を回避できない場合は開発できない可能性があります。より多くの接続を可能にするデータベースを取得するために月額$50を支払いますが、それが価値があるかどうかはまだわかりません。
私の質問は、この制限を無料で回避できるかどうか、またはデータベース駆動型のSinatraアプリをホストできるHerokuの代替手段があるかどうかを誰かが知っていますか?
インフレデータをデータベースに追加するために使用するコードは次のとおりです。
require 'rubygems'
require 'rest-client'
require 'nokogiri'
require 'sequel'
### MAKE CPI DATABASE ###
db_name = 'DATABASE_NAME_HERE'
DB = Sequel.postgres(db_name,:user=>'USER_NAME',:password=>'PASSWORD',:host=>'HOST',:port=>5432,:sslmode=>'require')
DB.create_table! :cpi_nsa_annual do
primary_key :id
Integer :year
Float :cpi
end # DONE: DB.create_table :cpi_nsa_annual do
cpi_annual = DB[:cpi_nsa_annual]
### DONE MAKING CPI DATABASE ###
post_url = "http://data.bls.gov/pdq/SurveyOutputServlet"
post_params = {
'delimiter'=>'comma',
'output_format'=>'html',
'output_type'=>'column',
'periods_option'=>'all_periods',
'series_id'=>'CUUR0000SA0',
'years_option'=>'all_years'
}
if page = RestClient.post(post_url,post_params)
npage = Nokogiri::HTML(page)
data = npage.css('table.regular-data tbody tr')
data.each{|row|
month_prefix = (row.css('th')[2].text)[0]
year = row.css('th')[1].text
month = (row.css('th')[2].text)[1..2]
cpi = row.css('td').text
if month_prefix=='M' and month=='13'
cpi_annual.insert(
:year=>year,
:cpi=>cpi
) # DONE: cpi_annual_insert
p ["YEAR",year,cpi]
end # DONE: month_prefix=='M' and month!='13'
}
end # DONE: if page
p cpi_annual.each{|row| p row}