😊

[Ruby] gemファイルにある、`require: false`って何??

2023/04/23に公開

gemファイルにある、require: false って何??

  • これは自動読み込みされないようにするためのオプション
    require: falseを指定すると、自動読み込みしないようになる。
    ( = :require => falseと指定するとBundler.requireを実行しても、
    ロードされない,ということ。)

  • アプリ起動時には読み込む必要がないものにrequire: falseを指定することで,
    起動時のメモリ消費を抑え、アプリケーションの起動速度を向上させることができる。

ex. 例えば、RSpec. これはアプリ起動時には必要ないですね。

group :test do
  gem 'rspec', require: false
end

gem が require される仕組み

rubygem: boundler

config/apprlication.rb
このファイル内で以下の記述があります。

Bundler.require(*Rails.groups)

この処理によってGemfileに記載されているgemが依存関係を含めて、
ロードすることができるようになっている。
=>Bundlerが呼び出されていて、そこでGemfile内のGem及び依存関係を列挙してくれてる

  • bundlerとは
    gemの依存関係とバージョンを管理するためのツール。
    bundle install
    作成されたGemfileをもとにgemをインストールするコマンドがbundle install
    railsと依存関係のあるgemが全てインストールされる。
  • gemfile.lock
    Gemfileにgemを列挙、「bundler install」でgemをインストールすると、
    gemfile.lock」というファイルが生成される。
    インストールしたgemのバージョンを記載して保存しておくもの。
    ⇒ 一度「gemfile.lock」ができると、使用するgemのバージョンが変わったりしません。
    = gemのバージョンを固定して開発中に問題がおきないようにしている!
    開発時と本番環境運用時で、gemのバージョンの違いにより、
    rubyプログラムが動かなくなることがないよう、gemのバージョンを固定(lock)してくれるためのもの。

ということで、書かれている(書かなければいけない時について)理由は把握できましたが、
そもそもの "Ruby"について、Rubyの仕組みについてを学ぶ必要がありそうです....

最近アルゴリズムの勉強もはじめ、Rubyで解いていますが、
この期間Ruby on Railsをメインに学習してきたので、Rubyについての知識の浅さを体感しています。

頑張りましょ!

Discussion