Quero que algo assim fique bonito:
>> 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">]
Isso não 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\">]"
E nem isso:
>> 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"
Pensamentos?
ruby-on-rails
irb
Tom Lehman
fonte
fonte
YAML::ENGINE.yamler = 'syck'
..irbrc
, outras ferramentas do console ou outras configurações do console (como ser um desenvolvedor contratado com acesso limitado a um contêiner / servidor de produção )Você deve tentar hirb . É uma jóia feita para formatar objetos bonitos no console ruby. Sua sessão de script / console ficaria assim:
Você pode aprender mais sobre o hirb em sua página inicial .
fonte
Impressão impressionante também é boa se você quiser um objeto recuado. Algo como:
Para integrá-lo por padrão ao seu console irb / rails / pry, adicione ao seu
~/.irbrc
ou~/.pryrc
arquivo:fonte
Simplesmente funciona bem!
Fonte: https://stackoverflow.com/a/4830096
fonte
Também pode ser observado que você pode usar:
para saída no formato Json em vez de Yaml
fonte
Oi, você também pode tentar isso no seu script / console se
não está trabalhando para você.
Tente o seguinte:
então
fonte
Eu tive alguns problemas para fazê-lo funcionar, então adicionarei meus dois centavos a awesome_print e adicione isso ao seu Gemfile, de preferência em
:development
gem 'awesome_print', require: 'ap'
então em
rails console
você pode fazer
> ap Model.all
É isso aí. No entanto, você também pode adicionarpara o seu ~ / .irbrc, desta forma awesome_print será necessário sempre que você abrir o console e você pode simplesmente
Model.all sem a necessidade de digitar ap
fonte
Você também pode tentar o seguinte para um grupo de objetos
Isso fornecerá uma saída muito melhor , como
Chamando
to_yaml
atributos em vez do próprio objeto evita que você visualize o conteúdo completo do objeto na saídaOu
puts Object.last.attributes.to_yaml
para um único objetoA taquigrafia também está disponível:
y Object.last.attributes
fonte
Penso que esta solução é a mais precisa. Você deve tentar o seguinte:
Isso lhe dará uma saída super agradável comparada ao formato YAML:
fonte
Use
irbtools
gema.Formatará automaticamente a saída do console, além de obter muitos recursos excelentes.
fonte
Você pode definir o método de inspeção do ProductColor para retornar algo que achar interessante. Por exemplo:
Após o qual o resultado de ProductColor.all será exibido como algo como [<1 - Branco (Branco)>, ...]. Obviamente, você deve ajustar o método de inspeção às suas necessidades, para que ele exiba todas as informações necessárias no estilo que você gosta.
Editar: também se o problema foi a falta de quebras de linha na saída, você pode tentar
que deve inserir quebras de linha quando apropriado
fonte
require 'pp'
não é possível emrails console --sandbox
. Por alguma razão, recebofalse
quando tento exigirpp
. Opa! parece quepp
já é exigido por padrão norails console
. Acabei de fazerpp Model.connection_handler
e consegui grandes impressões bonitas. Obrigado.require
retornarfalse
, isso significa que o arquivo já foi carregado.inspect
não é exibido ao fazer apenasProductColor.all
?Para adicionar à sugestão do Alter Lago para usar o AwesomePrint, se você não pode / não deve / não deseja adicionar a gema awesome_print ao Gemfile do seu projeto, faça o seguinte:
gem install awesome_print
Edite ~ / .irb.rc e adicione:
$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'
(Certificando-se de que o caminho e a versão estejam corretos, é claro)
fonte