# What is Driver & what is Adapter?

**URL:** <https://www.ruby-forum.com/t/what-is-driver-what-is-adapter/150235>\
**Category:** Rails\
**Created:** [October 6, 2008, 12:52pm UTC](https://www.ruby-forum.com/t/what-is-driver-what-is-adapter/150235 "2008-10-06T12:52:24Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![mokkai](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/c2a13f/32.png) [@mokkai](https://www.ruby-forum.com/u/mokkai)\
**Post date:** [October 6, 2008, 12:52pm UTC](https://www.ruby-forum.com/t/what-is-driver-what-is-adapter/150235/1 "2008-10-06T12:52:24Z")

</div>

what is Driver & what is Adapter ?

---

<div class="post-metadata">

**Author:** ![mokkai](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/c2a13f/32.png) [@mokkai](https://www.ruby-forum.com/u/mokkai)\
**Post date:** [October 6, 2008, 2:29pm UTC](https://www.ruby-forum.com/t/what-is-driver-what-is-adapter/150235/2 "2008-10-06T14:29:56Z")

</div>

On 6 Oct 2008, at 11:52, Pokkai D. wrote:

> what is Driver & what is Adapter ?

Assuming you are talking about database drivers and rails’ connection  
adapters:

A driver is something that allows you to talk to the database. Drivers  
don’t however all have the same semantics. Similar things may have  
different names, the underlying database may be different in the way  
certain tasks are accomplished or how certain SQL statements are  
written. The connection adapters that are part of Rails smooth over  
these differences.

Fred

---

<div class="post-metadata">

**Author:** ![mokkai](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/c2a13f/32.png) [@mokkai](https://www.ruby-forum.com/u/mokkai)\
**Post date:** [October 6, 2008, 5:02pm UTC](https://www.ruby-forum.com/t/what-is-driver-what-is-adapter/150235/3 "2008-10-06T17:02:10Z")

</div>

Frederick C. wrote:

> On 6 Oct 2008, at 11:52, Pokkai D. wrote:
> 
> > what is Driver & what is Adapter ?
> 
> Assuming you are talking about database drivers and rails’ connection  
> adapters:

thats correct

> A driver is something that allows you to talk to the database. Drivers  
> don’t however all have the same semantics. Similar things may have  
> different names, the underlying database may be different in the way  
> certain tasks are accomplished or how certain SQL statements are  
> written.  
> so from ruby to every database , ruby needed a separate Driver .

> The connection adapters that are part of Rails smooth over  
> these differences.  
> what does mean ?  
> what is the main job to this Adapter  
> is it used to convert database return result(which is in string Object)  
> to Model Object ?

thanks

---

<div class="post-metadata">

**Author:** ![mokkai](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/c2a13f/32.png) [@mokkai](https://www.ruby-forum.com/u/mokkai)\
**Post date:** [October 6, 2008, 5:51pm UTC](https://www.ruby-forum.com/t/what-is-driver-what-is-adapter/150235/4 "2008-10-06T17:51:58Z")

</div>

On 6 Oct 2008, at 16:19, Srdjan P. wrote:

> I think that every adapter includes a driver. So a MySQL adapter for  
> Rails includes driver information or utilizes a pre-existing driver  
> for Ruby.

The Rails team do not develop any of the database drivers.

> The adapter then uses the raw data brought back from the  
> database through an SQL statement that’s been generated and makes an  
> ActiveRecord object specific to the query and populates that object  
> with the raw data.
> 
> Frederick, am I right in this?

Not quite. The adapters happen at a lower level. For example, I have a  
select query and I want to make it have this limit and that offset.  
That’s database dependant and is handled by the adapter. Quoting  
rules, mapping of ruby types onto database column types are also  
database dependant and are handled by the adaptor.  
The adapter also handles stuff like “given this select query, give me  
an array of hashes representing the result set”, or “do this insert  
and tell me what was the primary key that was generated” and things  
like that (building of the ActiveRecord objects in not part of the  
adapter code).  
If you really want a detailed answer, just crack open something like  
mysql\_adapter.rb and see what’s in there.

Fred

---

<div class="post-metadata">

**Author:** ![mokkai](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/c2a13f/32.png) [@mokkai](https://www.ruby-forum.com/u/mokkai)\
**Post date:** [October 6, 2008, 5:20pm UTC](https://www.ruby-forum.com/t/what-is-driver-what-is-adapter/150235/5 "2008-10-06T17:20:44Z")

</div>

I think that every adapter includes a driver. So a MySQL adapter for  
Rails includes driver information or utilizes a pre-existing driver  
for Ruby. The adapter then uses the raw data brought back from the  
database through an SQL statement that’s been generated and makes an  
ActiveRecord object specific to the query and populates that object  
with the raw data.

Frederick, am I right in this?

On Oct 6, 11:02 am, Pokkai D. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)
