1

I want to add a library that I wrote to a Rails app (and to other Rails apps later). I tried putting it in /lib which seemed logical...

[RAILS_ROOT]/lib/my_lib/the_main_file.rb
[RAILS_ROOT]/lib/my_lib/some_other_file.rb

Then...

require 'my_lib/the_main_file'

That works fine.

But is that a great way to do it?

Now I have to put that require everywhere I want to call the library.

I thought about putting the require in an initializer but that seems kind of weird.

What do people usually do about this?

Ethan
  • 55,081
  • 62
  • 184
  • 236

3 Answers3

1

I'm not sure about the "best practices"(tm) or anything, but we do a similar thing for our project as well. The library is in lib, and the require in an initializer (app_config.rb in our case). This seems like a good way to do things, and hasn't bitten us in the butt thus far :) Hope that helps.

William
  • 3,505
  • 26
  • 34
1

Using an initializer may look weird when you have a single file to include, but sometimes I have many files that I want to add, and end up using an intializer that only includes stuff. It's actually pretty neat.

vise
  • 11,833
  • 10
  • 51
  • 63
0

I usually wrap up my stuff in classes. If you add config.autoload_paths += %W(#{config.root}/lib) to your application.rb then any reference to a missing constant will result in an attempt to autoload it, i.e just using MyClass.new will make it try to load `lib/my_class.rb'.

Have a look at Best way to load module/class from lib folder in Rails 3?

Community
  • 1
  • 1
einarmagnus
  • 3,427
  • 1
  • 20
  • 31