"Vendor Everything" still applies

15
“Vendor Everything” Still Applies Ryan McGeary http://ryan.mcgeary.org @rmm5t

description

This talk is a quick lesson on some of the conventions I use and as they relate to Bundler and RVM.As a consultant, I jump between a lot of different Ruby projects from day to day. Some are my own; some are owned by others. Some are greenfield; some are legacy. Sometimes, I’m the sole developer; sometimes, I’m working with a team.There’s nothing more frustrating than jumping on an existing project only to fall into dependency hell when your first goal is just a passing test suite. Dependencies can be quite difficult to manage, and fortunately, we have some great tools like Bundler and RVM to help out. The problem, however, is that conventions surrounding these tools aren’t yet settled.

Transcript of "Vendor Everything" still applies

Page 1: "Vendor Everything" still applies

“Vendor Everything”Still Applies

Ryan McGearyhttp://ryan.mcgeary.org

@rmm5t

Page 2: "Vendor Everything" still applies
Page 3: "Vendor Everything" still applies

vendor/g

ems

config.g

em

Page 4: "Vendor Everything" still applies

WHY?

Page 5: "Vendor Everything" still applies

Check in your.rvmrc

rvm ruby-1.9.2

Page 6: "Vendor Everything" still applies

RVM Gemsets Are Overrated

Page 7: "Vendor Everything" still applies

Let Bundler Follow the --path

$ bundle install --path vendor$ echo 'vendor/ruby' >> .gitignore

Page 8: "Vendor Everything" still applies

Package Your Gems in vendor/cache

$ bundle package

Page 9: "Vendor Everything" still applies

Help!

alias b="bundle"alias bi="b install --path vendor"alias bu="b update"alias be="b exec"alias binit="bi && b package && ignore_vendor_ruby"

Page 10: "Vendor Everything" still applies

.!"" .gitignore!"" .rvmrc!"" Gemfile!"" Gemfile.lock#"" vendor !"" cache $   !"" coffee-script-2.2.0.gem $   !"" coffee-script-source-1.1.0.gem $   !"" execjs-0.4.0.gem $   #"" multi_json-1.0.2.gem #"" ruby #"" 1.9.1 !"" bin !"" cache !"" doc !"" gems #"" specifications

Page 11: "Vendor Everything" still applies

.!"" .gitignore!"" .rvmrc!"" Gemfile!"" Gemfile.lock#"" vendor !"" cache $   !"" coffee-script-2.2.0.gem $   !"" coffee-script-source-1.1.0.gem $   !"" execjs-0.4.0.gem $   #"" multi_json-1.0.2.gem #"" ruby #"" 1.9.1 !"" bin !"" cache !"" doc !"" gems #"" specifications

Page 12: "Vendor Everything" still applies

.!"" .gitignore!"" .rvmrc!"" Gemfile!"" Gemfile.lock#"" vendor !"" cache $   !"" coffee-script-2.2.0.gem $   !"" coffee-script-source-1.1.0.gem $   !"" execjs-0.4.0.gem $   #"" multi_json-1.0.2.gem #"" ruby #"" 1.9.1 !"" bin !"" cache !"" doc !"" gems #"" specifications

Page 13: "Vendor Everything" still applies

.!"" .gitignore!"" .rvmrc!"" Gemfile!"" Gemfile.lock#"" vendor !"" cache $   !"" coffee-script-2.2.0.gem $   !"" coffee-script-source-1.1.0.gem $   !"" execjs-0.4.0.gem $   #"" multi_json-1.0.2.gem #"" ruby #"" 1.9.1 !"" bin !"" cache !"" doc !"" gems #"" specifications

bundle ins

tall --pat

h vendor

Page 14: "Vendor Everything" still applies

.!"" .gitignore!"" .rvmrc!"" Gemfile!"" Gemfile.lock#"" vendor !"" cache $   !"" coffee-script-2.2.0.gem $   !"" coffee-script-source-1.1.0.gem $   !"" execjs-0.4.0.gem $   #"" multi_json-1.0.2.gem #"" ruby #"" 1.9.1 !"" bin !"" cache !"" doc !"" gems #"" specifications

bundle pac

kage

Page 15: "Vendor Everything" still applies

Ryan McGearyryan.mcgeary.org @rmm5t [email protected]

McGeary Consulting Group