I've been researching Bundler's page and RubyGem's page (and SO posts) but can't seem to figure this out.
In the Gemfile, you specify to Bundler which version of the Gem to use. That's about all I know as true...the rest is me guessing at what goes on behind the scenes.
So it looks like Bundler then goes to RubyGems.org or some other source to figure out the Gem's versions, dependencies, and location of the source files. This is my big assumption.
Then most likely Bundler goes to the code repository, most likely Github, to download the source code. This is where I'm stuck at. If someone specifies a verion of 1.0.0, how does Bundler know which Git commit corresponds to version 1.0.0?
-Does Bundler go by tags?
-Or does Bundler go to the head a a branch that is named the same as the version number?
-Or is there a specific commit specified somewhere in RubyForge?
-Or is a snapshot of the source code available straight through RubyForge?
I'm wondering because if I specify a Gem to be at 1.0.0 and do a bundle install. Bundle takes the commit at the head of the 1.0.0 branch (if that's how Bundler does it), then if there are subsequent commits on that branch (but the version remains the same), does that mean I would have a different version of that Gem than someone who bundles after me (after the subsequent commits on the branch)?
It would make sense that bundler resolves the version to a particular commit, but how does bundler choose the commit? Because version 1.0.0 can exist across multiple commits.
Thank you for your time!