<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>MouseOver Studio &#187; newgem</title>
	<atom:link href="http://www.mouseoverstudio.com/blog/category/newgem/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.mouseoverstudio.com/blog</link>
	<description></description>
	<pubDate>Wed, 25 Aug 2010 02:03:38 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5</generator>
	<language>en</language>
			<item>
		<title>Criando gems com GemHub, nunca foi tão simples</title>
		<link>http://www.mouseoverstudio.com/blog/2008/10/27/criando-gems-com-gemhub-nunca-foi-tao-simples/</link>
		<comments>http://www.mouseoverstudio.com/blog/2008/10/27/criando-gems-com-gemhub-nunca-foi-tao-simples/#comments</comments>
		<pubDate>Mon, 27 Oct 2008 23:48:27 +0000</pubDate>
		<dc:creator>Diego Carrion</dc:creator>
		
		<category><![CDATA[Github]]></category>

		<category><![CDATA[gem]]></category>

		<category><![CDATA[gemhib]]></category>

		<category><![CDATA[hoe]]></category>

		<category><![CDATA[newgem]]></category>

		<category><![CDATA[sow]]></category>

		<category><![CDATA[gemhub]]></category>

		<guid isPermaLink="false">http://www.mouseoverstudio.com/blog/?p=147</guid>
		<description><![CDATA[Quando queremos criar uma RubyGem basicamente o que temos que fazer é criar um simples projeto e especificar ela num arquivo chamado de gemspec. Muito mais simples deveria ser utilizar uma das ferramentas existentes que criam uma estrutura básica para a criação de uma gem e depois somente completar a base com nosso código de [...]]]></description>
			<content:encoded><![CDATA[<p>Quando queremos criar uma <a href="http://www.rubygems.org/">RubyGem</a> basicamente o que temos que fazer é criar um simples projeto e especificar ela num arquivo chamado de gemspec. Muito mais simples deveria ser utilizar uma das ferramentas existentes que criam uma estrutura básica para a criação de uma gem e depois somente completar a base com nosso código de negócio. Vejamos quais opções temos:</p>
<ul>
<li><a href="http://newgem.rubyforge.org/">New Gem Generator</a></li>
<li>Hoe</li>
</ul>
<p><strong>Eu não gosto de nenhum dos dois.</strong></p>
<p>Eu não acho os dois projetos ruins, mas acho que geram muita coisa para minhas necessidades. </p>
<p><strong>O problema</strong></p>
<p>O newgem do Dr. Nic foi criado para trabalhar com gems que irão ser hospedadas no <a href="http://rubyforge.org/">RubyForge</a>, pelo que além do mais básico, cria também documentos para serem utilizados como website.</p>
<p>A primeira gem que eu criei, <a href="http://rhyme.rubyforge.org/">Rhyme</a>, foi hospedada no RubyForge, pelo que o newgem me serviu bastante. Porém, não tenho mais interesses de hospedar futuras gems la porque o GitHub cumpre minhas necessidades e porque o RubyForge resultou ser meio burocrático. Para hospedar Rhyme la, a gem teve que passar por um processo de aceitação.</p>
<p>Já o sow (do Hoe) cria uma estrutura básica bem mais simples. O que não gosto do sow é que ele cria a estrutura de testes baseada no <a href="http://www.ruby-doc.org/stdlib/libdoc/test/unit/rdoc/classes/Test/Unit.html">Test::Unit</a> e também uma pasta bin para colocar scripts que puderam ser chamados a partir do terminal quando a gem for instalada. A maioria das gems não precisam dessa pasta pelo que eu acho ela desnecessária para um template minimalista.</p>
<p>Mas isso não é tudo, tanto o newgem como o sow criam um arquivo chamado Manifest.txt, que eu não preciso, e um arquivo History.txt, que também não preciso. Quer saber o histórico da gem? Acessa o repositório no GitHub e da um click em <em>History</em>, pronto! Somente para terminar, ambos também criam um README com um monte de <em>FIX</em> (url, description, features/problem, synopsis, requirements e install) em formatos que não me agradam muito (rdoc e txt).</p>
<p><strong>A solução</strong> </p>
<p>É por tais motivos apresentados que decidi criar um novo gerador de gem, pegando o melhor do newgem e do sow. Como ele é totalmente pensado e amoldado para trabalhar com o GitHub, decidi chamar ele de <a href="http://github.com/dcrec1/gemhub/tree/master">GemHub</a>:</p>
<pre class="prettyprint">sudo gem install dcrec1-gemhub</pre>
<p>Quando o GemHub for executado ele ira criar uma estrutura para criar gems com somente os arquivos que você realmente precisa, incluindo um README.textile com a <a href="http://www.opensource.org/licenses/mit-license.php">licença MIT</a> para ser mostrado na pagina do projeto no GitHub.</p>
<p>Mas que arquivos são exatamente esses? Nada melhor para um exemplo que um caso real:</p>
<pre class="prettyprint">dcrec1:tmp dcrec1$ gemhub tetris
      create
      create  lib
      create  spec
      create  lib/tetris.rb
      create  spec/tetris_spec.rb
      create  README.textile
      create  Rakefile</pre>
<p>Como da para apreciar, GemHub vem preparado para trabalhar com RSpec, tanto que no Rakefile já existe uma task chamada spec que se encarrega de rodar os testes.</p>
<p>Uma vez gerado o projeto o que tem que ser feito é editar o arquivo Rakefile e especificar a descrição da gem, o autor, o e-mail e o site. Seguidamente criamos nossos testes e scripts nas pastas spec e lib e quando estivermos prontos para publicar a gem podemos executar a seguinte tarefa que ira criar o gemspec:</p>
<pre class="prettyprint">rake make_spec</pre>
<p>Se quisermos criar a gem para verificar se o gemspec esta certo e/ou quisermos instalar a gem localmente podemos executar os seguintes comandos:</p>
<pre class="prettyprint">rake gem
rake install</pre>
<p>E isso é todo galera, espero não ter esquecido de nada. Tomara que a produção de gems aumente porque criar uma gem nunca foi tão simples!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mouseoverstudio.com/blog/2008/10/27/criando-gems-com-gemhub-nunca-foi-tao-simples/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
