Bem como "prometi" no post passado, como criar minha prorpia gem, caso não tenha visto dá uma olhada antes. Então, hoje vamos mostrar como publicar nossa gem.

Primeiramente você precisa criar uma conta no rubygems.org

E para testar nossa gem, vamos criar um projeto rails.

$ rails new test_my_gem
$ cd test_my_gem

Mas antes de publicarmos nossa gem, vamos usa-la localmente, só para facilitar algum ajuste que precise ser feito. Para usarmos nossa gem localmente é só adicioanar em nosso Gemfile a linha abaixo

# Gemfile
gem 'array_to_average', path: '/path/to/gem/array_to_average'

rode bundle:

$ bundle install

Agora vamos gerar uma página inicial:

$ rails g controller home index

Minhas rotas

Rails.application.routes.draw do
  root to: 'home#index'
end

Meu controller

# app/controllers/home_controller.rb

class HomeController < ApplicationController
  def index
    @calculate = ArrayToAverage::Calculate.new([7, 5, 8])
  end
end

Minha view

# app/controllers/home_controller.rb

< h3>Como usar minha gem< /h3>

< div>Números: < b>< %= @calculate.numbers.join(' - ') %>< /b>< /div>
< div>Média: < b>< %= number_with_precision @calculate.average, precision: 2 %>< /b>< /div>

Bem depois disso rode um rails s e acesse http://localhost:3000 provavelmente irá aparecer o conteúdo abaixo:


Como usar minha gem

Números: 7 - 5 - 8
Média: 6.67

Bem é isso, já está funcionando só que não vou ficar com todas gems rodando na minha máquina. Por esse motivo, vamos publica-la no rubygems.org

Isso já foi feito no post passado, mas vamos do ínicio. Quando o código da sua gem estiver pronto, você precisa:

  • Gerar a gem gem build array_to_average.gemspec
  • Ao tentar publicar minha gem pela primeira vez, eu tive o seguinte error:

ERROR: "https://rubygems.org" is not allowed by the gemspec, which only allows "TODO: Set to 'http://mygemserver.com'"

Isso acontegeu porque eu me esqueci de ajustar uma especificação da gem, para resolver isso procure o essa linha spec.metadata['allowed_push_host'] = "TODO: Set to 'http://mygemserver.com'" no arquivo array_to_average.gemspec e subistitua por essa spec.metadata['allowed_push_host'] = "https://rubygems.org"

Rode novamente o um gem build array_to_average.gemspec e agora sim, para subir rode um gem push array_to_average.gemspec

Último passo é remover o path no ruby gem no projeto rails. Troque isso gem 'array_to_average', path: '/path/to/gem/array_to_average' por isso gem 'array_to_average', '~> 0.0.1' no Gemfile do seu projeto rails.

Bem é isso pessoal até mais.

Alguns comandos

bundle gem array_to_average # cria gem
gem build array_to_average.gemspec # gera gem
gem push array_to_average-0.0.1.gem # publica gem

Links

  • https://github.com/wfsneto/array_to_average
  • https://rubygems.org/gems/array_to_average
  • https://github.com/wfsneto/test_my_gem