Search code examples
ruby-on-railspluginsdependenciesrails-enginesgemspecs

How to add dependency of a local gem to a rails plugin/engine, in .gemspec file


I had tried in this way:

 s.add_dependency 'gem', :path => '../gem'

like add gem in the gemfile, but it doesn't work, and will cause this error:

/Users/chenqh/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/requirement.rb:81:in `parse': Illformed requirement 

Solution

  • It's likely not possible to add local dependencies because other users will not be able to access the gem as it is local dependent and hence of no use after publish. Instead of that, Add remote dependency in your own plugin's gemspec.

    Steps -

    1) Open gemspec file of your own plugin in vendor/plugins/my_plugin/ and add before the keyword end:

    s.add_dependency('will_paginate', '~> 3.0.pre2')
    

    (In this example I have used will_paginate required dependency of my_plugin)

    2) Now go in your rails app and edit Gemfile, add:

    gem 'my_plugin', path: 'vendor/plugins/my_plugin'
    

    3) Now in rails app root do:

    bundle install
    

    And dependency of my_plugin (will_paginate in this case) is installed.