Telling Bundler to exclude certain gems from a par

2019-02-10 12:07发布

问题:

Within a gemfile, is there any way to tell Bundler something like:

gem 'twitter-bootstrap-rails', :exclude therubyracer

I need to install twitter-bootstrap-rails but it automatically pulls therubyracer in, so bundle install fails and bootstrap isn't included in the project since this is a Windows machine. I installed execjs to no avail.

I tried to list therubyracer under production, and bundle install --without production, also to no avail.

"therubyracer gem on windows" is also this problem, but none of the suggestions there change the error I'm getting.

My old thread was "When I do "bundle update", I get an error from a gem not in my gemfile. How do I ignore this dependency?".

回答1:

There is no option for this in Bundler.

So you're left with these options:

  • Don't use twitter-bootstrap-rails. You can just copy the compiled css and js files into the proper directories under vendor/assets. You'll lose the ability to change less variables. Or you can use the compass_twitter_bootstrap gem, which uses sass instead of less.

  • Get the maintainer of the less gem to use execjs instead of commonjs and therubyracer. It would probably mean significant refactoring for the maintainer(s) if at all possible.

  • Use the :platform option in your Gemfile, to only install on OSX or Linux. Then require the parts you can use by hand, without loading less. This probably won't work.