I realize this is probably a very n00bish question, but there's something I'm not understanding about this. Maybe it's because my background is .NET, so we don't really have the concept of plugins, but I'm not getting at all why you would have any need to use these.
If I run script/install plugin http://somesite/someplugin, doesn't Rails install those files in my vendor/plugin directory, and shouldn't I be keeping that directory under version control so anyone who checks out the code will have the same versions that I'm using (One of the first things I do when creating a new Rails project is to freeze the version of rails, should I not be?) instead of having to get it themselves and possibly causing conflicts.
If the vendor/plugins directory is under source control anyway, then what exactly is the benefit of using svn:externals or something like Piston to manage it, if when you check out a copy of the application to work you're getting the contents of vendor/plugins along with everything else (I have the book "The Rails Way" and from its description of svn:externals it sounds like it's doing the same thing i.e. checking out or updating the plugins in vendor/plugins)?
I've tried searching for something explaining why this is a good thing, but I'm coming up empty - every site just seems to assume you know why it's a good thing, or explain what svn:externals does without saying why you want it to do that. I understand what it does; what I'm clueless on is why you need it when I'm storing vendor/plugins under Subversion (or Git, as is the case) at the version my app is using anyway - unless I'm missing something, if someone checks out my code then they should be getting the exact same versions of everything that I wanted it to use.
Once again I'm sorry for posting what might be a "duh" question, but I've never encountered it before. Truth be told, before I got into Rails I never used version control or wrote tests or anything (not by choice, but all the .NET jobs I've had were with companies that had no idea what version control was, and were run by people who didn't understand why writing tests are good), so I'm not aware of a lot of "best practices", although I'm trying hard to learn and become a better developer.
Hoping someone can provide some clarity on this, as I'm pretty confused right now.