[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Fab-user] Execute the same tasks in local() and run()
From: |
Todd DeLuca |
Subject: |
Re: [Fab-user] Execute the same tasks in local() and run() |
Date: |
Thu, 12 Jul 2012 09:32:04 -0400 |
The way I deploy to localhost now is to run ssh on my local machine. That way I can access my local machine "remotely" in fabric scripts. On my mac laptop, here is how I enabled remote logins via ssh. Go to System Preferences, choose Sharing. Select Remote login. That's it. This approach seems to fit into the fabric model well.
```
env.run = run
@task
def localhost():
env.run = local
@task
def do_something():
env.run('path/to/myscript.py')
```
Then I would do invoke it like:
```
fab local do_something
```
This got smellier when I started rsyncing, since I had to write a local version and remote version of rsync. Then when I started using `fabric.api.get`, I realized that I would have to write a API compatible version of `get` and `put` if I wanted to continue down this path. That pushed me to find the better way described above.
Hope that helps.
-Todd
On Thu, Jul 12, 2012 at 4:05 AM, Jorge Vargas
<address@hidden> wrote:
Hello,
We are using fabric for development as well as deployment and I'm wondering how people are doing command like this.
@task
def load_fixtures():
"""Load initial data."""
run("venv/bin/python data/fixtures.py")
This code should work for both the developer machine (ie: run local) and the deployment machine (ie: use run)
So far what I have done is something like
@task
def install_db(command=local):
"""@onetime install of the database"""
with prefix("source venv/bin/activate"):
command("python manage.py syncdb --migrate")
However that's a bit of a problem as I can't call that command from fab just from other fabric scripts.
_______________________________________________
Fab-user mailing list
address@hidden
https://lists.nongnu.org/mailman/listinfo/fab-user
--
Todd DeLuca
http://todddeluca.com