# Lib loading/requiring for an extension

**URL:** <https://www.ruby-forum.com/t/lib-loading-requiring-for-an-extension/91012>\
**Category:** Radiant CMS\
**Created:** [April 3, 2007, 8:41pm UTC](https://www.ruby-forum.com/t/lib-loading-requiring-for-an-extension/91012 "2007-04-03T20:41:55Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Karl\_Doody](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/k/7cd45c/32.png) [@Karl\_Doody](https://www.ruby-forum.com/u/Karl_Doody)\
**Post date:** [April 3, 2007, 8:41pm UTC](https://www.ruby-forum.com/t/lib-loading-requiring-for-an-extension/91012/1 "2007-04-03T20:41:55Z")

</div>

Hi all, quick question.

I’ve used this hack effectively in a normal rails app: http://  
[www.pluitsolutions.com/2007/03/20/custom-in\_place\_edit-with-validation/](http://www.pluitsolutions.com/2007/03/20/custom-in_place_edit-with-validation/)

It requires a file in the lib/ directory and a ‘require’ in  
environment.rb

The former I can do, but in the extension’s lib directory. The latter  
I can’t (as an extension). I followed this post http://  
[lists.radiantcms.org/pipermail/radiant/2007-January/003160.html](http://lists.radiantcms.org/pipermail/radiant/2007-January/003160.html) but  
still no joy.

Any ideas? Is this do-able?

Kind regards,  
-Karl

---

<div class="post-metadata">

**Author:** ![Karl\_Doody](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/k/7cd45c/32.png) [@Karl\_Doody](https://www.ruby-forum.com/u/Karl_Doody)\
**Post date:** [April 3, 2007, 9:28pm UTC](https://www.ruby-forum.com/t/lib-loading-requiring-for-an-extension/91012/2 "2007-04-03T21:28:03Z")

</div>

On Apr 3, 2007, at 2:41 PM, Karl Doody wrote:

> It requires a file in the lib/ directory and a ‘require’ in  
> environment.rb
> 
> The former I can do, but in the extension’s lib directory. The latter  
> I can’t (as an extension). I followed this post http://  
> [lists.radiantcms.org/pipermail/radiant/2007-January/003160.html](http://lists.radiantcms.org/pipermail/radiant/2007-January/003160.html) but  
> still no joy.
> 
> Any ideas? Is this do-able?

So, as I understand it, you need to require a file in your  
extension’s lib directory? Any reason you can’t do this in your  
extension’s activate method?

adam williams

---

<div class="post-metadata">

**Author:** ![Karl\_Doody](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/k/7cd45c/32.png) [@Karl\_Doody](https://www.ruby-forum.com/u/Karl_Doody)\
**Post date:** [April 4, 2007, 12:00am UTC](https://www.ruby-forum.com/t/lib-loading-requiring-for-an-extension/91012/3 "2007-04-04T00:00:22Z")

</div>

Okay, I gave that a go but WebBrick fails to start (with a rather  
cryptic error):

./script/server -e production  
=\> Booting WEBrick…  
/opt/local/lib/ruby/gems/1.8/gems/rails-1.2.3/lib/commands/servers/  
webrick.rb:11: warning: already initialized constant OPTIONS  
/opt/local/lib/ruby/gems/1.8/gems/radiant-0.6.0/vendor/rails/  
activerecord/lib/active\_record/vendor/mysql.rb:1127:in `write': Lost connection to MySQL server during query (Mysql::Error) from /opt/local/lib/ruby/gems/1.8/gems/radiant-0.6.0/vendor/ rails/activerecord/lib/active_record/vendor/mysql.rb:1177:in`finalizer’  
from /opt/local/lib/ruby/gems/1.8/gems/radiant-0.6.0/vendor/  
rails/actionpack/lib/action\_controller/routing.rb:642:in `call' from /opt/local/lib/ruby/gems/1.8/gems/radiant-0.6.0/vendor/ rails/actionpack/lib/action_controller/routing.rb:642:in`initialize’  
from /opt/local/lib/ruby/gems/1.8/gems/radiant-0.6.0/vendor/  
rails/actionpack/lib/action\_controller/routing.rb:845:in `new' from /opt/local/lib/ruby/gems/1.8/gems/radiant-0.6.0/vendor/ rails/actionpack/lib/action_controller/routing.rb:845:in`segment\_for’  
from /opt/local/lib/ruby/gems/1.8/gems/radiant-0.6.0/vendor/  
rails/actionpack/lib/action\_controller/routing.rb:822:in  
`segments_for_route_path' from /opt/local/lib/ruby/gems/1.8/gems/radiant-0.6.0/vendor/ rails/actionpack/lib/action_controller/routing.rb:950:in`build’  
from /opt/local/lib/ruby/gems/1.8/gems/radiant-0.6.0/vendor/  
rails/actionpack/lib/action\_controller/routing.rb:1172:in `add_route' ... 39 levels... from /opt/local/lib/ruby/gems/1.8/gems/radiant-0.6.0/vendor/ rails/railties/lib/commands/server.rb:39 from /opt/local/lib/ruby/site_ruby/1.8/rubygems/ custom_require.rb:27:in`gem\_original\_require’  
from /opt/local/lib/ruby/site\_ruby/1.8/rubygems/  
custom\_require.rb:27:in `require’  
from ./script/server:3

…and the offending code:

def activate  
admin.tabs.add “Testimonials”, “/admin/testimonials”, :after =\>  
“Layouts”, :visibility =\> [:all]  
require “custom\_in\_place\_editing”  
end

-Karl
