gem_template ·
Рус, есть какой-нить шаблон для гемов, чтобы мозга не е*ать?
Че по факту?
- ты теперь можешь в гемы (тут есть все: шаблонный проект для гема, настройка сиайки, rubocop, прогон тестов - рай для пацана);
- клонируй репу;
- переименовывай
gem_template.gemspec
,lib/gem_template.rb
,lib/gem_template/
; - читай, че написано ниже;
- потом уже можешь делать себе
gem build твой_гем.gemspec
иgem push твой_гем-x.x.x
(x.x.x - это версия); - радуйся - ты бахнул свой гем, ты теперь пацан;
- Че по билду?
- Че надо менять?
- А че менять в gemspec?
- Че по спекам?
- А че делать с фичами?
- Как тебя поддержать, братан?
Че по билду?
- весь билд гонится в
TravisCI
; - весь конфиг в
.travis.yml
, тамrubocop
иrspec
в билде дляjruby-head
,ruby-head
и[email protected]
; - настраивай как тебе надо, если надо (ты справишься);
- в этом ридми есть два баджика (глаза разуй) - посмотри в сорцы ридми-файла и возьми их себе (это баджики на гем-вершн и травис-билд-статус);
Че надо менять?
gem_template_rb.gemspec
- переименовывай в название своего гема (типаsmart_core.gemspec
)- переименуй
lib/gem_template.rb
иlib/gem_template
в свои названия (типа вlib/smart_core.rb
и вlib/smart_core/
) - в
spec_helper.rb
поменяйrequire 'gem_template'
на свой гем-реквайр (типаrequire 'smart_core'
); - и константы
module GemTemplate
не забудь поменять (типа наmodule SmartCore
илиclass SmartCore
);
А че менять в *.gemspec ?
В комментах ниже написано, че делать:
# frozen_string_literal: true
require_relative 'lib/gem_template/version' # МЕНЯЙ НА СВОЙ ПУТЬ
Gem::Specification.new do |spec|
spec.required_ruby_version = Gem::Requirement.new('>= 2.7.0') # СТАВЬ СВОЮ ВЕРСИЮ
spec.name = 'gem_template_rb' # МЕНЙ НА ИМЯ СВОЕГО ГЕМА
spec.version = GemTemplate::VERSION # МЕНЯЙ НА ПУТЬ ДО СВОЕЙ VERSION-КОНСТАНТЫ
spec. = ['Rustam Ibragimov'] # МОЖЕШЬ ОСТАВИТЬ. ОТДАЙ МНЕ СВОЙ ГЕМ
spec.email = ['[email protected]'] # А ВОТ ЭТО МЕНЯЙ. НЕ ШЛИ МНЕ СПАМ, ОК?
spec.summary = 'Gem Template' # МЕНЯЙ НА ЧИСТО КРАТКОЕ ОПИСАНИЕ
spec.description = 'Рус, есть какой-нить шаблон для гемов, чтобы мозга не е*ать?' # МЕНЯЙ НА ЧИСТО ДЛИННОЕ ОПИСАНИЕ
spec.homepage = 'https://github.com/0exp/gem_template' # УРЛ ДО СОРЦОВ ТВОЕГО ГЕМА ИЛИ ПРОМО-САЙТИКА
spec.license = 'MIT' # САМ СМОТРИ. СТАВЬ КАКУЮ ХОЧЕШЬ
spec.['homepage_uri'] = spec.homepage
spec.['source_code_uri'] = 'https://github.com/0exp/gem_template' # МЕНЯЙ НА СВОЙ УРЛ ДО СОРЦОВ
spec.['changelog_uri'] = 'https://github.com/0exp/gem_template/blob/master/CHANGELOG.md' # МЕНЯЙ НА СВОЙ УРЛ ДО ЧАНДЖЛОГА
spec.files = Dir.chdir(File.(__dir__)) do
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features1)/}) }
end
spec.bindir = 'exe'
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
spec.require_paths = ['lib']
# ГЕМЫ ДЛЯ ДЭВА. ЭТО МИНИМАЛ МАСТ-ХЭВ. ОСТАВЛЯЙ ВСЕ
spec.add_development_dependency 'bundler', '~> 2.1'
spec.add_development_dependency 'rake', '~> 13.0'
spec.add_development_dependency 'rspec', '~> 3.9'
spec.add_development_dependency 'armitage-rubocop', '~> 0.78'
spec.add_development_dependency 'simplecov', '~> 0.17'
spec.add_development_dependency 'pry', '~> 0.12'
end
Че по спекам?
.rspec
- по умолчаниюprogress
;spec/spec_helper.rb
- там сразу тебе SimpleCov 100% кавередж, рандом ордер спеков и четкий конфиг RSpec'а от меня;- в
spec/spec_helper.rb
поменяйrequire 'gem_template' на свой гем типа
require 'smart_core'
; - теперь можешь нормально в
bundle exec rspec
;
А че делать с фичами?
Записывай все в CHANGELOG.md. Там пример есть. И не тупи - делай, как написано.
Как тебя поддержать, братан?
Ищи меня на улицах.