Ruby on Rails Monday, September 28, 2015

Hi Colin,

On Mon, Sep 28, 2015 at 11:00 PM Colin Law <clanlaw@gmail.com> wrote:
I am developing a rails gem.  It uses the gon gem so in the gemspec
file I have included

spec.add_dependency 'gon'

Then in the Gemfile for the application using my gem I have put

gem 'my_gem', :path => '/path/to/dir/containing/my_gem'

When I run bundle install I see that it includes my gem and also the
gon gem as expected.
From a view helper in the app I am calling helper method in a module
in my gem's lib folder, and in there I have code such as
gon.variable = ...
and that code throws an error
ActionView::Template::Error (undefined method `gon' for
#<PlotValuesController:0x000000067bbc30>)
where PlotValuesController is the controller in the app.  If I
explicitly include gon in the Gemfile for the app then all works as
correctly.

Any suggestions as to why I have to explicitly include gon in the
application's Gemfile, when it is included anyway via the dependency
in my gem?

If I recall correctly, your gem is a Rails engine. It's a bit late and I might be wrong, but a gem doesn't auto require other gems.

So to fix it, you need to require 'gon' in your gem (probably in your lib/your_gem_name.rb file).

A good example is Devise: https://github.com/plataformatec/devise/blob/master/lib/devise.rb. They do also a lot of stuff in between, but you can see the that ir requires the ORM, and Warden and other dependencies.

Hope it works,
// Marco


Gemfile.lock with and without gon included explicitly can be seen at
http://pastebin.com/vzvNgg3K

Colin

--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-talk+unsubscribe@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/CAL%3D0gLuh7_ni44oG%3DTu5yVpAd4B16tzFg%2BEY6ewXcKJ2XPWQXQ%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-talk+unsubscribe@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/CACMkcE5%2BSgQgKA3pCTOieY75-Cw6f__k2wm%2BcWtdtnBhVBuMLA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

No comments:

Post a Comment