Question: I want to write a gem that adds a `app/services` directory to a Rails application.

Since I want to add it from within the Gem i came up with this solution:

```
class Railtie < ::Rails::Railtie
  config.after_initialize do |app|
    ::Rails.logger.info "adding #{ActiveService::Configuration.path} to autoload_path"
    app.config.autoload_paths = [ActiveService::Configuration.path] + app.config.autoload_paths
  end
end

```

The problem is that `config.autoload_path` is a frozen array, so that modifing it seems not to be a good idea. 

Any suggestions of how this could be achieved in a better way?

Answer: 
`config.autoload_paths` is frozen inside the [`:set_autload_paths` initializer](https://github.com/rails/rails/blob/v3.0.9/railties/lib/rails/engine.rb#L160). The Array is passed on to `ActiveSupport::Dependencies.autoload_paths`, so modifying the original Array would not make much sense. Therefore it's frozen.

You should be able to hook into `:before => :set_autoload_paths` and extend `config.autoload_paths` before it's passed and frozen:

```
class Railtie < ::Rails::Railtie
  initializer 'activeservice.autoload', :before => :set_autoload_paths do |app|
    app.config.autoload_paths << ActiveService::Configuration.path
  end
end

```

Documentation about initializer hooks can be found at [guides.rubyonrails.org/initialization.html](http://guides.rubyonrails.org/initialization.html)
First, all directories under app/\* are already in the load path since Rails 3.0. In any case, if you want to do it, you should use the paths api instead. Example from Rails source code:

<https://github.com/rails/rails/blob/master/railties/lib/rails/engine/configuration.rb#L42>