Новый проект — это всегда интересно, новые задачи, новый опыт, новые знания. Начиная новый проект, хочется сразу броситься «в бой». Но перед этим приходится тратить время на первоначальную настройку окружения, подключения и установку зависимостей, создания структуры, инициализацию проекта. Порой это может занимать целый день.

Рутинная и во многом однообразная задача написания fab скриптов для запуска виртуального окружения — охлаждает пыл и отвлекает. Для того чтобы пропускать этот шаг и сразу приступать к разработке, был написан простенький fab скрипт для фальстарта нового проекта. Так что теперь достаточно написать falstart <название проекта>, выпить чашечку чая и приступать к работе над новым проектом.

Мы в WB—Tech в основном используем следующий стек: Python 3.x + Django + PostgreSQL + Celery + Redis.

А саму разработку ведем в виртуальном окружении Vagrant + VirtualBox под управлением OS Debian.

Falstart позволяет быстро развернуть виртуальное окружение и приступить к работе, ответив на десяток простых вопросов.

$ falstart awesome> Django version ['1.9.5'] 1.10.2> Debian version (for vagrant box) ['jessie64']> Python version ['3.5.1'] 3.5.2> Vagrant box IP-addr ['10.1.1.123'] 10.1.1.111> Do you nead a POSTGRES? [Y/n]> Do you nead a CELERY? [y/N] y> Do you nead a REDIS? [y/N] y> Do you nead a SENTRY? [y/N]> Database name ['awesome_db']> Database user ['awesome_user']> Database pass ['vFeH1uJVN']

После чего выполняются скрипты, и через 10-15 минут будет готова структура проекта.

Пред зависимости

Для работы фальстарта необходим Vagrant и VirtualBox.

Установка

Фальстарт доступен для установки через pip.

$ pip install falstart

Результат

Пример результата: falstart-example.

Пример итоговой структуры проекта
$ tree.├── awesome│   ├── celery.py│   ├── __init__.py│   ├── __pycache__│   │   ├── celery.cpython-35.pyc│   │   ├── __init__.cpython-35.pyc│   │   ├── settings.cpython-35.pyc│   │   ├── settings_local.cpython-35.pyc│   │   ├── urls.cpython-35.pyc│   │   └── wsgi.cpython-35.pyc│   ├── settings_local.py│   ├── settings_local.py.example│   ├── settings.py│   ├── static│   │   └── admin│   │       ├── css│   │       │   ├── base.css│   │       │   ├── changelists.css│   │       │   ├── dashboard.css│   │       │   ├── fonts.css│   │       │   ├── forms.css│   │       │   ├── login.css│   │       │   ├── rtl.css│   │       │   └── widgets.css│   │       ├── fonts│   │       │   ├── LICENSE.txt│   │       │   ├── README.txt│   │       │   ├── Roboto-Bold-webfont.woff│   │       │   ├── Roboto-Light-webfont.woff│   │       │   └── Roboto-Regular-webfont.woff│   │       ├── img│   │       │   ├── calendar-icons.svg│   │       │   ├── gis│   │       │   │   ├── move_vertex_off.svg│   │       │   │   └── move_vertex_on.svg│   │       │   ├── icon-addlink.svg│   │       │   ├── icon-alert.svg│   │       │   ├── icon-calendar.svg│   │       │   ├── icon-changelink.svg│   │       │   ├── icon-clock.svg│   │       │   ├── icon-deletelink.svg│   │       │   ├── icon-no.svg│   │       │   ├── icon-unknown-alt.svg│   │       │   ├── icon-unknown.svg│   │       │   ├── icon-yes.svg│   │       │   ├── inline-delete.svg│   │       │   ├── LICENSE│   │       │   ├── README.txt│   │       │   ├── search.svg│   │       │   ├── selector-icons.svg│   │       │   ├── sorting-icons.svg│   │       │   ├── tooltag-add.svg│   │       │   └── tooltag-arrowright.svg│   │       └── js│   │           ├── actions.js│   │           ├── actions.min.js│   │           ├── admin│   │           │   ├── DateTimeShortcuts.js│   │           │   └── RelatedObjectLookups.js│   │           ├── calendar.js│   │           ├── cancel.js│   │           ├── change_form.js│   │           ├── collapse.js│   │           ├── collapse.min.js│   │           ├── core.js│   │           ├── inlines.js│   │           ├── inlines.min.js│   │           ├── jquery.init.js│   │           ├── popup_response.js│   │           ├── prepopulate_init.js│   │           ├── prepopulate.js│   │           ├── prepopulate.min.js│   │           ├── SelectBox.js│   │           ├── SelectFilter2.js│   │           ├── timeparse.js│   │           ├── urlify.js│   │           └── vendor│   │               ├── jquery│   │               │   ├── jquery.js│   │               │   ├── jquery.min.js│   │               │   └── LICENSE-JQUERY.txt│   │               └── xregexp│   │                   ├── LICENSE-XREGEXP.txt│   │                   ├── xregexp.js│   │                   └── xregexp.min.js│   ├── urls.py│   └── wsgi.py├── Makefile├── manage.py├── provision│   ├── fabric_provisioner.py│   ├── fabric_provisioner.pyc│   └── templates│       ├── environment.j2│       ├── locale.gen.j2│       └── nginx-host.j2├── requirements-remote.txt├── requirements.txt├── Vagrantfile├── var│   ├── celery_awesome_worker.log│   ├── celery_awesome_worker.pid│   ├── celerybeat-schedule│   └── gunicorn.pid└── wheels    ├── amqp-1.4.9-py2.py3-none-any.whl    ├── anyjson-0.3.3-py3-none-any.whl    ├── billiard-3.3.0.23-py3-none-any.whl    ├── celery-3.1.23-py2.py3-none-any.whl    ├── coverage-4.2-cp35-cp35m-linux_x86_64.whl    ├── coverage_badge-0.1.2-py3-none-any.whl    ├── Django-1.10.2-py2.py3-none-any.whl    ├── django_rainbowtests-0.5.1-py3-none-any.whl    ├── gunicorn-19.4.5-py2.py3-none-any.whl    ├── kombu-3.0.37-py2.py3-none-any.whl    ├── mccabe-0.4.0-py2.py3-none-any.whl    ├── pep257-0.7.0-py2.py3-none-any.whl    ├── pep8-1.7.0-py2.py3-none-any.whl    ├── psycopg2-2.6.1-cp35-cp35m-linux_x86_64.whl    ├── pyflakes-1.0.0-py2.py3-none-any.whl    ├── pylama-7.0.7-py2.py3-none-any.whl    ├── pytz-2016.7-py2.py3-none-any.whl    └── redis-2.10.5-py2.py3-none-any.whl

Теперь можно перейти по адресу, указанному в приветственном сообщении Vagrantа, и увидеть начальную страницу Django.

==> awesome_vagrant: Machine 'awesome_vagrant' has a post `vagrant up` message. This is a message==> awesome_vagrant: from the creator of the Vagrantfile, and not from Vagrant itself:==> awesome_vagrant:==> awesome_vagrant: awesome dev server successfuly started.==> awesome_vagrant:     Connect to host with:==> awesome_vagrant:     http://10.1.1.111/==> awesome_vagrant:     or over ssh with `vagrant ssh`==> awesome_vagrant:==> awesome_vagrant:     Admin user credentials:==> awesome_vagrant:       login: root==> awesome_vagrant:       password: 123123==> awesome_vagrant:

Если хотите убедиться, что все делаете правильно или проконсультироваться по поводу разработки вашего проекта, напишите нам.

Автор статьи
Кирилл Гришанин
Последние 10 лет руковожу командой аналитиков, дизайнеров и разработчиков

Подпишитесь на блог WB—Tech

Никакого спама, только анонсы новых статей

    Последние статьи

    Миграция внутренних пользователей Jira в новую директорию с сохранением данных об активности

    Рассказали, как осуществили перенос пользовательских данных из Jira (Internal Directory) в директорию Microsoft Active Directory.

    Как эффективно хранить и актуализировать корпоративные данные средствами low/no-code

    Рассказали, как организовали поток HR-данных, чтобы оргструктура и бонусно-бухгалтерские расчеты всегда были актуальны.

    Мало кода, больше результативности: платформы low-code и no-code

    О low-code и no-code платформах, примерах использования и разбор нужно ли быть программистом.

    ИП Гришанин Кирилл Олегович
    ИНН 774313842609

    Коворкинг Starthub

    Б. Новодмитровская ул., 36, стр. 12, вход 6,
    Москва, Россия, 127015

    Коворкинг Wework

    Ahad Ha'am 54,Tel Aviv-Yafo,Израиль

    © 2023 WB—Tech. Мы разрабатываем уникальные решения для компаний из России, США и Европы.