# Plugin refresh time

**URL:** <https://www.ruby-forum.com/t/plugin-refresh-time/59752>\
**Category:** Rails\
**Created:** [May 6, 2006, 1:04am UTC](https://www.ruby-forum.com/t/plugin-refresh-time/59752 "2006-05-06T01:04:12Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![anthonyrudgick](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/c37758/32.png) [@anthonyrudgick](https://www.ruby-forum.com/u/anthonyrudgick)\
**Post date:** [May 6, 2006, 1:04am UTC](https://www.ruby-forum.com/t/plugin-refresh-time/59752/1 "2006-05-06T01:04:12Z")

</div>

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:-  
vendor/plugins/open\_advantage/init.rb  
vendor/plugins/lib/open\_advantage/authorisation.rb

the ‘vendor/plugins/lib/open\_advantage/authorisation.rb’ file contains  
module OpenAdvantage  
module Authorisation  
end  
end  
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.

Thanks,

Anthony

---

<div class="post-metadata">

**Author:** ![anthonyrudgick](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/c37758/32.png) [@anthonyrudgick](https://www.ruby-forum.com/u/anthonyrudgick)\
**Post date:** [May 6, 2006, 1:25am UTC](https://www.ruby-forum.com/t/plugin-refresh-time/59752/2 "2006-05-06T01:25:33Z")

</div>

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  
plugins…

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

[http://nubyonrails.com/articles/2006/05/04/the-complete-guide-to-rails-plugins-part-i](http://nubyonrails.com/articles/2006/05/04/the-complete-guide-to-rails-plugins-part-i)

It might have some tips.

~ Ben

On 5/5/06, Anthony R. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> ```
> vendor/plugins/lib/open_advantage/authorisation.rb
> 
> ```
> 
> before when it should presumably raise a 'Come on, FFS this is
> 
> Any help would be gratefully received.
> 
> Thanks,
> 
> Anthony
> 
> * * *
> 
> Rails mailing list  
> removed\_email\_address@domain.invalid  
> [http://lists.rubyonrails.org/mailman/listinfo/rails](http://lists.rubyonrails.org/mailman/listinfo/rails)

–  
Ben R.  
303-947-0446  
[http://www.benr75.com](http://www.benr75.com)

---

<div class="post-metadata">

**Author:** ![anthonyrudgick](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/c37758/32.png) [@anthonyrudgick](https://www.ruby-forum.com/u/anthonyrudgick)\
**Post date:** [May 6, 2006, 4:15am UTC](https://www.ruby-forum.com/t/plugin-refresh-time/59752/3 "2006-05-06T04:15:22Z")

</div>

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  
end

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

vendor/plugins/open\_advantage/init.rb  
vendor/plugins/open\_advantage/lib/open\_advantage/authorization.rb

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

Begin forwarded message:

---

<div class="post-metadata">

**Author:** ![anthonyrudgick](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/c37758/32.png) [@anthonyrudgick](https://www.ruby-forum.com/u/anthonyrudgick)\
**Post date:** [May 6, 2006, 4:09am UTC](https://www.ruby-forum.com/t/plugin-refresh-time/59752/4 "2006-05-06T04:09:22Z")

</div>

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.

## Regards, Trevor

Trevor S.  
[http://somethinglearned.com](http://somethinglearned.com)
