The Ortus BlogBox

"Ortus: A rise, beginning, coming into being, born, the origin!"



Category Filtering: 'commandbox'


Let’s get cooking with CommandBox Recipes!

Luis Majano
Feb 13, 2015


One exciting feature about CommandBox is the ability to group commands together into a lovingly little file we call, a recipe.  We even gave it its own extension, .boxr.  This little gem will allow you to automate several commands from your native shell, it will be faster to use our recipe command that allows you to run several CommandBox commands at once. This will allow you to only load the CommandBox engine once for all those commands, but still be dumped back at your native prompt when done. Recipes can also just be useful for a series of commands you run on a regular basis, from test executions, to compressing files, the possibilities are endless.  

Below is a simple example of how to create a recipe and execute it.  For further insight, we recommend you read our chapter on recipes in our CommandBox book.

CommandBox 2

Artifacts Make A Difference

Nathaniel Francis
Feb 11, 2015


Let's keep that around

One of the neat "under the hood" features of CommandBox is artifacts. Artifacts are a copy of each package that gets downloaded with CommandBox. This is good for you and for the internet because once you have a package in your artifacts, you don't need to download it again. Artifacts are key to CommandBox efficiency.

We might need that again

The next time you download a package from ForgeBox, CommandBox reads the box.json file for that package's dependencies. Then, it checks to see if we already have a copy of those dependencies in the artifacts. If the dependency is in the artifacts, CommandBox just uses it. If not, then CommandBox calls to ForgeBox to get that dependency. That's efficiency.

CommandBox 0

CommandBox REPL

Curt Gratz
Feb 11, 2015


Ever want to try something quick in CFML? Show something off and get the feedback instantly? 

One of the things CommandBox can do for you is provide a REPL (Read-Evaluate-Print-Loop) console for immediate ColdFusion (CFML) interaction so you can do just that.

After CommandBox is installed, just run 

box repl
CommandBox 0

CommandBox - Comments are more helpful than you think

Gavin Pickin
Feb 10, 2015


Using a command line tool, like CommandBox, you look for those feature comforts, that can make or break the UI. With CommandBox, one of the big wins, is HELP. Most command line tools allow you to type help and get some general help, but CommandBox goes a step further, you can get Help the Global Level, Namespace Help, and even help at the Command Level.

CommandBox 0

CommandBox - Searching ForgeBox

Brad Wood
Feb 09, 2015


We have big plans for using CommandBox to install packages from all sorts of code endpoints-- local folders, Git/SVN URLs, private corporate repos, etc.  Version 1.0 of CommandBox focused on ForgeBox though, which is our CFML code depot.  It may have started out as a ColdBox/ContentBox-specific thing, but is now open to the entire community to put any project they want on.  I'm excited to already see entries like CFWheelsFW/1MXUnit, and MonkehTweets on there.  The more packages installable from CommandBox via ForgeBox, the more we all win.

Soon ForgeBox will get even more life of its own enhancing it with more functionality such as having multiple versions of the same package. We've already set up as the new domain for ForgeBox's HTML interface where you can search, sort, and filter the entries in your web browser.  We've also built a "forgebox" namespace into CommandBox that uses the REST API to let you interact with ForgeBox from your console.

CommandBox, ForgeBox 0

Hey, where'd my debugger go?

Curt Gratz
Feb 09, 2015


You may be wondering where all that amazing debugging information went in your ColdBox 4.0 application.  Have no fear.  You can still have your cake and eat it too.  We modularized it (sensing a theme in ColdBox 4.0 yet?) So, how do you get all that wonderful debugging info?

Easy! Using CommandBox, run the following command.

box install cbdebugger --saveDev

Notice the --saveDev we added to our command.  This is handy as it tells CommandBox that you only want this as a dependency for your application in development.  

Once the debugger module is installed, you can control the settings via the debugger structure in your main Coldbox config file.  

Also, if you need access to the debugger service or the timer, they are available via the following WireBox mappings.

  • debuggerService@cbdebugger
  • timer@cbdebugger

Just call getInstance() on either to snag them as needed.

Debug to your heart's content.

ColdBox MVC, CommandBox, Modules, Tutorials, WireBox 2

CommandBox v1.0.0 Released!

Luis Majano
Feb 04, 2015


After almost a year in development, we are so excited to finally announce the release of CommandBox 1.0.0 Final.  This has been definitely one of the most challenging and fun projects we have overtaken here at Ortus.  We had a vision of how we could accelerate not only development, tools and ultimately the ColdFusion (CFML) landscape by building a tool that could put us up to par with many other technologies.  I am glad to say we have now a great foundation to move forward.  CommandBox brings CFML to any Operating System and even embedded systems like the Raspberry and Banana Pi.  It also gives ColdFusion (CFML) developers a much better workflow to work with their projects and a sense of community we lovingly call ForgeBox.  

With anything we do here at Ortus, it is fully documented using our new book formats.  So head on over to to download or read the entire CommandBox documentation.  In the next coming weeks we will begin our CommandBox 5 week roadshow that will include weekly blogging tutorials and video presentations, so stay tuned as each week progresses.  So without further ado, I present to you project Gideon: CommandBox CLI!

ColdBox MVC, ColdFusion, CommandBox, Community, Into The Box, News, Releases 0

ColdBox 4 Has Landed!

Luis Majano
Jan 22, 2015


Ortus Solutions is proud to announce the general availability of ColdBox 4.0.0, WireBox 2.0.0, CacheBox 2.0.0 and LogBox 2.0.0.  This has been over 1 year of hard work from the engineering team to bring you some great updates to our complete web development framework line.

ColdBox has become one of the most widely used MVC frameworks and we take it to another level in this release by completely modularizing the core even further and decoupling all major functionality into Core Modules that can be assembled by CommandBox for you, our very own CFML CLI and Package Manager.  This means that the source has been reduced by over 80% which leaves core MVC as the only thing delivered with ColdBox now.  Everything else is optional and brought on-demand via CommandBox.  There are over 50 issues and features in this release and you can find out much more about it in our brand new ColdBox Manual book and engineering blog.

ColdBox Manual

That's right!  The entire documentation for the ColdBox Platform will be now delivered in book format and anybody can contribute as the documentation is now hosted in GitHub.  Users can also subscribe to documentation changes, download for iOS, Android, Kindle, PDF and much more.  We have been hearing everybody about how to improve our documentation and this is our first big step in making it easier for folks to find what they need.


ColdBox MVC, ColdFusion, CommandBox, Releases 0

TestBox BDD v2.1.0 and MockBox Released!

Luis Majano
Nov 14, 2014


We are so excited to bring you TestBox 2.1.0 and MockBox 3.1.0!  These releases are minor releases of our libraries and include not only great features but a slew of fixes.  You can read all about the exciting features in our What's New Guide!  They have also been integrated with CommandBox, our new ColdFusion CLI and package manager, to allow you to download, install and even execute tests in the command line.  We have also made available our integration server builds which can also be installed via our CLI.

You can now do this to install TestBox or MockBox.

// install testbox
box install testbox

// install testbox bleeding edge
box install testbox-be

// install mockbox
box install mockbox

// Execute tests
box testbox run runner="runner path"

// Generate a bdd spec
box testbox create bdd MySpec


Release Notes

Bugs Fixed

  • [TESTBOX-96] - isEqual on Query fails when queries are equal
  • [TESTBOX-97] - equalize fails on struct/objects/arrays when null values exist within them
  • [TESTBOX-98] - Floating Point Number isEqual Fails
  • [TESTBOX-100] - Specs with the same name cause thread name exceptions when using async
  • [TESTBOX-101] - Download file has "samples" instead of "tests" directory
  • [TESTBOX-102] - tobe() cannot handle sparse arrays on Adobe CF
  • [TESTBOX-103] - xUnit compatibility CF9 broken due to isClosure() being utilized
  • [TESTBOX-105] - skip closures get more metadata arguments when being executed.
  • [TESTBOX-115] - testbox errors when using complete null support in railo


  • [TESTBOX-40] - Have debug() include information about where it came from
  • [TESTBOX-95] - remove extra whitespace in text reporter
  • [TESTBOX-110] - Remove CF7,8 incompatibilities
  • [TESTBOX-118] - ColdFusion 11 cfinclude compatibilities

New Feature

  • [TESTBOX-106] - BDD run() method now receive the TestResults argument for usage in their definitions.
  • [TESTBOX-107] - BDD runner and specs receive reference to the TestBox calling class via the run() method
  • [TESTBOX-108] - Update the apidocs with our new DocBox skin
  • [TESTBOX-109] - Debug labels and telemetry additions
  • [TESTBOX-112] - Add "top" attribute to debug method
  • [TESTBOX-114] - HTMLRunner add big request timeout setting to avoid server cut offs
  • [TESTBOX-116] - have expectations assertions return the expectation to allow chaining
  • [TESTBOX-117] - Simple reporter includes now a test bundle filter
  • [TESTBOX-119] - New lifecycle method: aroundEach() so you can do a full AOP advice on any spec




ColdBox MVC, CommandBox, News, Releases, TestBox, TestBox 0

New Compatibility Module released to help get you on ColdBox 4.0

Brad Wood
Nov 13, 2014


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.


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.

ColdBox MVC, CommandBox, Modules, Releases 0