Каков современный способ структурирования рубинового камня? - PullRequest
35 голосов
/ 22 июля 2010

Многое изменилось с выпуском Bundler?Есть ли шаблон, который можно использовать в качестве базы?Каковы лучшие практики?

Ответы [ 5 ]

37 голосов
/ 22 июля 2010

Некоторые посты, которые я нашел полезными:

Редактировать (2012-01-10): отличное всестороннее руководство по лучшим практикам драгоценных камней - RubyGems Guides . Я очень рекомендую начать здесь и сейчас.

Суммируя ключевые моменты:

  • Используйте базовую структуру lib/gem.rb и lib/gem/ для кода.
  • Поместите любые исполняемые файлы в bin, любые файлы данных в data и тесты в test или spec.
  • Не require или зависеть от файлов за пределами пути загрузки. (VERSION файлы часто кажутся нечетными местами в драгоценных камнях.)
  • Не require 'rubygems'.
  • Не вмешиваться в $LOAD_PATH.
  • Если вы обнаружите, что пишете require File.join(__FILE__, 'foo', 'bar'), вы делаете это неправильно.
6 голосов
/ 23 февраля 2014

Самый простой способ использования связка :

bundle gem <gem_name>

Вы даже можете использовать его в существующем проекте из родительского каталога.

4 голосов
/ 23 июля 2010

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

Вы также можете попробовать использовать ювелир.Это драгоценный камень, который генерирует скелеты для драгоценных камней.Скелет по умолчанию, который он выкладывает, соответствует всем упомянутым соглашениям Telemachus, и он также будет делать некоторые приятные вещи, такие как добавление вашей любимой тестовой среды или создание репозитория GitHub.

4 голосов
/ 22 июля 2010

При написании толстых (бинарных) драгоценных камней структура обычно такая:

lib/1.8/binary.so

lib/1.9/binary.so

lib/my_gem.rb (этот файл просто выбирает, какой binary.so загрузить в зависимости от версии ruby)

И для собственных расширений:

lib/ext/my_gem/my_sources.*

lib/my_gem.rb

Я также обычно помещаю сюда файл version.rb:

lib/my_gem/version.rb

и просто содержит что-то вроде:

module MyGem
    VERSION = "0.1.0"
end

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

3 голосов
/ 11 мая 2014

Это руководство rubygems содержит информацию о структуре драгоценного камня, а затем подробно рассказывает о том, что должно быть включено в gemspec

Возможно, вам будет проще использовать bundler для создания структуры папок для драгоценного камня:

bundle gem <gem_name>

my_gem$ bundle gem my_gem create my_gem/Gemfile create my_gem/Rakefile create my_gem/LICENSE.txt create my_gem/README.md create my_gem/.gitignore create my_gem/my_gem.gemspec create my_gem/lib/my_gem.rb create my_gem/lib/my_gem/version.rb Initializing git repo in /Users/keith/projects/my_gem/my_gem

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