28
ДОСТАВКА КОДА. ПОДДЕРЖКА ЕДИНОГО СТИЛЯ КОДА Денис Евграфов Тимлид

Денис Евграфов. Доставка, тестирование кода и его стиля. РИФ-Воронеж 2016

  • Upload
    -

  • View
    142

  • Download
    3

Embed Size (px)

Citation preview

Page 1: Денис Евграфов. Доставка, тестирование кода и его стиля. РИФ-Воронеж 2016

ДОСТАВКА КОДА. ПОДДЕРЖКА ЕДИНОГО СТИЛЯ КОДА

Денис Евграфов Тимлид

Page 2: Денис Евграфов. Доставка, тестирование кода и его стиля. РИФ-Воронеж 2016

ДЖЕНТЛЬМЕНСКИЙ НАБОР ГЕМОВ

Page 3: Денис Евграфов. Доставка, тестирование кода и его стиля. РИФ-Воронеж 2016

АУТЕНТИФИКАЦИЯ

■ devise■ sorcery

Page 4: Денис Евграфов. Доставка, тестирование кода и его стиля. РИФ-Воронеж 2016

АВТОРИЗАЦИЯ

■ pundit■ cancancan ■ authority

Page 5: Денис Евграфов. Доставка, тестирование кода и его стиля. РИФ-Воронеж 2016

РАБОТА С ДАННЫМИ

■ seedbank■ pghero■ backup

Page 6: Денис Евграфов. Доставка, тестирование кода и его стиля. РИФ-Воронеж 2016

ГЕНЕРАЦИЯ JSON

■ active_model_serializers■ responders

Page 7: Денис Евграфов. Доставка, тестирование кода и его стиля. РИФ-Воронеж 2016

РАБОТА С ИЗОБРАЖЕНИЯМИ

■ carrierwave ■ jquery-fileupload-rails

■ remotipart

Page 8: Денис Евграфов. Доставка, тестирование кода и его стиля. РИФ-Воронеж 2016

СТАТУСЫ / ВЕРСИИ / УДАЛЕНИЕ

■ aasm■ paper_trail■ paranoia

Page 9: Денис Евграфов. Доставка, тестирование кода и его стиля. РИФ-Воронеж 2016

ROLLBAR

Page 10: Денис Евграфов. Доставка, тестирование кода и его стиля. РИФ-Воронеж 2016

ОТПРАВКА ПОЧТЫ / ОЧЕРЕДИ

■ letter_opener■ mailgun_rails■ premailer-rails

■ sidekiq

■ sitemap_generator

■ whenever

Page 11: Денис Евграфов. Доставка, тестирование кода и его стиля. РИФ-Воронеж 2016

ФОРМЫ / ОТОБРАЖЕНИЕ

■ bootstrap■ bootstrap_generators■ simple_form■ ransack■ select2-rails■ ckeditor

■ cocoon■ recaptcha■ show_for■ kaminari■ errgent■ high_voltage

Page 12: Денис Евграфов. Доставка, тестирование кода и его стиля. РИФ-Воронеж 2016

ПОМОЩЬ В РАЗРАБОТКЕ

■ awesome_print ■ annotate ■ switch_user

Page 13: Денис Евграфов. Доставка, тестирование кода и его стиля. РИФ-Воронеж 2016

ТЕСТИРОВАНИЕ / ДЕБАГ

■ capybara■ database_cleaner■ simplecov■ poltergeist

■ faker / ffaker■ factory_girl_rails■ vcr■ byebug

Page 14: Денис Евграфов. Доставка, тестирование кода и его стиля. РИФ-Воронеж 2016

ЛИНТЫ

■ rubocop (rubocop-rspec)

■ haml_lint■ scss_lint■ brakeman■ coffeelint / eslint

Page 15: Денис Евграфов. Доставка, тестирование кода и его стиля. РИФ-Воронеж 2016

OVERCOMMIT

Page 16: Денис Евграфов. Доставка, тестирование кода и его стиля. РИФ-Воронеж 2016

ДЕПЛОЙДоставка кода на сервер

Page 17: Денис Евграфов. Доставка, тестирование кода и его стиля. РИФ-Воронеж 2016

MINA / CAPISTRANO$ mina init ==> Created config/deploy.rb.# config/deploy.rbrequire 'mina/bundler’require 'mina/rails’require 'mina/git'require 'mina/puma'

set :user, 'username'set :application, 'my_project’set :domain, 'your.server.com’set :deploy_to, "/home/#{user}/projects/#{application}"set :repository, "[email protected]:stereodenis/#{application}.git"set :keep_releases, 3

set :shared_paths, %w(tmp/pids public/system public/uploads config/secrets.ymlconfig/database.yml log)…

Page 18: Денис Евграфов. Доставка, тестирование кода и его стиля. РИФ-Воронеж 2016

SETUPtask setup: :environment do queue! %(mkdir -p "#{deploy_to}/shared/log") queue! %(chmod g+rx,u+rwx "#{deploy_to}/shared/log")

queue! %(mkdir -p "#{deploy_to}/shared/config") queue! %(chmod g+rx,u+rwx "#{deploy_to}/shared/config")

queue! %(touch "#{deploy_to}/shared/config/database.yml") queue %(echo "-----> Be sure to edit 'shared/config/database.yml'.")

# Puma needs a place to store its pid file and socket file. queue! %(mkdir -p "#{deploy_to}/#{shared_path}/tmp/sockets") queue! %(chmod g+rx,u+rwx "#{deploy_to}/#{shared_path}/tmp/sockets") queue! %(mkdir -p "#{deploy_to}/#{shared_path}/tmp/pids") queue! %(chmod g+rx,u+rwx "#{deploy_to}/#{shared_path}/tmp/pids")end

> mina setup

Page 19: Денис Евграфов. Доставка, тестирование кода и его стиля. РИФ-Воронеж 2016

DEPLOYdesc 'Deploys the current version to the server.'task deploy: :environment do deploy do invoke :'git:clone' invoke :'deploy:link_shared_paths' invoke :'bundle:install' invoke :'rails:assets_precompile' invoke :'rails:db_migrate' invoke :'deploy:cleanup'

to :launch do invoke :'puma:restart' end endend

> mina deploy

Page 20: Денис Евграфов. Доставка, тестирование кода и его стиля. РИФ-Воронеж 2016

ПЛАГИНЫ

■ mina-data_sync■ mina-faye■ mina-foreman■ mina-hooks■ mina-multistage■ mina-nginx

■ mina-puma■ mina-rbenv-addons■ mina-rollbar■ mina-sidekiq■ mina-tail■ mina-whenever

Page 21: Денис Евграфов. Доставка, тестирование кода и его стиля. РИФ-Воронеж 2016

АВТОМАТИЗАЦИЯContinuous Integration

Page 22: Денис Евграфов. Доставка, тестирование кода и его стиля. РИФ-Воронеж 2016
Page 23: Денис Евграфов. Доставка, тестирование кода и его стиля. РИФ-Воронеж 2016

VEXOR

Page 24: Денис Евграфов. Доставка, тестирование кода и его стиля. РИФ-Воронеж 2016
Page 25: Денис Евграфов. Доставка, тестирование кода и его стиля. РИФ-Воронеж 2016
Page 26: Денис Евграфов. Доставка, тестирование кода и его стиля. РИФ-Воронеж 2016
Page 27: Денис Евграфов. Доставка, тестирование кода и его стиля. РИФ-Воронеж 2016

СТАЖИРОВКАcareer.evrone.ru

Page 28: Денис Евграфов. Доставка, тестирование кода и его стиля. РИФ-Воронеж 2016

СПАСИБО ЗА ВНИМАНИЕ!ВОПРОСЫ?

@stereodenis