I've been trying to come up with a good way to push new module and theme configurations to a live site that has constantly changing user generated content (nodes, user accounts, files...)
I think I discovered a relatively simple solution.
Clone the "Live" site to a "Dev" site. Share certain file and database resources (files directory, node table) between the two sites so user generated content is always in sync with the dev. Then after making changes to the dev site, to push the changes, all that is needed is to overwrite the non-shared data from the dev site to the live site.
The process would make use of Backup and Migrate with the addition of using an exclusion list for the "Shared Resources" so user generated content is unaffected by the process. It would also be extremely helpful to create a module to make the whole process as automatic as possible.
In a more detailed description, this is my concept:
1) Clone the Live site's database
2) Copy sites/domain.com/ to sites/dev.domain.com/ making a multisite
3) Share files directory
--a) Delete sites/dev.domain.com/files/
--b) Create a symlink from sites/dev.domain.com/files/ to sites/domain.com/files/ (first
4) Configure sites/dev.domain.com/settings.php to connect to cloned "dev database" as the default and "live database" as the secondary using multiple database connections configuration.
5) Share database tables by having a module on the dev site make database calls to the Live database for user generated content (nodes, user accounts...) and to the Dev database for all other Drupal data (module and theme configurations, blocks...).
This should allow plenty of time to change themes, create new functionality by adding new modules and so on, without the Live and Dev ever being out of sync. Then the developer just merges the database and sites folder with the live site to publish the changes.
Any thoughts?
Comments
Features?
You sound like you're trying to accomplish what the features module (with strongarm) is so very good at. Maybe you can explain what you're trying to do that Features doesn't do for you?
Features is still not
Features is still not extensive enough for many changes. Correct me if I'm wrong, but not every module supports exportables (therefore Features).
In addition, if you want to make new content that falls under the "User-Generated" category (nodes, images...), as part of the development work, you can't, as far as I know.
Lastly, Features is a bit too specific for some of the development work I do which makes it cumbersome at times.
Here are some changes I need to make to the site I manage is as follows:
1) Remove Service tab in DDBlock
2) Create Distributors block.
And...
1) Replace QuickTabs with static navigation so each tab is a unique page rather than a hidden div that switches with javascript.
I don't think the Features module is ideal for these types of changes. It can help me move the block to the live site, but DDBlock isn't supported. And I can't see how it can help me replace QuickTabs.