2

私はこのガイドを使用しています: http://www.jeffknupp.com/blog/2012/02/09/starting-a-django-project-the-right-way/

私のdjangoプロジェクトをセットアップするには。しかし、展開部分で立ち往生しています。virtualenv で pip を使用してファブリックをインストールしました。myproject ディレクトリ内にこのファイルを作成しました。

from fabric.api import local

def prepare_deployment(branch_name):
    local('python manage.py test finance')
    local('git add -p && git commit')
    local('git checkout master && git merge ' + branchname)

from fabric.api import lcd

def deploy():
    with lcd('home/andrius/djcode/myproject/'):
        local('git pull /home/andrius/djcode/dev/')
        local('python manage.py migrate finance')
        local('python manage.py test finance')
        local('/my/command/to/restart/webserver')

しかし、このコマンドを入力すると (ガイドに示されているように):

fab prepare_deployment

次のエラーが表示されます。

Traceback (most recent call last):
  File "/home/andrius/env/local/lib/python2.7/site-packages/fabric/main.py", line 732, in main
    *args, **kwargs
  File "/home/andrius/env/local/lib/python2.7/site-packages/fabric/tasks.py", line 345, in execute
    results['<local-only>'] = task.run(*args, **new_kwargs)
  File "/home/andrius/env/local/lib/python2.7/site-packages/fabric/tasks.py", line 121, in run
    return self.wrapped(*args, **kwargs)
TypeError: prepare_deployment() takes exactly 1 argument (0 given)

そのため、ガイドで引数を入力するように指定されていませんでしたが、ブランチ名が必要だと思います。だからこれを入力しました:

fab prepare_deployment v0.1

(v0.1 は私のブランチ名です) だから今、私はこのエラーを得ました:

Warning: Command(s) not found:
    v0.1

Available commands:
    deploy
    prepare_deployment

また、関数 prepare_deployment のファイル fabfile.py のガイドで、入力が「branch_name」として記述され、関数内に引数「branchname」があることに気付きました。だから私はそれが同じであるべきだと思って、「branchname」を「branch_name」に名前を変更しましたが、それでも同じエラーが発生します。

だから私はここで何か間違ったことをしていると思います。何が問題なのですか?

更新: fabfile.py 内で関数を呼び出そうとしました:

prepare_deployment("v0.1")

出力は次のとおりです。

[localhost] local: python manage.py test finance
Creating test database for alias 'default'...
Got an error creating the test database: permission denied to create database

Type 'yes' if you would like to try deleting the test database 'test_finance', or 'no' to cancel: yes
Destroying old test database 'default'...
Got an error recreating the test database: database "test_finance" does not exist


Fatal error: local() encountered an error (return code 2) while executing 'python manage.py test finance'

Aborting.

私のアプリ名は「金融」であり、データベース名は「金融」であることにも言及する必要があると思います。多分それらは矛盾していますか?

4

2 に答える 2

5

fabric は、コマンド ラインからタスクに引数を渡すために特定の構文を使用します。使用する必要があるbashシェルから

fab prepare_deployment:v0.1

これについては、タスクごとの引数に関するファブリックのドキュメントを参照してください

実際に bash コマンドで括弧を使用する必要がある場合は、それらをエスケープする必要があります。

于 2013-01-06T12:01:34.507 に答える
0

あなたが言ったように、この関数はこのように見えるはずです...

def prepare_deployment(branch_name):
    local('python manage.py test finance')
    local('git add -p && git commit')
    local('git checkout master && git merge ' + branch_name)

次に、単に電話します...

fab prepare_deployment("v0.1")
于 2013-01-06T10:06:20.123 に答える