During my deploy process, I need to create a symbolic link to the correct version of a configuration file, which depends on the environment. While I expected that to be trivial, I could not find anywhere how to get the current path.
I need to operate on the release directory before the current symbolic link is switched to it. release_path yields the path to the current directory, rather than something like releases/20170131090326/.
namespace :deploy do
desc 'Link daemon configuration file'
task :link_daemon_config do
on roles(:batch) do
execute "ln -s #{release_path}/app/config/daemon_prod.config #{release_path}/app/config/daemon.config"
end
end
after :updated, :link_daemon_config
end
I do have ideas for a workaround; the question is just about how could I refer to the current directory and where can I find information like this in the future.
Thank you
I managed to solve this in a similar use-case. Make sure keep-releases is set to a number higher than 2. e.g set :keep_releases, 3
Try this:
namespace :deploy do
desc 'Link daemon configuration file'
task :link_daemon_config do
on roles(:batch) do
last_release = capture(:ls, "-xt", releases_path).split[1]
last_release_path = releases_path.join(last_release)
execute "ln -s #{last_release_path}/app/config/daemon_prod.config #{release_path}/app/config/daemon.config"
end
end
after :updated, :link_daemon_config
end
Useful links: https://github.com/capistrano/capistrano/blob/master/lib/capistrano/tasks/deploy.rake#L184
Similar topic: https://stackoverflow.com/a/26267220/15500541
Related
I am starting to learn Kafka. I managed to run zookeeper and kafka successfully. I am using Windows10 and my kafka version is 2_12-2.5.0.
My question is that when I try to create a topic from cmd using the below command:
kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic firstTopic`
I get the error:
The syntax of the command is incorrect.
I know that the command I wrote is correct and the issue is the command inside the .bat file as I changed the command inside the kafka-topics.bat, the error changes. However I could not manage to run it. This is the content of kafka-topics.bat:
"%~dp0kafka-run-class.bat" kafka.admin.TopicCommand %*
I also tried to run kafka-topics.sh file instead of batch, but that gives a different error opening git bash, that is:
Error:Could not find or load main class kafka.admin.topicCommand
I also got rid of the space in "Program Files" while writing the path, so I don't think that is the reason of this error.
I got stuck and its hard to understand these errors as I am new.
Can you please help?
in my case it worked only when I moved Kafka folder to C: partition without any space in path
for example C:\Kafka_sources
and I used the below command to create a topic
kafka-topics.bat --create --topic test --zookeeper localhost:2181 --partitions 1 --replication-factor 1
in my case:
i removed the quotation marks in .properties for directories
use forward slashes in .properties for directories
i removed the dot-version numbers in directory path (don't know if that was deciding)
but start with point and backlashes .\bin\windows\kafka-server-start.bat .\config\server.properties)
d:\ is possible !
I'm working in Jupyter Notebook. I've installed music21, musescore, set the xml path as below:
us = environment.UserSettings()
us['musicxmlPath'] ='Applications/musescore.app'
I've also run config, and see that musescore is being detected by music21. However, when I use the show method, I get the following error:
SubConverterFileIOException: png file of xml not found. Or file >999 pages?
Any help is appreciated. Thanks!
An .app file is a directory. Inside the MuseScore.app directory is a bin directory and a file called mscore -- that's the actual name in the path. It'd be much easier to run python -m music21.configure and let the automatic configuration program take care of it.
Are you sure that file is exist?
try changing 'Applications/musescore.app' to '/Applications/musescore.app'
Hope that helps
I found a answer from here wrote by GaetanBaert,It works well and now I can use show method.
He said that "you should change os.system(musescoreRun) line 891 of subconverters.py by subprocess.run(musescoreRun). You need also to import subprocess at the start of subconverters.py."
I am new here.
Could anyone help me, on how to use yarpgen to generate a random c program.
I tried running the run_gen.py script that I saw in the yarpgen readme.
But, I got a warning and an error like this:
Warning: please set YARPGEN_HOME envirnoment variable to point to test generator path, using C:\Users\..\Python\Python36-32\yarpgen-master for now
and
File C:\Users\..\Python\Python36-32\yarpgen-master\yarpgen wasn't found
Any help would be much appreciated.
Thanks in advance !
The warning very likely points to the source of the problem, run_gen does not know where the other parts of yarpgen are installed.
First, note down the directory you installed/copied yarpgen to.
Then open a command shell. Type this:
cd <where run_gen.py is>
set YARPGEN_HOME=<the path you just noted down>
run_gen.py
If this works, you can write a batch script, that contains the set YARPGEN_HOME=... line and then calls run_gen.py. If the directory where run_gen.py is located is not on your PATH environment variable, call run_gen.py with the full absolute path in the batch script:
set YARPGEN_HOME=<the path to yarpgen>
python3 <absolute_path_to>\run_gen.py
Then you can call your batch script.
You may have to adjust the python3 command depending on the executable Python 3 installed on your machine (it may be just python on Windows).
When I tried this after building with cygwin, I noticed that I had to rename yarpgen.exe to yarpgen to make it work.
SHORT: How do I explicitly set the current working directory?
LONG: So I have 52 programs daisy chained together. I have a shell script pipeline that works great. Only problem is I can only run it if I cd into the directory with the files and run it. Some of the sub-programs do not have a mechanism that allows me to explicitly set output directories. They dump everything into the current working directory. This is fine if you are running 1 instance of this pipeline, but not so great if you are trying to process a dozen data-sets one after another. I know I can get the current working directory with:
echo $PWD
But how do I set it?
You can set the current dirctory for individual programs in your pipeline without affecting the other program in your pipeline like this:
PWD=path1 command1 && PWD=path2 command2
In general, you can set any environment variable using that syntax. Here is a real example I tried in bash:
$ PWD=/home ./test.rb && PWD=/ ./test.rb
Running in /home
Running in /
Because ClearCase updates directory version numbers when files inside are created, our config-spec generating script is failing (details omitted).
So, as an example, given a file such as "/proj/src/scripts/build.sh##/main/branch42/3", how can we determine the latest version of the scripts directory that contains that version of the build.sh file.
Note: we're looking for a unix command-line solution that can be scripted.
If you do a ls /proj/src/scripts##/main/branch42/*/build.sh/main/branch42/3 you should get a list of all versions of the scripts directory that contain version .../3 of build.sh. Then you should be able to pick out the latest of those.
The above is probably not a fool proof approach, so you might try something more like
cleartool find /proj/src/scripts --allversions --nonvisible -name build.sh -version 'brtype(branch42) && version(3)' -print
(I no longer have a clearcase environment to test in, so the above is from memory and is not an accurate command)
Another approach is to:
set a label on the right version of the build.sh script and its directory (you can move that label when needed)
have a second dynamic view always configured to select that label
element * SCRIPT_LABEL
element /proj/... .../branch42/LATEST
That way, you simply read the information you need from that second dynamic view.