Использование tnsnames.ora в database.yml
-
13-10-2019 - |
Вопрос
Как я могу использовать информацию об подключении к базе данных в tnsnames.ora при подключении с рельсами?
Я попытался установить database:
или host:
Поля в базе данных.
Я подтвердил, что SQLPLUS может подключаться к базе данных, поэтому TNSNAMES.ORA верен.
Я использую DataMapper на Rails 3, если это вообще помогает.
Решение
Я думаю, что мы говорили в #Datamapper пару дней назад. SQLPLUS - это кусок программного обеспечения Oracle, который взаимодействует с тем, что я предполагаю, является их системой нагрузки.
DataMapper предполагает, что между репозиторием и хранилищем данных существует отображение от 1 до 1. Как правило, это означает, что вы предполагаете, что балансировка нагрузки обрабатывается стороной данных (скажем, кластеризация MySQL или Postgres).
Тем не менее, нет ничего, что не мешает кому -то написать библиотеку, которая позволила бы DataMapper Hot Swap между группой репозиториев, если бы можно было считать нагрузку на каждый из данных, связанных с каждым хранилищем (то есть напишите свою маленькую нагрузку баланс маршрутизатора).
Компания, в которой я работаю, использует репозитории DataMapper именно в этой моде (для отдельной записи, а не для балансировки нагрузки).
Это так же просто, как:
DataMapper.repository(seed_repository_symbol) { return your_code_block.call }
Другие советы
После нескольких часов суеты с этим сам я обнаружил ответ:
# WORKS
development:
adapter: oracle
host: devdb
username: user
password: pwd
Я использую Rails 3.2.1, DM 1.2.0 на Win7 с 32-битными и 64-битными регулярными клиентами Oracle.
Одна очень важная вещь, которую я обнаружил по пути: Вы должны перезапустить сервер Devs Dever между каждым модом базы данных. Я потратил много времени, не зная этого. По какой -то причине настройка DataMapper не поднимала изменения здесь, как нормально с Dev Server.
История:
Мне сказали, что ответ был (другой разработчик в другой компании, которая использует Jruby в Windows):
# DID NOT WORK
development:
adapter: oracle
database: user/pwd@devdb
Это не сработало для меня, и я подозревал, что ответ был в использовании толстой кишки (на основе DataMapper.setup
синтаксис):
# DID NOT WORK
development:
adapter: oracle
database: user:pwd@devdb
Это тоже не сработало, поэтому я проверил ручные связи в IRM и изучил ответ из DataMapper.setup
. Анкет Он ставит сид в host
и не указывает database
Поэтому я попробовал то же самое в Database.yml. Это сработало.