Configuracion puerto e IP Rails 2

El script server acepta los parametros -p y -b para especificar en que IP y puerto escucha el servidor de Rails.

Uno esperaría que esas opciones se pudiesen indicar también en un fichero de configuración, por ejemplo en el directorio config. Sin embargo, parece que WEBrick no contempla esa posibilidad. Se puede editar directamente el fichero vendor/rails/railties/lib/commands/server.rb, pero no me parece muy elegante.

A falta de algo mejor, una forma de configurar esos parámetros de Rails es modificando ARGV en script/server:

ARGV<< “–port=PUERTO”
ARGV<< “–binding=IP”

Cositas interesantes de Ruby

Una pequeña chuleta de Ruby, con cosas previsibles y otras más interesantes….

a = if a<0
  a * -1
else
  a

a = a<0 ? a * -1 : a

a= a * -1 unless a>=0
variable = '' if variable.nil?
variable = '' unless variable
variable ||= ''

# Patrones
case palabra
  when /[a-z].*/ then "minusculas"
  when /[A-Z].*/ then "mayusculas"
  else "otro"
end
# Patron "insensible al caso"
print "Coinciden!" if /ABC/i =~ "1abc2"
nombre_variable
@atributo
 NombreClase

# hash table
colores = { "rojo" => 0, "verde" => 1, "azul" => 2}
colores["verde"]

# Cadenas
print "123456" [0..2]
# "123"
print "Azul #{colores["azul"]}"
print %q{"Muchas '"comillas' '" escapadas"" :-)}
# q => escape total, Q => interpreta bloques #{}
print %Q{"Estamos en #{Time.now.year}"}

while vs. until

array.each {|element| print element}
colores.each {|clave,valor| ... }
colores.map { |c| c[0].upcase }
# ["ROJO", "VERDE", "AZUL"]

 # numero de parametros variable, parametros por defecto
def funcion (param1, param2=0, *otros)
  otros.each { |p| ... }
end

# bloques
def traza(mensaje)
    $stderr.puts("#{Time.now} - comienzo #{mensaje}")
    $stderr.puts(yield)
    $stderr.puts("#{Time.now} - fin #{mensaje}")
end
def traza(mensaje, &bloque)
    $stderr.puts("#{Time.now} - comienzo #{mensaje}")
    $stderr.puts(bloque.call)
    $stderr.puts("#{Time.now} - fin #{mensaje}")
end
traza('suma') { 2 + 2 }

at_exit do { puts "Fin" }

set_trace_func proc { |evento, fichero, linea, id, vinculo , clase|
 puts "#{evento} en #{fichero}:#{linea} #{id} #{clase}"
}
print "Test"

File.open("fichero") do |f|
  f.puts("123")
end

# Otra forma sencilla de rastrear un script es usar el "Tracer" de la biblioteca estándar:
ruby -rtracer script.rb

class A < B
  def m1
  end
  def m2
  end
  private
  # a partir de private, los metodos son privados
  def m3
  end
end

Buenas prácticas:

  • Usar dos espacios en vez de tabuladores
  • ClasesCamello, serpientes_para_el_resto, INCLUIDAS_CONSTANTES