Help us understand the problem. What is going on with this article?

Bundlerでビルドオプションを指定する

More than 1 year has passed since last update.

gemコマンドでインストール時に

$ gem install nokogiri -- --use-system-libraries

というようにオプションを指定するとき、bundlerではどうやるのってなったので調べてみました

やり方

bundle installをする前に

$ bundle config build.nokogiri --use-system-libraries

というコマンドを叩くと、~/.bundle/config(プロジェクトルート下ではなくホームディレクトリであることに注意)という設定ファイルに以下の様な設定が追記されます。

~/.bundle/config
---
BUNDLE_BUILD__NOKOGIRI: "--use-system-libraries"

次回以降bundle installするときはそのオプションが適応されるようになります。

また、--localオプションをつけることで、ホームディレクトリ下ではなくプロジェクト単位の設定ファイルに設定を付与することができるようです。(@msfukuiさん多謝!)

$ bundle config --local build.nokogiri --use-system-libraries
You are replacing the current local value of build.nokogiri, which is currently nil

Bundlerの設定の読み込み先と設定項目の確認

Bundlerの設定は

  1. Railsルート下の .bundle/config
  2. 環境変数
  3. ユーザのホームディレクトリ下の .bundle/config

の3箇所から読み込まれ、この順番に設定を探します。

設定したBundlerの項目は、bundle configで確認することができます。

$ bundle config
Settings are listed in order of priority. The top value will be used.
build.nokogiri
Set for the current user (/home/vagrant/.bundle/config): "--use-system-libraries"

path
Set for your local app (/var/www/public/sample_app/.bundle/config): "vendor/bundle"

disable_shared_gems
Set for your local app (/var/www/public/sample_app/.bundle/config): "1"

どこの設定ファイルに書いてあるのか、ユーザーに紐付いているのかローカルアプリに紐付いているのかも書いていますね。
bundle install --path vendor/bundleとしたときの--pathの情報も書いてあるのがわかります。

また、RailsコンソールからもBundler.settings["設定項目"]で確認できるようです。

$ rails c
> Bundler.settings["build.nokogiri"]
=> "--use-system-libraries"

参考

bundle install で、gem install のオプションを指定する方法
bundle config

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした