Support for CFML templates, tooling, and runners


#1

I’ve had a C9 account for some time, but only poked at it so let’s assume for now I barely know what I’m talking about :slight_smile: I had a person ask me today about getting better CFML support for Cloud9 which has led me here to see what would need to happen for that to get put in place.

CFML is a dynamic, loosely typed JVM language and the easiest engine to set up would be Lucee Server which is FOSS. ColdFusion (CFML) is listed as a supported language, though the support is pretty poor ( http://www.codersrevolution.com/blog/proper-cfml-support-for-the-cloud9-editor ). What I’d like to see however is the ability to:

  • Choose a CFML template for a new project with the server already installed and ready to go.
  • Have CLI tooling (CommandBox) available. This is an npm clone, a REPL, grunt-style generators, and an embedded server all rolled in one
  • Be able to run CF code by starting up a server in the web root

Since CF engines run in any J2EE servlet container, there’s a few million ways you could install them. The most common (provided by the official installers) is on Tomcat, though CommandBox has a nice embedded server that spins up quickly with a “server start” command on Undertow.

Here’s an overview of the CLI tools:
http://commandbox.ortusbooks.com/content/getting_started_guide.html

And here’s an overview of scaffolding out an MVC app in CFML:
http://coldbox.ortusbooks.com/content/getting_started_guide/index.html

So where would we start? What would need to happen to get CFML the same kind of goodness that PHP or ROR have right now? Heck, it would even be cool to have templates for ColdBox MVC or ContentBox CMS, but let’s stay simple and just see about getting CFML better support for now. Thanks in advance for the feedback!


#2

It should be easy enough to build a C9 Template based on the Lucee Dockerfiles.

I’m not sure I entirely understand the premise of the cloud9/workspace base image. It’s a kind of kitchen sink with every possible package installed, and the template simply copies supporting files into the workspace. I had imagined there would be a very lean cloud9/workspace base image with only the tooling needed for the project type.

I’ll see if i can put together a Dockerfile FROM cloud9/workspace that upgrades to Java 8, installs Tomcat and Lucee. This may not be the right direction, given the current base image is more like a VM than a container.


#3

That sounds great. Make a PR when you’re done and I’ll review and merge it.


#4

Justin, is there any documentation or guidelines on how to create a runner that’ integrated into the IDE like PHP or Node have? Is that part of the Docker image, or an IDE plugin? Also, one of the questions I had asked on Twitter is what is Cloud9’s position on making images, runners, etc available/installed by default?


#5

@justin8 Did you see my question above related to documentation or just clarification?


#6

Sorry for not responding sooner. I’m not certain myself, but I tried to get the right people on it to gibe you the right info, but being Christmas time a lot of people are away. I’ll have to follow up on it in the new year. Sorry about that.

Merry Christmas!


#7

@justin8 I understand. I look forward to hearing more after the holidays.


#8

Hey @justin8, do you have any more information yet on documentation for creating integrated runners for CFML in C9. I’ve had some CF community members asking me about this so there is some interest out there.


#9

Sorry about that. Must have lost this one in the christmas bustle. I believe this is the documentation you’re after: https://cloud9-sdk.readme.io/v0.1/docs/runners


#10

Thanks @justin8 I’ll give that a look.


#11

Hey @modius, curious if you’ve had a chance to mess with this at all. Someone on CFML Slack was asking me.


#12

Had a look but couldn’t work on it during the holidays – my internet wasn’t big enough to cope with 5GB images. I’m not sure its an ideal approach to containerised development. Essentially Cloud9 are using containers like virtual machines, and the default image has literally everything (including the proverbial kitchen sink).

It would not take much at all to have a simple Docker image that extends the Cloud9 base and adds say the latest command box. That might be more versatile in the Cloud9 set up for folks running multiple projects than the current Lucee Docker approach which is designed for separate images for each project.

Do you have a shell script or something for unattended install of the latest CommandBox? I can convert that into a Dockerfile readily enough and extend the existing Cloud9 set up.


#13

Assuming this is Ubuntu-based, will this work from here: https://ortus.gitbooks.io/commandbox-documentation/content/setup/installation.html

gpg --keyserver keys.gnupg.net --recv-key 6DA70622
gpg -a --export 6DA70622 | sudo apt-key add -
echo "deb http://downloads.ortussolutions.com/debs/noarch /" | sudo tee -a /etc/apt/sources.list.d/commandbox.list
sudo apt-get update && sudo apt-get install commandbox

#14

@modius I’m working on some large changes to separate out the functions of various workspaces so it won’t be a kitchen sink. See https://github.com/c9/templates/pull/21