Rails console

Una cosa que me sorprendió y que encuentro una genial idea de Rails es el modo console que trae el framework.

El modo consola permite ir testeando código antes de ponerlo de manera definitiva dentro del proyecto, con eso no tener que hacer un largo proceso para ir probando el avance en funcionalidades.

 

Para hacerlo andar, solo se debe ejecutar rails console, un ejemplo “testeando” una entidad en el modelo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
➜  rails git:(master) ✗ rails console
Loading development environment (Rails 4.1.4)
irb(main):001:0> customer = Customer.new()
=> #
irb(main):002:0> customer.name = 'Gran partner INC'
=> "Gran partner INC"
irb(main):003:0> customer.valid?
=> false
irb(main):004:0> customer.admin_id = 1
=> 1
irb(main):005:0> customer.valid?
=> false
irb(main):006:0> customer.type_pay = 1
=> 1
irb(main):007:0> customer.valid?
=> true
irb(main):008:0> customer.new_record?
=> true
irb(main):009:0> customer.save
   (2.2ms)  BEGIN
  SQL (1.3ms)  INSERT INTO "customer" ("admin_id", "name", "type_pay") VALUES ($1, $2, $3) RETURNING "id"  [["admin_id", 1], ["name", "Gran partner INC"], ["type_pay", 1]]
   (5.9ms)  COMMIT
=> true
irb(main):010:0> puts customer
#
=> nil
irb(main):011:0> puts customer.id
7
=> nil
irb(main):012:0>

Leer Más

Reload zsh

Durante el último año he estado utilizando como shell por defecto a zsh, supervitaminizada con Oh-My-ZSH, es un conjuno de piezas de software que hacen más fácil el trabajo en la terminal.

Algo que necesitaba es poder luego de editar el archivo de configuración es que dicha configuración se recargue de manera “automática”, es tips lo obtuve desde How to reload Zsh config de CodeMonk3y.com y son dos alías.

Debes editar tu archivo de configuración ~/.zshrc y agregar

1
2
alias reload=". ~/.zshrc && echo 'ZSH config reloaded from ~/.zshrc'"
alias zshrc="vim ~/.zshrc && reload"

Luego en la terminal si quieres editar el archivo tipeas

zshrc

Luego al guardar se van a ver reflejados dichos cambios.  ¡Simplemente genial!

 

Leer Más

Models, migrate y schema desde base de datos para Rails

Como para poder iniciar el proyecto partí por la base de datos, debía en Rails poder hacer “ingeniería inversa” desde la base de datos para generar los modelos, la migración inicial como su respectivo esquema.

 

Para lo anterior utilice para generar el schema.rb el comando

rake db:schema:dump

Lo anterior debe hacerse luego de configurado el config/database.yml

Ya con el schema (config/schema.rb) hice el primer archivo para la migración. Este lo creo en db/migrate/001_create_database.rb con el siguiente contenido
1
2
3
4
5
6
7
class CreateDatabase < ActiveRecord::Migration
  def up
 
   #Contenido del schema.rb
  end
 
end

 

La idea anterior la tome desde https://www.ruby-forum.com/topic/124328#553469

Ya con esto debo generar los modelos, para esto use rmre dichos modelos los copio en app/models

 

 

 

 

 

Leer Más

Problema con Sqlautocode y SqlAlchemy

Para poder generar inicialmente los modelos en relación a la base de datos para la capa de comunicación con Asterisk en Python me decidí usar SqlAutoCode.

Como ORM estoy usando SqlAlchemy en su versión 0.9.6, pero al generar el modelo de clases con SqlAutoCode me daba un error.

Traceback (most recent call last):
  File "/usr/local/bin/sqlautocode", line 9, in <module>
    load_entry_point('sqlautocode==0.7b5', 'console_scripts', 'sqlautocode')()
  File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 351, in load_entry_point
    return get_distribution(dist).load_entry_point(group, name)
  File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2363, in load_entry_point
    return ep.load()
  File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 2088, in load
    entry = __import__(self.module_name, globals(),globals(), ['__name__'])
  File "build/bdist.linux-i686/egg/sqlautocode/main.py", line 4, in <module>
  File "build/bdist.linux-i686/egg/sqlautocode/declarative.py", line 17, in <module>
ImportError: cannot import name _deferred_relation

La solución la encontré en los issues del proyecto un parche que soluciona esto

Leer Más