Para obtener un buen comienzo, puede usar el comando bundle gem
y rspec --init
.
~/code $ bundle gem my_lib
create my_lib/Gemfile
create my_lib/Rakefile
create my_lib/LICENSE.txt
create my_lib/README.md
create my_lib/.gitignore
create my_lib/my_lib.gemspec
create my_lib/lib/my_lib.rb
create my_lib/lib/my_lib/version.rb
Initializating git repo in /Users/john/code/my_lib
~/code $ cd my_lib/
~/code/my_lib $ git commit -m "Empty project"
~/code/my_lib $ rspec --init
The --configure option no longer needs any arguments, so true was ignored.
create spec/spec_helper.rb
create .rspec
- código va en
lib
- especificaciones van en
spec
- datos de prueba o documentos van en
spec/fixtures/
- Exigir que todos los archivos de rubí en
lib/my_lib.rb
. Puede definir sus excepciones también en el archivo o en sus propios archivos, de acuerdo con sus propias preferencias.
- archivos de origen C van en
ext/my_lib
- shell scripts y ejecutables van en
bin
En caso de duda, basta con ver cómo otras gemas que están expuestos.
Más información:
se debe añadir rspec como una dependencia de desarrollo en su gemspec para facilitar las cosas para otros desarrolladores
- Editar my_lib.gemspec, añadiendo
gem.add_development_dependency 'rspec'
y gem.add_development_dependency 'rake'
cerca El fondo.
- Agregue
Bundler.setup
y require 'my_lib'
a la parte superior de spec/spec_helper.rb para asegurarse de que sus dependencias gemelas se carguen cuando ejecute sus especificaciones.
- Agregue
require "rspec/core/rake_task"
y task :default => :spec
a su Rakefile, por lo que ejecutar rake
ejecutará sus especificaciones.
Mientras que usted está trabajando en su más reciente creación, guard-rspec se puede ahorrar tiempo y molestias por automáticamente la publicación de sus especificaciones a medida que cambian los archivos, alertando a las especificaciones que fracasos.
~/code/my_lib $ git add spec/spec_helper.rb
~/code/my_lib $ git commit -am "Add RSpec"
~/code/my_lib $ vim my_lib.gemspeC# add guard development dependency
~/code/my_lib $ bundle
~/code/my_lib $ bundle exec guard init
~/code/my_lib $ vim Guardfile # Remove the sections below the top one
~/code/my_lib $ git add Guardfile
~/code/my_lib $ git commit -am "Add Guard"
Después de que esté satisfecho con su creación, empujarlo hasta github
# create a github repository for your gem, then push it up
~/code/my_lib $ curl -u myusername https://api.github.com/user/repos -d '{"name":"my_lib"}'
~/code/my_lib $ git remote add origin [email protected]:myusername/my_lib.git
~/code/my_lib $ git push
Luego, cuando esté listo para liberar su joya en Rubygems.org, ejecute rake release
, que caminará a través de los pasos.
~/code/my_lib $ rake release
Referencias adicionales
Pregunta relacionada: http://stackoverflow.com/questions/614309/ideal-ruby-project-structure –