# Convention for using initializers end environments in engine

**URL:** <https://www.ruby-forum.com/t/convention-for-using-initializers-end-environments-in-engine/180361>\
**Category:** Engines\
**Created:** [December 18, 2009, 12:56pm UTC](https://www.ruby-forum.com/t/convention-for-using-initializers-end-environments-in-engine/180361 "2009-12-18T12:56:54Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![unknown](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/u/4bbf92/32.png) [@unknown](https://www.ruby-forum.com/u/unknown)\
**Post date:** [December 18, 2009, 12:56pm UTC](https://www.ruby-forum.com/t/convention-for-using-initializers-end-environments-in-engine/180361/1 "2009-12-18T12:56:54Z")

</div>

Hi Guys,

First of all great job with an extremely useful plugin infrastructure.

Ive been looking at migrating part of some existing code into an engine  
within rails 2.3. Essentially trying to modularize some code. We have  
different config for different environments and also may end up using  
initializers. So far I have managed to get it to work by replicating the  
same directory structure in the main rails app and including the  
following code in the init.rb file in the plugin.

require ‘ruby-debug’

engine\_directory = File.expand\_path(File.join(File.dirname( **FILE** )))

config.after\_initialize do

Dir[File.join(engine\_directory,  
“config/initializers/\*\*/\*.rb”)].sort.each do |engine\_initializer|

```
initializer.require_or_load(engine_initializer)

```

end

engine\_environment\_path="#{engine\_directory}/config/environments/#{confi  
g.environment}.rb"

constants = self.class.constants

eval(IO.read(engine\_environment\_path), binding,  
engine\_environment\_path)

(self.class.constants - constants).each do |const|

```
Object.const_set(const, self.class.const_get(const))

```

end

end

Everything seems to work but was wondering what the best  
practice/convention was for doing this.

Thanks,

Venura

---

<div class="post-metadata">

**Author:** ![unknown](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/u/4bbf92/32.png) [@unknown](https://www.ruby-forum.com/u/unknown)\
**Post date:** [December 18, 2009, 4:46pm UTC](https://www.ruby-forum.com/t/convention-for-using-initializers-end-environments-in-engine/180361/2 "2009-12-18T16:46:55Z")

</div>

> require ‘ruby-debug’

I assume you’ll take that out in production 🙂  
-r

---

<div class="post-metadata">

**Author:** ![unknown](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/u/4bbf92/32.png) [@unknown](https://www.ruby-forum.com/u/unknown)\
**Post date:** [December 18, 2009, 5:29pm UTC](https://www.ruby-forum.com/t/convention-for-using-initializers-end-environments-in-engine/180361/3 "2009-12-18T17:29:03Z")

</div>

That and also the numerous debugger statements!

Venura
