Engine Yard decided to release Stack V6 based on Ubuntu 18.04.2 LTS as stated in the documentation. In Ubuntu 6.10, the default system shell, /bin/sh, was changed to dash (the Debian Almquist Shell), therefore Stack V6 is using dash as its default system shell.
This affects a couple of aspects as below.
Deploy hooks
Coming from an older Stack Version, deploy hooks might need adjustment. The following is an example to outline this requirement:
run "source #{config.shared_path}/config/env; source #{config.shared_path}/config/env.cloud; source #{config.shared_path}/config/env.custom; bundle exec rake assets:precompile RAILS_ENV=#{config.framework_env}"
The source
command is no longer available, therefore the deploy hook above will fail. The V6 way to write that deploy hook is to replace the source
command with the equivalent .
as such:
run ". #{config.shared_path}/config/env; . #{config.shared_path}/config/env.cloud; . #{config.shared_path}/config/env.custom; bundle exec rake assets:precompile RAILS_ENV=#{config.framework_env}"
Custom scripts
Any shell using /bin/sh
shebang will default to dash shell and not bash. If you wish to stick to bash, you have to use the proper bash shebang (#!/bin/bash)
instead.
More information
You can have more information about that decision and workarounds a developer should be aware of on the official Ubuntu documentation.
Comments
Article is closed for comments.