Как поделиться второй базой данных Heroku с несколькими приложениями Heroku Rails

У меня есть два приложения Heroku, одно для постановки, другое для производства. У каждого своя отдельная первичная БД. У меня есть вторая база данных Heroku, к которой нужно получить доступ как для подготовки, так и для производства.

Запуская Rails 4.1.0.rc1, когда я пытаюсь использовать 'install_connection' и URL-адрес, который я настроил со всеми правильными значениями для вторичной БД, вместо этого я подключаюсь к первичной БД. После этого, если я проверю ActiveRecord::Base.configurations, я увижу новую добавленную пару ключ/значение. Ключ — это URL-адрес, а значение выглядит как копия значений конфигурации для «производственного» ключа.

Все мои исследования показывают, что все, что мне нужно сделать, это

User.establish_connection ENV['SECONDARY_DATABASE_URL']

Этот метод отлично работает локально, но не работает на Heroku.


person mdn    schedule 25.03.2014    source источник


Ответы (1)


Этот хак работает, но мне кажется плохой идеей:

url = ENV['MC_CONVERSION_DATABASE_URL']

if url
  uri = URI url
  db_config = {
    'adapter'     => 'postgresql',
    'username'    => uri.user,
    'password'    => uri.password,
    'port'        => uri.port,
    'database'    => uri.path[1..-1], # remove leading '/'
    'host'        => uri.host
  }
else
  # in the dev environment, use one of the configs from database.yml
  db_config = :mc_conversion
end

McUser.establish_connection db_config
McMod.establish_connection db_config
person mdn    schedule 26.03.2014