2016-09-09 1 views
1

У меня есть простой скрипт Ruby, который я успешно использую локально для импорта CSV-файла в мою модель. Это работает в разработке, но не в производстве (Heroku)`retrieve_connection ': нет пула соединений для модели (ActiveRecord :: ConnectionNotEstablished)

Я не могу пройти мимо следующей ошибки:

`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 будет жаловаться на пул, поскольку это указано, когда я проверяю ActiveRecord :: Base.configurations [Rails.env] в консоли Heroku Rails.

Должен сказать, что я пробовал это со следующей конфигурацией базы данных, но также не работает, потому что heroku хранит информацию о базе данных в [DATABASE_URL].

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

Можно я пытаюсь соединить все неправильно, если это так я просто нужно написать к моей модели компании в скрипте рубина, выполненной в терминале.

ответ

2

Это длинный снимок, но вы сказали, что heroku хранит информацию конфигурации DB в URL-адресе. Следующий фрагмент кода от рельсов DOCS

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

ActiveRecord::Base.establish_connection(
    "postgres://myuser:[email protected]/somedatabase" 
) 

Может быть, вы можете подключиться как это:

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

, что именно решение я был после. Большое вам спасибо !, плохо принимайте это как ответ – Dearg