-
Notifications
You must be signed in to change notification settings - Fork 255
Closed
Description
I have some example code below from my Capistrano v3 tasks for Django. It seems that nesting 'with' calls is broken. Is this functionality supposed to be supported? The docs state "One will notice that it's quite low level, but exposes a convenient API, the as()/within()/with() are nestable in any order, repeatable, and stackable."
My current work around is to wrap the body of with_virtualenv in a begin-rescue block that captures the NameError and check for the message "instance variable @_env not defined".
Note that my intention is to keep the Django and virtualenv tasks in separate files/gems, hence my not simply merging the with calls.
def with_virtualenv(&block)
with path: "#{fetch(:virtualenv_dir)}/bin:$PATH" do
block.call
end
end
def django_manage(*args)
within release_path do
with_virtualenv do
with app_environment: fetch(:stage) do
execute :python, 'manage.py', args
end
end
end
end
# Results in "instance variable @_env not defined"
namespace :django do
task :migrate do
on primary fetch(:migration_role) do
django_manage 'syncdb', '--noinput', '--migrate'
end
end
end
Metadata
Metadata
Assignees
Labels
No labels