A
Assaph Mehr
=3D About Ackbar
Ackbar is an adapter for ActiveRecord (the Rails ORM layer) to the KirbyBas=
e
pure-ruby plain-text DBMS. Because KirbyBase does not support SQL, joins or
transactions, this is not a 100% fit. There are some changes to the ActiveR=
ecord
interface (see below), but it may still be useful in some cases.
=3D URIs
Ackbar: http://ackbar.rubyforge.org
KirbyBase: http://www.netpromi.com/kirbybase_ruby.html
Rails: http://www.rubyonrails.com
Pimki: http://pimki.rubyforge.org
=3D Goals
Ackbar's project goals, in order of importance, are:
1. Support Pimki with a pure-ruby, cross-platform hassle-less install DBMS
2. An exercise for me to learn ActiveRecord inside out
3. Support other "shrink-wrapped" Rails projects with similar needs
As can be seen, the main reason I need Ackbar is so I distribute Pimki acro=
ss
multiple platforms without requiring non-Ruby 3rd party libraries.
KirbyBase will
work wherever Ruby works, and so will Pimki. That alleviates the need
to repackage
other bits, end users will not have to install extra software, I have
full control
on the storage, the storage is in plain text. Just what I need to "shrink w=
rap"
a Rails project for end-user distribution.
=3D What's Covered
Ackbar currently passes through a small bootstrap test suite, and through a=
bout
80% of the ActiveRecord test suite. I will never pass 100% of the tests bec=
ause
KirbyBase does not support all required functionality.
Ackbar includes a SQL fragment translator, so that simple cross-database co=
de
should be maintainable. For example the following will work as expected,
Book.find :all, :conditions =3D> "name =3D 'Pickaxe'"
Book.find :all, :conditions =3D> ["name =3D ?", 'Pickaxe']
Additionally, you can also provide blocks:
Book.find :all, :conditions =3D> lambda{|rec| rec.name =3D=3D 'Pickaxe'}
or even:
Book.findall) {|rec| rec.name =3D=3D 'Pickaxe'}
Most of these changes are around the #find method, bit some apply to #updat=
e and
associations. Basic SQL translation should work the same, but you can alway=
s
provide custom code to be used. See the CHANGELOG and the tests for example=
s.
=3D What's Not Covered
* Transactions
* Joins, and therefore Eager Associations
* Mixins
* Other plugins
On the todo list is support for mixins. It might even be possible to
rig something
to simulate joins and eager associations, but that is for a later
stage. Transactions
will obviously only be supported once they are supported by KirbyBase.
Additionally, there are numerous little changes to the standard behaviour. =
See
the CHANGELOG and the tests for more details. These may cause little
heart attacks
if you expect a standard SQL database.
It is also worth noting that other plugins that write SQL will not
work. You will
need to get a copy of them to your /vendors dir and modify the relevant par=
ts.
=3D Installation
Simply:
gem install ackbar
or download the zip file from http://rubyforge.org/projects/ackbar and
just stick
kirbybase_adapter.rb in the Rails lib dir.
You will then need to add
require 'kirbybase_adapter'
in the config/environment.rb file of your project.
If you plan on multi-database development / deployment, you must
require the adapter
only if necessary:
require 'kirbybase_adapter' if
ActiveRecord::Base.configurations[RAILS_ENV]['adapter'] =3D=3D 'kirbybase'
This is because Ackbar overrides certain methods in ActiveRecord::Base
and others.
These methods translate the standard SQL generation to method calls on
KirbyBase,
and obviously should not be overridden for regular DBs.
Please do not hesitate to contact me for questions, comments, whacks
on the head with a clue stick
Cheers,
Assaph
Ackbar is an adapter for ActiveRecord (the Rails ORM layer) to the KirbyBas=
e
pure-ruby plain-text DBMS. Because KirbyBase does not support SQL, joins or
transactions, this is not a 100% fit. There are some changes to the ActiveR=
ecord
interface (see below), but it may still be useful in some cases.
=3D URIs
Ackbar: http://ackbar.rubyforge.org
KirbyBase: http://www.netpromi.com/kirbybase_ruby.html
Rails: http://www.rubyonrails.com
Pimki: http://pimki.rubyforge.org
=3D Goals
Ackbar's project goals, in order of importance, are:
1. Support Pimki with a pure-ruby, cross-platform hassle-less install DBMS
2. An exercise for me to learn ActiveRecord inside out
3. Support other "shrink-wrapped" Rails projects with similar needs
As can be seen, the main reason I need Ackbar is so I distribute Pimki acro=
ss
multiple platforms without requiring non-Ruby 3rd party libraries.
KirbyBase will
work wherever Ruby works, and so will Pimki. That alleviates the need
to repackage
other bits, end users will not have to install extra software, I have
full control
on the storage, the storage is in plain text. Just what I need to "shrink w=
rap"
a Rails project for end-user distribution.
=3D What's Covered
Ackbar currently passes through a small bootstrap test suite, and through a=
bout
80% of the ActiveRecord test suite. I will never pass 100% of the tests bec=
ause
KirbyBase does not support all required functionality.
Ackbar includes a SQL fragment translator, so that simple cross-database co=
de
should be maintainable. For example the following will work as expected,
Book.find :all, :conditions =3D> "name =3D 'Pickaxe'"
Book.find :all, :conditions =3D> ["name =3D ?", 'Pickaxe']
Additionally, you can also provide blocks:
Book.find :all, :conditions =3D> lambda{|rec| rec.name =3D=3D 'Pickaxe'}
or even:
Book.findall) {|rec| rec.name =3D=3D 'Pickaxe'}
Most of these changes are around the #find method, bit some apply to #updat=
e and
associations. Basic SQL translation should work the same, but you can alway=
s
provide custom code to be used. See the CHANGELOG and the tests for example=
s.
=3D What's Not Covered
* Transactions
* Joins, and therefore Eager Associations
* Mixins
* Other plugins
On the todo list is support for mixins. It might even be possible to
rig something
to simulate joins and eager associations, but that is for a later
stage. Transactions
will obviously only be supported once they are supported by KirbyBase.
Additionally, there are numerous little changes to the standard behaviour. =
See
the CHANGELOG and the tests for more details. These may cause little
heart attacks
if you expect a standard SQL database.
It is also worth noting that other plugins that write SQL will not
work. You will
need to get a copy of them to your /vendors dir and modify the relevant par=
ts.
=3D Installation
Simply:
gem install ackbar
or download the zip file from http://rubyforge.org/projects/ackbar and
just stick
kirbybase_adapter.rb in the Rails lib dir.
You will then need to add
require 'kirbybase_adapter'
in the config/environment.rb file of your project.
If you plan on multi-database development / deployment, you must
require the adapter
only if necessary:
require 'kirbybase_adapter' if
ActiveRecord::Base.configurations[RAILS_ENV]['adapter'] =3D=3D 'kirbybase'
This is because Ackbar overrides certain methods in ActiveRecord::Base
and others.
These methods translate the standard SQL generation to method calls on
KirbyBase,
and obviously should not be overridden for regular DBs.
Please do not hesitate to contact me for questions, comments, whacks
on the head with a clue stick
Cheers,
Assaph