gem-thief
by David Smalley
http://github.com/davidsmalley/gem-thief
== DESCRIPTION:
Gem Thief was designed to help me sync the various gem versions on the application servers running Litmus.
Everytime we deploy a new server I need to reinstall all the necessary gems and get the right versions. Rails
gem dependencies are great but they don't work across all of the apps we run including a few Ruby utility apps.
Gem thief is designed to be run on one machine which has the gems, and given the credentials to connect to the
remote machine which needs gems installing.
== FEATURES/PROBLEMS:
- Will mirror gems on your local computer to a remote computer using a number of different strategies
- Parses remote gems from the gem list --local command, not really ideal but works for now
(new RubyGem versions might break the expected output)
== SYNOPSIS:
./thief -h a.remote.machine.com -u root --strategy latest -x
You can also pass in the following flags:
--no-docs :Pass --no-ri --no-rdoc onto the gem install command
--no-deps :Do all installs with the --ignore-dependencies flag
--pretend :Just print a list of gems which would have been updated
Strategy has 4 options:
- all: Totally install all gems and versionsfrom the local machine regardless of what gems are already on the remote machine
- latest: Just install the most recent versions of all the gems on the local machine
- missing: Install all versions of gems which are on the local machine but not on the remote machine
- latest_missing: Install the most recent versions of any missing gems on the remote machine
== REQUIREMENTS:
- Net/ssh > 2
- RubyGems > 1.2
== INSTALL:
- Install the gem
- run Thief command from machine which has the desired gems
== LICENSE:
(The MIT License)
Copyright (c) 2008
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
'Software'), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.