`retrieve_connection':模型没有连接池(ActiveRecord :: ConnectionNotEstablished)

时间:2016-09-09 21:27:59

标签: ruby-on-rails ruby heroku

我有一个简单的Ruby脚本,我在本地成功使用,将CSV文件导入到我的模型中。这在开发中有效但在Production(Heroku)中失败

我似乎无法解决以下错误:

`retrieve_connection':公司没有连接池(ActiveRecord :: ConnectionNotEstablished)

open_csv_prod.rb

require 'csv'
require_relative 'helpers'
require 'active_record'
require 'rails'

# Connect to database
ActiveRecord::Base.configurations[Rails.env] || Rails.application.config.database_configuration[Rails.env]

class Company < ActiveRecord::Base
print_memory_usage do
print_time_spent do


  #open the file
    filename = 'lib/assets/1/BasicCompanyData-2016-09-01-part1_5.csv' 
  # count how many rows? 
    line_count = `wc -l "#{filename}"`.strip.split(' ')[0].to_i
  # Print that result  
    puts "#{line_count}"

    count = 0


    CSV.foreach(filename, headers: true) do |row|
      Company.create! row.to_hash
      count += 1
      p "#{count}"
    end

  end
  end 
  end
  

heroku run ruby​​ open_csv_prod.rb

这导致上面报告的错误。我不知道为什么Heroku会抱怨一个池,因为当我在Heroku Rails控制台中检查ActiveRecord :: Base.configurations [Rails.env]时会列出这个。

我应该说我已经尝试过以下数据库配置,但它也失败了,因为heroku在[DATABASE_URL]中存储了数据库信息。

ActiveRecord::Base.establish_connection(
adapter: 'postgresql',
host:     ENV['IP'],
username: ENV['USERNAME'],
password: ENV['PASSWORD'],
database: 'dbb_development'
)

我有可能尝试连接所有错误,如果是这样,我只需要在终端中执行的ruby脚本中写入我的公司模型。

1 个答案:

答案 0 :(得分:2)

这是一个很长的但是,你说heroku将数据库配置信息存储在一个URL中。以下代码段来自rails docs

http://api.rubyonrails.org/classes/ActiveRecord/ConnectionHandling.html

ActiveRecord::Base.establish_connection(
  "postgres://myuser:mypass@localhost/somedatabase"
)

也许你可以像这样连接:

ActiveRecord::Base.establish_connection(
  ENV['DATABASE_URL']
)