AR::ConnectionAdapters の下の概要

今年の RubyKaigi 2016 の前日の京都での会合や、最近 oracle-enhanced で得た知見を含めて新卒氏に話していた。

f:id:koic:20161228182442j:plain:w300

書きなぐりのホワイトボードなので、何を話していたかこれだけではよく分からないと思うので補足。

  • AR でふだん使う API まわりは RDBMS への操作を抽象化したもので、特定の RDBMS に依存した部分はそれぞれの Adapter として切り出されている
  • AR::ConnectionAdapters の下には、MySQL / PostgreSQL / SQLite / Oracle / SQL Server ... といった実際の RDBMS への操作に依存した七つの海 (メタファー) がある
  • 例えば Oracle のアダプターだと oracle-enhanced があるが、そこから先も MRI の場合は ruby-oci8 というドライバーを使い、JRuby の場合は JDBC Driver を使うといった世界がある

config/database.yml の adapter に指定しているものとその実体とは何かといった既存の知識との繋りができたようで話してよかった。