2 приложения Rails, 1 база данных (с использованием Heroku) - PullRequest
2 голосов
/ 10 марта 2010

Я создал 2 приложения, Приложение A и Приложение B. Единственная цель приложения A - разрешить пользователям регистрироваться, а цель приложения B - отправить избранных пользователей из приложения A по электронной почте. Поскольку приложение A & B было создано независимо и размещено в 2 отдельных экземплярах Heroku, как приложение B может получить доступ к базе данных пользователей в приложении A? Есть ли способ передать определенные релевантные строки из приложения A в приложение B?

Ответы [ 6 ]

4 голосов
/ 10 марта 2010

В настоящее время нет возможности обмена базами данных между приложениями Heroku.

Возможно, вы сможете использовать Amazon RDS для запуска выделенного экземпляра MySQL.

Альтернативой будет создание API и передача данных между приложениями. Вы можете запустить фоновый процесс, чтобы выдвигать и выводить данные.

3 голосов
/ 09 февраля 2012

Вы можете подключить несколько экземпляров Heroku к одной общей базе данных PostgreSQL, предоставленной бесплатным дополнением shared-database:5mb для Heroku.

В случае экземпляра базы данных введите:

$ heroku config

Это покажет множество настроек, в которых вы увидите что-то вроде этого:

DATABASE_URL => postgres://fbksgiuqlv:BuIvJDfS_eOBDJDZCc9SP@ec2-104-20-247-168.compute-1.amazonaws.com/fbksgiuqlv

Это строка подключения к базе данных, которую будут использовать ваши экземпляры.

Затем в других случаях переписать конфигурационную переменную DATABASE_URL, набрав:

$ heroku config:add DATABASE_URL=your_new_connection_string
2 голосов
/ 26 января 2011

Так что немного повозился и сделал, как показано ниже, и это сработало

prompt$ heroku console
Ruby console for your-app.heroku.com
>> dbconfig = YAML.load(File.read('config/database.yml'))
=> {"production"=>{"encoding"=>"unicode", "port"=>5432, "adapter"=>"postgresql", "username"=>"xxxxxxxxxxxxxx", "database"=>"xxxxxxxxxxxxx", "host"=>"kklasfdsfjsfdsfsd.fsdf.dsfdsf", "password"=>"xxxxxxxxxxxxxxxxxx"}}
puts dbconfig.to_yaml
--- 
production: 
  encoding: unicode
  port: 5432
  adapter: postgresql
  username: xxxxxxxxxxx
  database: xxxxxxxxxxxxxxx
  host: ec2-50-2323kskdsakd231.amazonaws.com
  password: xxxxxxxxxxxxxx

Затем скопируйте и вставьте yaml в соединение с другой БД

и это работает !!! Для меня !!!

1 голос
/ 07 августа 2011

Я тоже смотрел на это и заметил, что кажется , как будто теперь это действительно возможно сделать.

См .: http://newsletterer.heroku.com/2011/07 (раздел «Знаете ли вы» внизу)

По сути, вы настраиваете одно приложение, получаете URL базы данных приложения и добавляете этот URL в конфигурацию другого приложения, например так:

$ heroku config | grep DATABASE_URL  --app sushi
DATABASE_URL   => postgres://lswlmfdsfos:5FSLVUSLLT123@ec2-123-456-78-90.compute-1.amazonaws.com/ldfoiusfsf

Затем установите DATABASE_URL для новых приложений на это значение:

$ heroku config:add DATABASE_URL=postgres://lswlmfdsfos:5FSLVUSLLT123@ec2-123-456-78-90.compute-1.amazonaws.com/ldfoiusfsf --app sushi-analytics
Adding config vars: DATABASE_URL => postgres://lswlm...m/ldfoiusfsf
Restarting app... done, v74.

Вот и все - теперь оба приложения будут использовать одну базу данных.

Я еще не пробовал этого, но собираюсь попробовать, так как я тоже думал о том, чтобы разделить существующее приложение на два приложения. Будем надеяться, что это действительно работает!

0 голосов
/ 25 марта 2010

Heroku на самом деле перезаписывает файл database.yml, который вы отметили, вы можете проверить это с помощью команды "heroku shell" и набрав cat config/databse.yml

Они составляют кучу случайных вещей, которые используются для каждого приложения. Я не верю, что это может помешать им сделать это.

0 голосов
/ 12 марта 2010

Вы можете сделать это, если используете схемы с PostgreSQL.

...