Plugin refresh time

Hi there,

I’m currently developing a plugin to do authentication and
authorisation. In the init.rb file of the plugin I have this code:-
$:.unshift File.expand_path(File.join(File.dirname(FILE), ‘lib’))
require ‘open_advantage/authorisation’
ActionController::Base.send :include, OpenAdvantage::Authorisation

and this is the skeleton of my plugin directory structure:-

the ‘vendor/plugins/lib/open_advantage/authorisation.rb’ file contains
module OpenAdvantage
module Authorisation
currently with only a few methods in the Authorisation module.
However, when I change one of the functions in this module the
function is not mirrored in the output of the web browser. For
example if I deliberately make a mistake in the code it carrys on as
before when it should presumably raise a ‘Come on, FFS this is
nonsensical rubbish’ error. It continues to do this until the web
server (either lighttpd or webrick, I’ve tried both) are restarted.

Is there someway I can make the changes I’ve made in my plugin
immediately available to the application? I’ve tried putting various
require and include statements into the app/controllers/
application.rb file, but to no avail. The only way I can find for it
to pick up the changes every time is to pop the classes in the app/
controllers/application.rb file, and I’d really rather not develop
like that.

Any help would be gratefully received.



Hello Anthony ~

For changes in a plugin to be picked up the app needs to be restarted.
Imagine if the app had to reload every plugin on every request in
development mode? It would be quite a long wait for apps with many

Don’t know if you saw this, but Geoffrey Grosenbach just released this:

It might have some tips.

~ Ben

On 5/5/06, Anthony R. [email protected] wrote:


before when it should presumably raise a 'Come on, FFS this is

Any help would be gratefully received.



Rails mailing list
[email protected]

Ben R.

Hi again Anthony,

OOPS! I wasn’t very clear, I’ll give an example:

in app/controllers/application.rb

class ApplicationController < ActionController::Base
require_dependency ‘open_advantage/authorization’
include OpenAdvantage::Authorization

Oh, and by the way, the correct directory structure is:


That way, you can get rid of the $:.unshift code.

Begin forwarded message:

Hi Anthony,

while you are developing your plugin (and want reloading capability)
you could move the ‘require’ and ‘include’ lines from init.rb into
your ApplicationController (app/controllers/application.rb).
Assuming all other controllers inherit from this controller the
results ought to be the same.

You’ll need to change the ‘require’ to ‘require_dependency’ but apart
from that it should be fine.


Trevor S.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs