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

Рутинная и во многом однообразная задача написания 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

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

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

    Подписаться на новости блога

      Подписаться на обновления блога

      Коворкинг Starthub

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

      Коворкинг Wework

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

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