#99
Creating a Basic Gem
9-24-2017
Summary
Gems are a packaged library of functions that can extend your application or provide other features to your system. Learn to create and publish a ruby gem.
13
ruby
gem
9:32
Summary
Gems are a packaged library of functions that can extend your application or provide other features to your system. Learn to create and publish a ruby gem.
13
Resources
Ruby Gems - https://rubygems.org
Source - https://github.com/driftingruby/099-creating-a-basic-ruby-gem
Summary
Terminal# Create gem template
bundle gem leftpad
# Run specs test
rspec spec
# Build and compress the gem
gem build leftpad.gemspec
# Publish gem to rubygems.org
gem push leftpad-1.2.1.gem
# Install specific gem from local file
gem install leftpad-1.2.1.gem
# Uninstall gem from local source
gem uninstall leftpad
# Install gem from rubygems.org
gem install leftpad
leftpad.gemspec# coding: utf-8
lib = File.expand_path("../lib", __FILE__)
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
require "leftpad/version"
Gem::Specification.new do |spec|
spec.name = "leftpad"
spec.version = Leftpad::VERSION
spec.authors = ["Dave Kimura"]
spec.email = ["[email protected]"]
spec.summary = %q{A gem for left padding text.}
spec.description = %q{This gem is forever.}
spec.homepage = "https://www.driftingruby.com/episodes/creating-a-basic-gem"
spec.license = "MIT"
spec.files = `git ls-files -z`.split("\x0").reject do |f|
f.match(%r{^(test|spec|features)/})
end
spec.bindir = "exe"
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
spec.require_paths = ["lib"]
spec.add_development_dependency "bundler", "~> 1.15"
spec.add_development_dependency "rake", "~> 10.0"
spec.add_development_dependency "rspec", "~> 3.0"
# spec.add_dependency "rspec", "~> 3.0"
end
Gemfilesource "https://rubygems.org"
git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
# Specify your gem's dependencies in leftpad.gemspec
gemspec
lib/leftpad.rbrequire "leftpad/version"
module Leftpad
def leftpad(chars, filler = ' ')
self.rjust(chars, filler)
end
end
class String
include Leftpad
endlib/leftpad/version.rbmodule Leftpad
VERSION = "1.2.2"
end
spec/leftpad_spec.rbrequire "spec_helper"
RSpec.describe Leftpad do
it "has a version number" do
expect(Leftpad::VERSION).not_to be nil
end
it "leftpad with no padding char" do
expect('left'.leftpad(8)).to eq(' left')
end
it "leftpad with padding char" do
expect('left'.leftpad(8, '0')).to eq('0000left')
end
it "leftpad with fewer padding char" do
expect('left'.leftpad(2, '0')).to eq('left')
end
end