I’m somewhat new to Chef and Ruby in general, so please bear with me ( and feel free to correct any misguided statements! )
From what I understand, pre-ChefDK, people would use bundler to pin the gem versions they used to develop/test their application/cookbook. I slap it all into a Gemfile, bundle install, commit the Gemfile.lock. You download my repo, you bundle install and you immediately have all the same gem versions that I used.
My confusion stems with how this is supposed to work with ChefDK. Suppose that I use ChefDK to create my cookbook, do all my development and testing and release it to a public repo.? My colleague, however, doesn’t have ChefDK and grabs my repo. How is he supposed to know what gems I used? My first answer would be - I either document it in the README or I just say ‘Install ChefDK v0.3.5’. Another option would be to manually create a Gemfile for everything that I used out of ChefDK and include that along with my repo? But in both cases, I’m having to keep some extra piece of information up to date with everything I’m using out of ChefDK ( or just telling him he better install it ). Am I missing something there?
The second scenario I’m hazy about is when you get into the situation when we start drifting between ChefDK versions. Perhaps I haven’t upgraded my ChefDK for awhile and you’re on the latest and greatest. What’s keeping us in sync, so that we’re using the same versions of Test Kitchen, ChefSpec, etc? Or does it not matter, because in general, the differences between the gems provided in different ChefDK versions isn’t a big enough concern?
I understand ( I think ), that if I start using 3rd party gems that aren’t included in ChefDK, I should be bundle installing them and including the Gemfile. I think it’s the two scenarios above that I’m unsure about and I’m curious how others are doing this.
I’ve read a few blog posts and the previous mail on the list http://lists.opscode.com/sympa/arc/chef/2014-06/msg00000.html, but I think I’m still confused enough what the vision/workflow is that I had to ask.