Что современный путь состоит в том, чтобы структурировать рубиновый драгоценный камень?

Очень изменился с выпуском Bundler? Существует ли шаблон, который может использоваться в качестве основы? Каковы лучшие практики?

37
задан grk 22 July 2010 в 08:56
поделиться

3 ответа

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

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

Подводя итог ключевым моментам:

  • Используйте базовую структуру lib / gem.rb и lib / gem / для кода.
  • Поместите все исполняемые файлы в bin , любые файлы данных в data и тесты в test или spec .
  • Не требует и не зависит от файлов вне пути загрузки.( ВЕРСИЯ файлы часто находятся в странных местах в драгоценных камнях.)
  • Не требуют 'rubygems' .
  • Не изменяйте $ LOAD_PATH .
  • Если вы пишете require File.join (__ FILE__, 'foo', 'bar') , значит, вы делаете это неправильно.
39
ответ дан 27 November 2019 в 04:48
поделиться

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

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 /

4
ответ дан 27 November 2019 в 04:48
поделиться

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

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

4
ответ дан 27 November 2019 в 04:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: