Advanced Rails - Building Industrial-Strength Web Apps in Record Time

(Tuis.) #1
About Plugins | 81

Therapt searchcommand looks for plugins matching a specified keyword. To
search for plugins that add calendar features to Rails, change to the root directory of
a Rails application and execute:


$ rapt search calendar
Calendar Helper
Info: http://agilewebdevelopment.com/plugins/show/98
Install: http://topfunky.net/svn/plugins/calendar_helper
Calendariffic 0.1.0
Info: http://agilewebdevelopment.com/plugins/show/743
Install: http://opensvn.csie.org/calendariffic/calendariffic/
Google Calendar Generator
Info: http://agilewebdevelopment.com/plugins/show/277
Install: svn://rubyforge.org//var/svn/googlecalendar/plugins/googlecalendar
dhtml_calendar
Info: http://agilewebdevelopment.com/plugins/show/333
Install: svn://rubyforge.org//var/svn/dhtmlcalendar/dhtml_calendar
Bundled Resource
Info: http://agilewebdevelopment.com/plugins/show/166
Install: svn://syncid.textdriven.com/svn/opensource/bundled_resource/trunk
DatebocksEngine
Info: http://agilewebdevelopment.com/plugins/show/356
Install: http://svn.toolbocks.com/plugins/datebocks_engine/
datepicker_engine
Info: http://agilewebdevelopment.com/plugins/show/409
Install: http://svn.mamatux.dk/rails-engines/datepicker_engine

One of these could then be installed with, for example,rapt install datepicker_engine.


Piston


In Rails, plugins are perhaps the most common use of code supplied by an external
vendor (other than the Rails framework itself). This requires some special care where
version control is concerned. Managing Rails plugins as Subversion externals has sev-
eral disadvantages:



  • The remote server must be contacted on each update to determine whether any-
    thing has changed. This can incur quite a performance penalty if the project has
    many externals. In addition, it adds an unneeded dependency; problems can
    ensue if the remote server is down.

  • The project is generally at the mercy of code changes that happen at the remote
    branch; there is no easy way to cherry-pick or block changes that happen
    remotely. The only flexibility Subversion affords is the ability to lock to a certain
    remote revision.

  • Similarly, there is no way to maintain local modifications to a remote branch.
    Any needed modifications can only be kept in the working copy, where they are
    unversioned.

  • No history is kept of how external versions relate to the local repository. If you
    want to update your working copy to last month’s version, nobody knows what
    version the external code was at.

Free download pdf