The goal of this project is to provide a Ruby API that allows the construction of, and reflection on, all databases that are supported by the DataObjects project.
This project is in a very early development phase and not yet usable for anything practical.
Currently, the following API is mostly implemented. Parts that are still lacking are marked with a TODO comment.
uri = Addressable::URI.parse('mysql://localhost/dm_core_test') database = DataObjects::Schema.load(uri) # TODO Not yet implemented database.name # => "dm_core_test" database.uri # => uri database.tables # => Tables.new([ Table1, Table2, ... ]) database.tables.each do |table| # Table API table # => Table.new('customers', [ Column1, Column2, ... ]) table.name # => "customers" # Column API table.columns # => Columns.new([ Column1, Column2, ... ]) table.each do |column| column # => Column::String.new('name', :length => 0..10) column.name # => "name" column.required? # => true column.default # => "a" end # TODO Not yet implemented # ------------------------ # Column subclasses will be able to add extra accessors for type # specific data. For example Column::String may define #length, # and Column::Decimal may define #precision and #scale end
See the TODO list
Note on Patches/Pull Requests
Fork the project.
Make your feature addition or bug fix.
Add tests for it. This is important so I don't break it in a future version unintentionally.
The submitted patch must not lower any current metric thresholds.
To get at the current thresholds, run “bundle exec rake ci”
Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
Send me a pull request. Bonus points for topic branches.
Copyright © 2010 Dirkjan Bussink. See LICENSE for details.