リンクで、多くの「require」ステートメントを追加する必要はないと彼が言うとき、彼はs.files
、s.executables
、およびs.test_files
配列にファイルを追加することを意味しているに違いありません。これらは、どのファイルが gem にパッケージ化され、どのファイルが無視されるかを決定します。 . gem 仕様からわかるように、特定のディレクトリで git によって追跡されるものはすべて、パッケージ化された gem に含まれます。
Ruby のrequire
場合は別の話です。標準の require ルールは引き続き適用されます。
Ruby の gem システムは、実行時に Ruby が "foo.rb" を探すためのさまざまな場所を追加することで機能しますrequire "foo"
。Ruby がlib/my_gem.rbのコードのみを実行する場合"lib"
、gem の唯一の必須パスである場合。lib/my_gem.rbが gem 内の他のファイルでない場合、Ruby はそれらを認識していないため、それらのファイルのクラスを使用しようとすると、未定義の定数エラーが発生します。require "my_gem"
require
たとえば、私が書いた 2 つの単純な gem を見てください。どちらもHashToHiddenFieldsと SimpleStatsbundle gem
で始まりました。両方の gem で、 lib/にあるメインの Ruby ファイルには、gem が正しく動作するためにロードする必要があるすべてのものが必要です。たとえば、hash_to_hidden_fields.rbにはaction_view/helpers/hash_to_hidden_ fields が必要です。これにより、定数 + モジュールが存在し、それを に含めることができます。ActionView::Helpers::HashToHiddenFields
ActionView::Base
それが質問に答えることを願っています。しばらくの間、Ruby の要求がかなり曖昧だったことは知っています。