😊

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

2023/04/23に公開4

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

TakeTake

初めまして!

記事について大変に参考になりました!(フォローさせて頂きました)
また、GitHubのプロフィールがとてもリッチで参考にしたいと思いました!

よろしければ、GitHubのプロフィールを作成する際に、参考にしたサイトなどがございましたら教えていただけると嬉しいです!

よろしくお願いします🙇‍♂️

TakeTake

ご返信ありがとうございます!(Zennのフォローも感謝です!)

こちらとても使いやすいですね!
(早速 Readme を作成してみました)

ささやかなお礼ですが、バッジをお送りしました。
今後ともよろしくお願いします🙇‍♂️

AirichanAirichan

すごい行動の速さ...!👀
バッチ...!うれしいですありがとうございます!!
こちらこそ今後ともよろしくお願いします(^^)/