Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Ruby pa' la banda

Ruby pa' la banda

Para compartir código en ruby existen algunos lineamientos que producen mejores resultados, esta plática habla del proceso de aprendizaje por el que pasé para crear librerías útiles para los usuarios de las mismas. Presentada en ChilangoRails.

Roberto Hidalgo

January 20, 2015
Tweet

More Decks by Roberto Hidalgo

Other Decks in Technology

Transcript

  1. "Minnakht 01" by English: Anonymous - Clio20. Licensed under CC

    BY-SA 3.0 http://commons.wikimedia.org/wiki/File:Minnakht_01.JPG#mediaviewer/File:Minnakht_01.JPG
  2. "Visualization of magnetic information on a Floppy Disk (CMOS-MagView)" by

    Matesy GmbH - Own work. Licensed under CC BY-SA 3.0 http://commons.wikimedia.org/wiki/ File:Visualization_of_magnetic_information_on_a_Floppy_Disk_(CMOS-MagView).jpg
  3. module  CFDI      #  La  clase  principal  para  crear

     Comprobantes      class  Comprobante          #  Crear  un  comprobante  nuevo          def  initialize  (data={},  options={})              #hack  porque  dup  se  caga  con  instance  variables              opts  =  Marshal::load(Marshal.dump(@@options))              data  =  opts[:defaults].merge  data              @opciones  =  opts.merge  options              data.each  do  |k,v|                  method  =  "#{k}="                  next  if  !self.respond_to?  method                  self.send  method,  v              end          end      end   end  
  4. module  CFDI     class  ParseError  <  StandardError    

    end     class  CFDIError  <  StandardError     end   end  
  5. require  'cfdi'   require  'json'   factura  =  CFDI::Comprobante.new  

    factura.emisor  =  {          rfc:  'un  RFC',          nombre:  'una  razón  social  o  nombre',          domicilioFiscal:  CFDI::Domicilio.new          expedidoEn:  CFDI::Domicilio.new          regimenFiscal:  'general'   }   #  porque  XML!  ES  LO  DE  HOY!  BIENVENIDOS  A  2001!   puts  factura.to_xml   #  O  talvez  evolucionamos  a  un  formato  de  intercambio  de   datos  menos  castroso   puts  JSON.pretty_generate(factura.to_h)
  6. #  -­‐*-­‐  encoding:  utf-­‐8  -­‐*-­‐   lib  =  File.expand_path('../lib',  __FILE__)

      $LOAD_PATH.unshift(lib)  unless  $LOAD_PATH.include?(lib)   require  'version'   Gem::Specification.new  do  |gem|      gem.name                    =  "cfdi"      gem.version              =  CFDI::VERSION      gem.authors              =  ["Roberto  Hidalgo"]      gem.email                  =  ["[email protected]"]      gem.description      =  "Comprobantes  fiscales  digitales  por  internet"      gem.summary              =  "Digitales!!  por  Internet!!"      gem.homepage            =  "https://github.com/unRob/cfdi"      gem.licenses            =  ['WTFPL',  'GPLv2']      gem.has_rdoc            =  true      gem.files                  =  `git  ls-­‐files`.split($/)      gem.executables      =  gem.files.grep(%r{^bin/}).map{  |f|  File.basename(f)  }      gem.test_files        =  gem.files.grep(%r{^(test|spec|features)/})      gem.require_paths  =  ["lib"]      gem.rdoc_options    =  '-­‐-­‐no-­‐private'            gem.add_runtime_dependency  'nokogiri',  '~>1.5.11'      gem.add_development_dependency  'rspec'   end  
  7. WTFPL Do What the Fuck You Want to Public License

    Licencia Pública Haz lo que te de tu Chingada Gana