ColdBox 4.0 is now in Release Candidate and we're tightening down all the screws for the big release. As 4.0 is a major release of the platform, we've taken the opportunity to really clean up the code, making changes and improvements where necessary. This includes the exodus of 75% of ColdBox's core code into pluggable modules so you can truly pick and choose what parts of the framework you want. Some methods such as getPlugin() and getColdBoxOCM() were also removed. This has naturally modified the framework's API a bit and your 3.x ColdBox app might not run without some tweaking.
We have a What's New doc as well as a Compatibility Guide for ColdBox 4.0 where we have tried to document any changes necessary to get your codebase switched over. However, we realize that some of this may take time for you to refactor if you have a larger codebase and we don't want it to keep you from looking at ColdBox 4.0
That's why I've created a compatibility module for ColdBox 3.x code bases to help them run on the new 4.0 version of the ColdBox platform. We feel this is a much better solution than littering the core codebase with additional settings and feature flags. ColdBox is the only framework with a first-class modular architecture. Mix that with the incredible extensibility options, and this module has be ability to alter just about anything it wants.
Only install it if you need it, and remove it once you're finished refactoring your code to the 4.0 standards. This isn't meant to be a permanent install-- it's just a stepping stone to help you get your codebase up and running until you have time to finish refactoring. Do feel free to use it in production, though it comes with no warranties or guarantees. Here's a list of the modifications this module will make to ColdBox 4.x to make it work like the 3.x versions.
Functions and behaviors restored
- Original getModuleSettings() behavior
- getPlugin() function
- getMyPlugin() function
- getColdBoxOCM() function
- UDFLibraryFile setting
- "model" convention for WireBox scan locations
- coldbox.system.plugin base class
The following WireBox mapping DSL namespaces are restored
- ocm
- ocm:{keyName}
- coldbox:plugin:{pluginName}
- coldbox:myplugin:{pluginName}
- coldbox:myplugin:{pluginName@moduleName}
- coldbox:fwconfigbean
- coldbox:configbean
- coldbox:cacheManager
- coldbox:mailsettingsbean (requires mailservices module)
- coldbox:debuggerService (requires cbdebugger module)
- coldbox:validationManager (requires validation module)
This module also comes packaged with all the original ColdBox 3.8.1 plugins, so you only need to install this module and you'll have it all back again. If you need any of the functionality that was refactored into modules such as ORM, validation, or i18n, just install those modules.
Known issues:
- When this module loads, it will copy Plugin.cfc to the coldbox/system directory. If you uninstall this module, it will not remove that file.
- Plugins only work for the default convention location of "plugins".
- You will still need to change the Application.cfc to use coldbox.system.Bootstrap instead of coldbox.system.ColdBox. There's really no way around that one.
Installation
The preferred way to install this module is via CommandBox because using a package manager is just so fast and easy. If you don't have Command Box, grab it real quick from here. Then CD to your site's web root and run the following:
CommandBox> install cbcompat
If you want to do an old-fashioned installation, just click the download link from ForgeBox, and uncompress the contents of the zip file into your app's modules directory.
If you have questions or suggestions, hit me up on the ColdBox list, or feel free to submit a pull request.
Add Your Comment