Thank you guys for coming to our first webinar! Wow! I did not expect that there will be more than 80 participants! Thank you for your interest and support.
We will make more overview webinars further on. But if you want to dive deeper you can sign up for our online course!
The first 3 subscribers will get 50% off the price!!

Fill free to post any issues with VSCode-ObjectScript you faced here

Possible reasons

  • Another recommendation is to separate code and data. So, I need at least two databases, code which is always in a container, and data mounted outside.
  • Just to be consistent, some project, and namespace with the same name as the project. With only own configuration. Without anything predefined. In most cases, namespace and any related configuration, supposed to be configured for the particular project. And keeping USER as is and do not touch except for some temporary staff, like import Installer manifest and setup it.
  • One of the reasons for USER still exists, that it is kind of entrypoint, and keep it as is, will keep from anything unexpected.

Just my thoughts

Any IRIS edition includes formerly known as Ensemble feature, which is now is Interoperability (and one of the letters in IRIS).

You may get this error if you work in the namespace where Ensemble was activated. By default for USER was not activated.

When you create a new namespace Ensemble checkbox checked by default and, but you can uncheck it.

to enable namespace manually, do this command

do ##class(%EnsembleMgr).EnableNamespace("YOUR-NAMESPACE")

$listvalid

%SYS>w $listvalid($lb("test"))
1
%SYS>w $listvalid("test")     
0
%SYS>w $listvalid("")    
1

$listbuild is not an object, so, it's not a check as an instance of, it is only possible that variable is valid as $listbuild

$listbuild as just a string with a special format, so, that's why this will also return true

%SYS>w $listvalid($char(1))   
1
%SYS>write $lb()=$c(1)
1

because

%SYS>zzdump $lb()  

0000: 01                                                      .

So, to get own docker-running Cache, is quite easy.

You just need docker desktop installed on your mac. Then when it installed, and running. You'll be able to run it from the terminal by command.

docker run -d --name cache \
  -p 1973:1972 \
  -p 57773:57772 \
  -v $HOME/cache.key:/usr/cachesys/mgr/cache.key \
  daimor/intersystems-cache:2018.1

It supposed that you have valid cache.key in your home directory. And that your ports 1973 and 57773 is free to use. If you would like to change the port just change 1973 and 57773 with any you'd like to use.

This command will download the image (daimor/intersystems-cache:2018.1) from the public repository, and run it in the background.

You can control the running container by commands, wherein all subsequent commands cache is the name of the container from the docker run command.

To see cconsole.log of the container.

docker logs cache

To look at the status of the container

docker ps cache

Stop running container

docker stop cache

This is just an empty instance, to look at how it works. In the real case scenario, some more work should be done.

Docker images for Cache or for Ensemble are provided by me, and it is available for different versions.

Nowadays is best to migrate to IRIS, and use official images provided by InterSystems itself.

And the next step for you would be to use an editor that can be run on macOS, instead of Studio which working only on Windows.  

And you can use VSCode editor with an extension VSCode-ObjectScript, developed by me. 

I would recommend reading here articles tagged by Docker. There much more information about how to best use it. 

As well as about using VSCode.

You can contact me directly, if you need any help with establishing development process, with such modern tools as Docker and VSCode. or migrating to IRIS.

there are some possible issues to have docker related files in a dedicated folder. 

When you would like to start an environment with docker-compose, you can do it with a command like this.

docker-compose up -d

but it will work only if the docker-compose.yml file name has not changed and it lays right in the current folder.

if you change its location or name, you will have to specify the new place

docker-compose -f ./docker/docker-compose.yml up -d

became not so simple, right?

Ok, next about Dockerfile.

when you build docker image, you have to specify context. So, the command below, just uses file Dockerfile in the current folder, and uses current folder as a context for build.

docker build .

To build docker image with Dockerfile placed somewhere else, you should specify it, suppose you still would like to have current folder as context.

docker build -f ./docker/Dockerfile .

any other files in the root, such as Installer.cls, irissession.sh or any other files which should be used during docker build have to be available from specified context folder. And you can't specify more than one context. So, any of those files should have some parent folder at least, and why not the root of a project.

with docker-compose.yml, we forget about docker build command, but we still have to care about docker-compose