При использовании `bundle gem floob`, почему создается каталог с тем же именем, что и у гема? - PullRequest
0 голосов
/ 11 мая 2018

Я делаю свой первый драгоценный камень.Предположим, это называется floob.Например: bundle gem floob

Зачем bundle gem создавать два каталога с одинаковым именем для драгоценного камня?Например: /floob/lib/floob/

Должен ли я поместить большую часть кода в /lib/floob/ (вместе с файлом version.rb?)

Какова цель файла, созданного с помощьюназвание драгоценного камня?Например: /floob/lib/floob.rb

Единственный запуск команды был bundle gem.

Мне бы хотелось немного разъяснить, каковы отношения между всеми floobs ~

1 Ответ

0 голосов
/ 12 мая 2018

Причина этой "двухуровневой" структуры заключается в том, что в конечном итоге /floob/lib будет папкой, которая добавляется к пути загрузки Ruby require.

Таким образом, если вы положите floob.rb в /floob/lib, вы можете загрузить его с помощью:

require 'floob' 

Это также дает возможность отделить подкомпоненты, такие как version.rb, в пространстве имен floob, поместив их в /floob/lib/floob. Это означает, что теперь вы можете делать такие вещи, как:

require 'floob/version'
require 'floob/base'
require 'floob/core'
etc..

Если /floob был непосредственно добавлен в путь загрузки, то было бы трудно отделить код от таких вещей, как README файлы, gemspecs или другие активы, такие как изображения, двоичные двоичные объекты, файлы настроек YAML или заглушки bin .

Теперь реальный код будет жить под lib, а все остальное можно красиво поместить в папки прямо под /floob, не мешая функционалу кода или пути загрузки.

Также обратите внимание, что в большинстве случаев вы не должны помещать в /floob/lib ничего, кроме floob.rb, так как в противном случае вы будете загрязнять глобальное пространство имен пути загрузки. Вместо этого весь остальной код должен быть помещен в /floob/lib/floob, а затем вы поместите require код в floob.rb для загрузки этих файлов, как я описал выше.

Таким образом вы сохраняете путь загрузки чистым, а компоненты хорошо отделены друг от друга.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...