Ответ 1
Есть несколько инструментов, которые помогут вам построить свои собственные драгоценные камни. hoe и newgem являются самыми известными, и имеют много хороших качеств. Однако мотыга добавляет себя как зависимость от вашего драгоценного камня, а newgem стал очень крупным инструментом, который я нахожу громоздким, когда хочу быстро создать и развернуть драгоценный камень.
Моим любимым инструментом является Mr Bones от пользователя Tim Pease. Его легкий, функциональный и не добавляет зависимости к вашему проекту. Чтобы создать проект с ним, вы просто запустите bones <my_project_name>
в командной строке, а для вас создан скелет, в комплекте с каталогом lib
для вашего кода, bin
для ваших инструментов и тестовый каталог, Конфигурация находится в Rakefile
, и ее ясность и краткость. Вот конфигурация для проекта, который я сделал несколько месяцев назад:
load 'tasks/setup.rb'
ensure_in_path 'lib'
require 'friend-feed'
task :default => 'test'
PROJ.name = 'friend-feed'
PROJ.authors = 'Clinton R. Nixon'
PROJ.email = '[email protected]'
PROJ.url = 'friend-feed.rubyforge.org'
PROJ.rubyforge_name = 'friend-feed'
PROJ.dependencies = ['json']
PROJ.version = FriendFeed::VERSION
PROJ.exclude = %w(.git pkg)
Mr Bones имеет стандартный набор функций, которые вы ожидаете: вы можете использовать его для упаковки драгоценных камней и tar файлов вашей библиотеки, а также выпускать его на RubyForge и размещать там свою документацию. Его функцией убийцы, однако, является ее способность заморозить свой скелет в вашем домашнем каталоге. Когда вы запустите bones --freeze
, каталог с именем .mrbones
будет скопирован в ваш домашний каталог. Вы можете редактировать файлы там, чтобы создать скелет для ваших драгоценных камней, который работает так, как вы работаете, и с тех пор, когда вы запускаете кости для создания нового драгоценного камня, он будет использовать ваш персональный скелет драгоценного камня. Вы можете разморозить мистера Боунса, запустив bones --unfreeze
, и ваш скелет будет скопирован, а скелет по умолчанию будет снова использован.
(Редакционное примечание: я написал сообщение в блоге об этом несколько месяцев назад, и большая часть этого копируется из него.)