Slide 1

Slide 1 text

Speeding-Up Rails Dev Onboarding adamdelong.com

Slide 2

Slide 2 text

8 hours

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

<1 Hour

Slide 8

Slide 8 text

~1 Hour

Slide 9

Slide 9 text

Environment adamdelong.com

Slide 10

Slide 10 text

Standardize

Slide 11

Slide 11 text

Example 2.1.3 Nginx Postgres PhantomJS

Slide 12

Slide 12 text

VirtualBox Vagrant Chef DK

Slide 13

Slide 13 text

Berkshelf

Slide 14

Slide 14 text

vagrant-berkshelf

Slide 15

Slide 15 text

vagrant-omnibus

Slide 16

Slide 16 text

Two files: Vagrantfile Berksfile

Slide 17

Slide 17 text

Vagrantfile

Slide 18

Slide 18 text

-*- mode: ruby -*- # vi: set ft=ruby : VAGRANTFILE_API_VERSION = "2" Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.box = "precise64" config.vm.network "forwarded_port", guest: 3000, host: 3333 config.vm.synced_folder ".", "/vagrant", type: "nfs" config.vm.network "private_network", ip: "192.168.33.10" config.berkshelf.enabled = true config.omnibus.chef_version = "11.16.0" config.vm.provision "chef_solo" do |chef| chef.add_recipe "apt" chef.add_recipe "build-essential" chef.add_recipe “chruby::system” chef.add_recipe "postgresql::client" chef.add_recipe "postgresql::server" chef.add_recipe "nginx" chef.add_recipe "phantomjs" chef.json = { "chruby" => { "rubies" => { "2.1.3" => true }, "default" => "2.1.3" }, "postgresql" => { “version” => “9.4”, "password" => { "postgres" => "example" } } } end end

Slide 19

Slide 19 text

config.vm.box = "precise64"

Slide 20

Slide 20 text

config.vm.synced_folder ".", "/vagrant", type: “nfs" config.vm.network "private_network", ip: "192.168.33.10"

Slide 21

Slide 21 text

config.vm.network "forwarded_port", guest: 3000, host: 3333

Slide 22

Slide 22 text

config.berkshelf.enabled = true

Slide 23

Slide 23 text

Berksfile

Slide 24

Slide 24 text

source "https://supermarket.chef.io" cookbook "apt" cookbook "build-essential" cookbook "chruby" cookbook “postgresql”, “~> 3.4.14” cookbook "nginx" cookbook "phantomjs"

Slide 25

Slide 25 text

config.omnibus.chef_version = "11.16.0"

Slide 26

Slide 26 text

chef.add_recipe "apt" chef.add_recipe "build-essential" chef.add_recipe "chruby" chef.add_recipe "postgresql::client" chef.add_recipe "postgresql::server" chef.add_recipe "nginx" chef.add_recipe "phantomjs"

Slide 27

Slide 27 text

chef.json

Slide 28

Slide 28 text

"chruby" => { "rubies" => { "2.1.3" => true } }

Slide 29

Slide 29 text

"postgresql" => { “version” => “9.4”, "password" => { "postgres" => "example" } }

Slide 30

Slide 30 text

Cons adamdelong.com

Slide 31

Slide 31 text

Networking

Slide 32

Slide 32 text

LiveReload/ Guard

Slide 33

Slide 33 text

App adamdelong.com

Slide 34

Slide 34 text

database.yml.example

Slide 35

Slide 35 text

Seeds

Slide 36

Slide 36 text

Version Control (Git)

Slide 37

Slide 37 text

Assets

Slide 38

Slide 38 text

Docs adamdelong.com

Slide 39

Slide 39 text

README

Slide 40

Slide 40 text

Minimal

Slide 41

Slide 41 text

Troubleshooting

Slide 42

Slide 42 text

Resources adamdelong.com

Slide 43

Slide 43 text

atlas.hashicorp.com/ boxes/search stefanwrobel.com/how- to-make-vagrant- performance-not-suck

Slide 44

Slide 44 text

Questions? adamdelong.com