Oracle Instant Client с гемом ruby-oci8 не может соединиться с БД в rails c - PullRequest
0 голосов
/ 18 января 2019

Я использую мгновенный клиент Oracle в своем проекте и использую гем ruby-oci8. Я использую Mac Mojave OS

Я могу запустить rails server, и сервер действительно соединяется с базой данных, но когда я запускаю rails c и пытаюсь соединиться с любой таблицей, он выдает следующую ошибку.

    Running via Spring preloader in process 95609
    Loading development environment (Rails 5.1.1)
    User.last
objc[96849]: +[__NSPlaceholderDictionary initialize] may have been in progress in another thread when fork() was called.
objc[96849]: +[__NSPlaceholderDictionary initialize] may have been in progress in another thread when fork() was called. We cannot safely call it or ignore it in the fork() child process. Crashing instead. Set a breakpoint on objc_initializeAfterForkError to debug.
/Users/arvindmehra/.rvm/gems/ruby-2.4.0/gems/ruby-oci8-2.2.5/lib/oci8/oci8.rb:142: [BUG] Illegal instruction at 0x007fff6efbf2e5
ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-darwin18]

Я не могу подключиться к БД через консоль rails, странно то, что сервер rails работает и приложение может подключаться к БД.

1 Ответ

0 голосов
/ 24 января 2019

Я наконец смог решить ее, обновив версию ruby ​​до 2.4.4 и добавив export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES.Я предполагаю, что проблема с Комбинацией OSX Mojave и ruby-2.4.0, и это фактически работает для OSX High Sierra

...