tutorial sintaxis rails español ejemplos curso comandos caracteristicas aprender ruby-on-rails irb

ruby on rails - sintaxis - Cómo obtener un buen formato en la consola de Rails



ruby on rails tutorial español (11)

Deberías probar hirb . Es una gema hecha para dar formato bonito a los objetos en la consola ruby. Su secuencia de comandos / consola se vería así:

>> require ''hirb'' => true >> Hirb.enable => true >> ProductColor.first +----+-------+---------------+---------------------+---------------------+ | id | name | internal_name | created_at | updated_at | +----+-------+---------------+---------------------+---------------------+ | 1 | White | White | 2009-06-10 04:02:44 | 2009-06-10 04:02:44 | +----+-------+---------------+---------------------+---------------------+ 1 row in set => true

Puede obtener más información sobre hirb en su homepage .

Quiero que algo como esto se vea bien:

>> ProductColor.all => [#<ProductColor id: 1, name: "White", internal_name: "White", created_at: "2009-06-10 04:02:44", updated_at: "2009-06-10 04:02:44">, #<ProductColor id: 2, name: "Ivory", internal_name: "Ivory", created_at: "2009-06-10 04:02:44", updated_at: "2009-06-10 04:02:44">, #<ProductColor id: 3, name: "Blue", internal_name: "Light Blue", created_at: "2009-06-10 04:02:44", updated_at: "2009-06-10 04:02:44">, #<ProductColor id: 4, name: "Green", internal_name: "Green", created_at: "2009-06-10 04:02:44", updated_at: "2009-06-10 04:02:44">]

Esto no funciona:

>> ProductColor.all.inspect => "[#<ProductColor id: 1, name: /"White/", internal_name: /"White/", created_at: /"2009-06-10 04:02:44/", updated_at: /"2009-06-10 04:02:44/">, #<ProductColor id: 2, name: /"Ivory/", internal_name: /"Ivory/", created_at: /"2009-06-10 04:02:44/", updated_at: /"2009-06-10 04:02:44/">, #<ProductColor id: 3, name: /"Blue/", internal_name: /"Light Blue/", created_at: /"2009-06-10 04:02:44/", updated_at: /"2009-06-10 04:02:44/">, #<ProductColor id: 4, name: /"Green/", internal_name: /"Green/", created_at: /"2009-06-10 04:02:44/", updated_at: /"2009-06-10 04:02:44/">]"

Y tampoco hace esto:

>> ProductColor.all.to_yaml => "--- /n- !ruby/object:ProductColor /n attributes: /n name: White/n created_at: 2009-06-10 04:02:44/n updated_at: 2009-06-10 04:02:44/n id: /"1/"/n internal_name: White/n attributes_cache: {}/n/n- !ruby/object:ProductColor /n attributes: /n name: Ivory/n created_at: 2009-06-10 04:02:44/n updated_at: 2009-06-10 04:02:44/n id: /"2/"/n internal_name: Ivory/n attributes_cache: {}/n/n- !ruby/object:ProductColor /n attributes: /n name: Blue/n created_at: 2009-06-10 04:02:44/n updated_at: 2009-06-10 04:02:44/n id: /"3/"/n internal_name: Light Blue/n attributes_cache: {}/n/n- !ruby/object:ProductColor /n attributes: /n name: Green/n created_at: 2009-06-10 04:02:44/n updated_at: 2009-06-10 04:02:44/n id: /"4/"/n internal_name: Green/n attributes_cache: {}/n/n"

¿Pensamientos?


El método y es una forma práctica de obtener un poco de salida YAML.

y ProductColor.all

Asumiendo que estás en script/console

Como comentó jordanpg, esta respuesta está desactualizada. Para Rails 3.2+ necesita ejecutar el siguiente código antes de poder hacer funcionar el método y :

YAML::ENGINE.yamler = ''syck''

De ruby-docs

En versiones anteriores de Ruby, es decir. <= 1,9, todavía se proporciona Syck, sin embargo, se eliminó por completo con el lanzamiento de Ruby 2.0.0.

Para rieles 4 / ruby ​​2 puede usar solo

puts object.to_yaml


Es posible que desee definir el método de inspección de ProductColor para devolver algo que le parezca agradable. Por ejemplo:

def inspect "<#{id} - #{name} (#{internal_name})>" end

Después de lo cual, el resultado de ProductColor.all se mostrará como [<1 - Blanco (Blanco)>, ...]. Por supuesto, debe ajustar el método de inspección según sus necesidades, de modo que muestre toda la información que necesita en un estilo que le guste.

Editar: también si el problema es la falta de saltos de línea en la salida, puede intentar

require ''pp'' pp ProductColor.all

que debe insertar saltos de línea cuando corresponda


Hola, también puedes probar esto en tu script / consola si

>> y ProductColor.all

no funciona para ti

Prueba esto:

>> require ''yaml'' >> YAML::ENGINE.yamler = ''syck''

entonces

>> y ProductColor.all


Para agregar a la sugerencia de Alter Lago para usar AwesomePrint, si no puedes / no quieres / no quieres agregar la gema awesome_print al Gemfile de tu proyecto, haz esto:

gem install awesome_print

Edite ~ / .irb.rc y agregue esto:

$LOAD_PATH << ''/Users/your-user/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/gems/1.9.1/gems/awesome_print-1.1.0/lib''

require ''awesome_print''

(Asegurándose de que la ruta y la versión son correctas, por supuesto)


También puedes probar lo siguiente para un grupo de objetos

Object.all.map(&:attributes).to_yaml

Esto te dará un resultado mucho mejor , como

--- id: 1 type: College name: University of Texas --- id: 2 type: College name: University of California

Llamar to_yaml en atributos en lugar de en el objeto mismo le evita ver el contenido completo del objeto en la salida

O puts Object.last.attributes.to_yaml para un solo objeto

La abreviatura también está disponible: y Object.last.attributes


También se puede notar que puede usar:

j ProductColor.all.inspect

para salir en formato Json en lugar de Yaml


Tuve algunos problemas para hacerlo funcionar, así que agregaré mis dos centavos a awesome_print. Añádalo a su Gemfile, preferiblemente en :development

gem ''awesome_print'', require: ''ap''

luego en

rails console

tu puedes hacer

> ap Model.all Eso es todo. Sin embargo, también puedes agregar

require "awesome_print" AwesomePrint.irb!

a su ~ / .irbrc, de esta manera se requerirá awesome_print cada vez que abra la consola y simplemente puede hacer

Model.all sin la necesidad de escribir ap


Usa la gema de irbtools

Formateará automáticamente la salida de la consola y obtendrá toneladas de excelentes funciones.


Impresionante impresión también es agradable si quieres un objeto con sangría. Algo como:

$ rails console rails> require "awesome_print" rails> ap Account.all(:limit => 2) [ [0] #<Account:0x1033220b8> { :id => 1, :user_id => 5, :assigned_to => 7, :name => "Hayes-DuBuque", :access => "Public", :website => "http://www.hayesdubuque.com", :toll_free_phone => "1-800-932-6571", :phone => "(111)549-5002", :fax => "(349)415-2266", :deleted_at => nil, :created_at => Sat, 06 Mar 2010 09:46:10 UTC +00:00, :updated_at => Sat, 06 Mar 2010 16:33:10 UTC +00:00, :email => "[email protected]", :background_info => nil }, [1] #<Account:0x103321ff0> { :id => 2, :user_id => 4, :assigned_to => 4, :name => "Ziemann-Streich", :access => "Public", :website => "http://www.ziemannstreich.com", :toll_free_phone => "1-800-871-0619", :phone => "(042)056-1534", :fax => "(106)017-8792", :deleted_at => nil, :created_at => Tue, 09 Feb 2010 13:32:10 UTC +00:00, :updated_at => Tue, 09 Feb 2010 20:05:01 UTC +00:00, :email => "[email protected]", :background_info => nil } ]

Para integrarlo por defecto con su consola irb / rails / pry, agregue a su ~/.irbrc o ~/.pryrc :

require "awesome_print" AwesomePrint.irb! # just in .irbrc AwesomePrint.pry! # just in .pryrc


>> puts ProductColor.all.to_yaml

Simplemente funciona bien!

Fuente: https://.com/a/4830096