:lib in config.gem

Hi -- I'm confused what :lib in config.gem().

When do I need it to specify? What should I specify? I know that I need to put the name of the library, but the name is always the same with the gem name?

Also do I need to add "require 'the_library'" when I actually use it somewhere in Rails? Or does the config.gem() runs "require" statement as well?

Sorry for the stupid questions.

- Jon

Hi Jon,

rails automatically requires a gem loaded by config.gem. how does rails know what to require? That's what you specify with :lib. If you do not specify :lib, rails tries to require the name of the gem.

so, for example requiring the simple-navigation gem:

config.gem 'simple-navigation'

tries to require 'simple-navigation', which does not work, so you have to specify

config.gem 'simple-navigation, :lib => 'simple_navigation'

- Andi

Hi Jon,

Another instance where you will need to explicitly use the :lib option
is for gems you download and install from GitHub, where gem names are
typically prefixed with the author's name:

config.gem "greatseth-mediainfo", :lib => 'mediainfo'

Peter

Peter Vandenberk wrote:

Hi Jon,

Another instance where you will need to explicitly use the :lib option is for gems you download and install from GitHub, where gem names are typically prefixed with the author's name:

config.gem "greatseth-mediainfo", :lib => 'mediainfo'

Peter

What about :lib false? I read somewhere that by using this the gem doesn't actually load or something? I read this here: Finally getting GetText to work with Rails 2.2 | require 'brain'. Can someone explain this please?

Thanks in advance!

Hi – I’m confused what :lib in config.gem().

When do I need it to specify?

What should I specify? I know that I need to put the name of the

library, but the name is always the same with the gem name?

Also do I need to add “require ‘the_library’” when I actually use it

somewhere in Rails? Or does the config.gem() runs “require” statement

as well?

Sorry for the stupid questions.

In short, if the gem name differs from the library name that one would

require, then you’ll need to tell Rails by specifying the name of this library

like

config.gem “gem-name”, :lib => “lib-name”

For example,

config.gem “sqlite3-ruby”, :lib => “sqlite3”

config.gem “aws-s3”, :lib => “aws/s3”

Good luck,

-Conrad

What about :lib false? I read somewhere that by using this the gem doesn't actually load or something? I read this here: Finally getting GetText to work with Rails 2.2 | require 'brain'. Can someone explain this please?

It's basically as the poster say:

this ensures they are installed, but will not load them

When you bootstrap the Rails environment (server, console, runner, etc.) it won't "require" any gems that have ":lib => false" specified, but Rails still "knows" about these gems, so things like "rake gems:install" still work as expected.

Hope this helps,

Peter