Resumen Presentación Ruby Meetup

Cambios a .irbrc

El archivo de configuración de irb esta en ~/.irbrc.

Le pueden poner las funciones que quieran.

El método que se me hace mas útil es la que nos permite mandar cosas al clipboard en OS X:

# este metodo lo encontré en algún lado del internet
class Object
  def to_clipboard(msg = nil, &block)
    msg ||= block.call.to_s
    Kernel.open("|pbcopy", "w+") { |f| f.write msg } if msg && !msg.empty?
  end
end

githooks para evitar commits tronados

Como les platicaba, cada uno de sus repositorios de git trae unos hooks que se corren cuando ustedes hacen ciertas cosas, como al momento de hacer un commit. El hook llamado pre-commit se hace justo antes de hacer el commit. Dependiendo de lo que regrese el script pre-commit, git decide si procede o no con el commit.

Estos los pueden encontrar en el directorio .git/hooks. Este es un listado de esos archivos.

-rwxr-xr-x  1 ed staff  452 Jul 24  2015 applypatch-msg.sample
-rwxr-xr-x  1 ed staff  896 Jul 24  2015 commit-msg.sample
-rwxr-xr-x  1 ed staff  189 Jul 24  2015 post-update.sample
-rwxr-xr-x  1 ed staff  398 Jul 24  2015 pre-applypatch.sample
-rwxr-xr-x  1 ed staff 1642 Jul 24  2015 pre-commit.sample
-rwxr-xr-x  1 ed staff 1356 Jul 24  2015 pre-push.sample
-rwxr-xr-x  1 ed staff 4951 Jul 24  2015 pre-rebase.sample
-rwxr-xr-x  1 ed staff 1239 Jul 24  2015 prepare-commit-msg.sample
-rwxr-xr-x  1 ed staff 3611 Jul 24  2015 update.sample

Si queren evitar hacer commits a algo que no cumpla con lo que ustedes quieran, simplemente edit el script llamado pre-commit y asegúrense que tiene permisos de ejecución.

OJO: los archivos que vienen en el directorio de hooks tienen la extensión .sample, son viles ejemplos. Editarlos no los hará funcionar. Creen su archivo sin esa extensión.

Yo tengo dos revisiones que me ayudan mucho en proyectos de Rails:

#!/usr/bin/env ruby

flag = false
# modifiquen esto si quieren revisar otros paths o para
# proyectos de no rails
Dir["{app,config,lib,runners}/**/*/*.rb"].each do |file|
  result = `ruby -c #{file}`

  if $? != 0
    puts result
    flag = true
  end
end

Dir["public/javascripts/**/*.js"].each do |file|
  result = `grep -n console #{file}`

  if $? == 0
    puts file
    puts result
    flag = true
  end
end

exit 1 if flag

gems de uso comun