Hey everyone, I've pushed [1] a slightly optimized version of the patch to the dm-core master branch. Basically, almost everything from my previous post still holds, but we've optimized the automigration extension lookup mechanism a bit, so that it's now only necessary to require 'dm-migrations' and then have DataMapper.setup figure out which automigration extensions to require, based on the adapter it's setting up.
So in order to get a DM app with auto_migrate! and auto_upgrade! working, all you need to do is the following: require 'dm-core' # optional require 'dm-migrations' DataMapper.setup(:default, 'mysql://localhost/dm_core_test') class Person include DataMapper::Resource property :id, Serial end DataMapper.auto_migrate! Forgetting to require 'dm-migrations' will lead to: undefined method `auto_migrate!' for DataMapper:Module Keep in mind that this is a breaking change if you're floating on master branch! The dm-rails [2] gem has been updated to take advantage of the new organization, so either generating a new app with dm-rails, or running bundle install inside your existing app should be all that's necessary for rails3 users. cheers snusnu [1] http://is.gd/bmldR [2] http://github.com/datamapper/dm-rails On Wed, Apr 7, 2010 at 20:59, Martin Gamsjaeger <[email protected]> wrote: > Hey everyone, > > If you've been watching DM activities on github [1] lately, you may > have already noticed that we extracted all the dm-more gems into their > own repositories, and that we've done the same for the various > dm-xxx-adapters, like dm-mysql-adapter, dm-posgres-adapter etc. While > the dm-more gems should already work exactly like before, the > dm-xxx-adapter gems have started to be usable only now. The following > adapters should be functional (they pass their own specs) already: > > * dm-do-adapter > * dm-sqlite-adapter > * dm-mysql-adapter > * dm-postgres-adapter > * dm-oracle-adapter (I haven't yet tested that because I don't have > an oracle install) > * dm-sqlserver-adapter (I haven't yet tested that because I don't > have a sqlsever install) > > However, do not yet go ahead and try to use them without any > additional measures! The last remaining piece of the puzzle hasn't yet > been merged into dm-core. This piece is about actually removing all > the migration and RDBMS adapter related code from dm-core. I've > actually done it in my fork [2] but it's still up for review, and I > invite everyone to do exactly that, review it! This change to dm-core > still supports running all of dm-core's specs against the various > adapters, using the same techniques as previously, so, to run specs > for, say, mysql, issue: > > ADAPTERS=mysql bundle exec rake spec > > Note that if you actually plan on testing this on your machine, you'd > need to change dm-core's github location in the Gemfiles of the > various dm-xxx-adapters to point to my fork instead of upstream > datamapper. This will obviously change soon, once the patch gets > merged upstream. > > So what does this mean for DM applications? There's one additional > thing you have to do once this work gets merged. You have to require > the appropriate dm-migrations adapter extension in order to have > auto_migrate! and auto_upgrade! functionality available. Of course, > the various webframework adapters like dm-rails [3] or merb_datamapper > [4] will do that for you. A typical setup would look something like > this: > > require 'dm-core' > > # not requiring the following will lead to: > # undefined method `auto_migrate!' for DataMapper:Module (NoMethodError) > require 'dm-migrations/adapters/dm-mysql-adapter' > > DataMapper::Logger.new($stdout, :debug) > DataMapper.setup(:default, 'mysql://localhost/dm_core_test') > > class Person > include DataMapper::Resource > property :id, Serial > end > > DataMapper.auto_migrate! > > So not too much will change, all you need to do is to additionally > depend on dm-migrations and require the proper adapter before calling > DataMapper.setup. > > This extraction has been planned for quite some time already, and it > helps to slim down dm-core even more which makes it easier to focus on > exactly the functionality it should provide. It will also make > handling of dependencies of the various adapters easier. Also, it > seems to make sense to provide the automigration functionality via the > dm-migrations gem only, and not by dm-core itself. Not all adapters > support the concept of automigration, thus it felt wrong to keep it in > dm-core. The current organization suggests that adapter authors who do > plan to support automigration with their adapters, send a pull request > to dm-migrations, to include their automigration adapter extension. > > We hope that having these adapters available in small and accessible > codebases, will increase the chances for potential contributors to > start digging in and make the adapters even more awesome. This was > also the main motivation behind extracting all of the dm-more gems > into their own repositories. We think that being able to fork a single > purpose, small repository, will lower the barrier to future > contribution for datamapper users, who until now maybe thought that > they don't want to fork dm-core or dm-more because they were "afraid" > to break stuff. > > The future of the dm-more repository itself hasn't yet been finally > decided, but we agreed that for the foreseeable future, we will keep > on providing the repository, but it will only link to the included > gems via git submodules. Most probably, not all of the currently > included gems will be linked though. We plan to cut that list down to > the gems that the data_mapper metagem [5] currently depends on, which > are the following: > > * dm-aggregates > * dm-constraints > * dm-migrations > * dm-transactions > * dm-serializer > * dm-timestamps > * dm-validations > * dm-types > > In the longterm, we haven't yet decided, if it's worth to keep the > dm-more repo around. Feel free to voice your opinions! > > So coming to a conclusion, this was (partly) only a warning about what > will happen soon. We thought we'd announce that change prior to > actually committing it, in order for you guys to be somewhat prepared. > You can expect the above mentioned changes to be committed within the > next day or two, and I will write a follow up to that post once the > patch was committed. > > So there's only one more thing left to say. If you want to keep up > with development of DM with it's new repository organization, it's > probably a good idea to follow datamapper on github [1]. Show your > support by following the project while keeping up to date with what's > happening. Since the number of relevant DM repositories went up from 2 > to somewhere above 30, it might be easiest to keep track by using > github's great following feature. > > cheers > snusnu > > [1] http://github.com/datamapper > [2] http://github.com/snusnu/dm-core/tree/adapter_and_migration_extraction > [3] http://github.com/datamapper/dm-rails > [4] http://github.com/merb/merb_datamapper > [5] http://github.com/datamapper/data_mapper > -- You received this message because you are subscribed to the Google Groups "DataMapper" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/datamapper?hl=en.
