UPDATE: I ended up making some pretty massive changes. You can configure multiple plugin repositories, install, update, remove, and discover plugins. The directions for installation are still valid but you’ll need to run
plugin --help to get a feel for the changes in usage.
UPDATE: The plugin manager has been included with Rails 1.0 RC4.
script/plugin --help from a fresh Rails app for usage information.
Rails 1.0 RC1 shipped with a simple plugin system - drop a directory under
vendor/plugins that contains an
init.rb file to be executed at configuration time and an optional
lib directory to be placed on the path. Do whatever you please from there. It’s a simple hook into the startup cycle and a much needed addition.
About 19 hours ago, David suggested that people link to their plugins from the Rails Wiki as a kind of interim solution to the problem of not having a standard means of packaging and managing these things. They did and with links to their plugins’ subversion repositories.
Install it like this:
$ cd my-rails-app $ curl http://lesscode.org/svn/rtomayko/rails/scripts/plugin > script/plugin $ chmod +x script/plugin
Then see what plugins are available:
$ ./script/plugin continuous_builder http://dev.rubyonrails.com/svn/rails/plugins/continuous_builder asset_timestamping http://svn.aviditybytes.com/rails/plugins/asset_timestamping enumerations_mixin http://svn.protocool.com/rails/plugins/enumerations_mixin/trunk calculations http://techno-weenie.net/svn/projects/calculations/ ...
Next, install stuff to your
$ ./script/plugin continuous_builder asset_timestamping
Here’s how it works:
Scrape the Plugin page for things that look like subversion repositories with plugins. (Yes, I’m using regular expressions. Yes, I understand the issues. No, I don’t care.)
vendor/pluginsis under subversion control, the script will modify the
svn:externalsproperty on that directory and perform an update. You can use normal subversion commands to keep the plugins up to date.
vendor/pluginsis not under subversion control, the plugin is pulled via
If you want to use
svn:externals, make sure you have your
vendor/plugins directory under subversion’s control before installing any plugins . If your not sure, do something like this:
$ svn info vendor/plugins foo: (Not a versioned resource) $ svn mkdir vendor/plugins $ svn ci -m "adding teh plugins directory so I can use this r0x3ring plugin manager..."
This probably won’t work on Windows at the moment and assumes you have the command line subversion client utilities available (
It’s useful as is, but please, make it better.