Comment puis-je imprimer chaque élément d'un tableau sur une ligne dans la console Rails?
Quand je lance la console Rails, comment puis-je afficher chaque élément sur sa propre ligne? Au lieu de
> Post.all
=> #<ActiveRecord::Relation [#<Post id: 1, title: "Post #0", comment: nil, link: "http://yahoo.com", user_id: 1, created_at: "2013-09-30 02:29:28", updated_at: "2013-09-30 02:29:28">, #<Post id: 2, title: "Post #1", comment: nil,...
il affichait un
> Post.all
=> #<ActiveRecord::Relation [
#<Post id: 1, title: "Post #0", comment: nil, link: "http://yahoo.com", user_id: 1, created_at: "2013-09-30 02:29:28", updated_at: "2013-09-30 02:29:28">,
#<Post id: 2, title: "Post #1", comment: nil,...
Similaire à x
dans le débogueur Perl. J'ai essayé
Post.tous les.chaque{|e| e.inspecter + "\n"}
Mais qui ne fait qu'empirer les choses, et n'était pas très pratique.
J'ai vu Ruby on Rails: pretty print pour la variable.hash_set.inspecter ... est-il un moyen de pretty print .inpsect dans la console? et https://github.com/michaeldv/awesome_print
mais cela ne semble pas fonctionner
irb(main):005:0> require "awesome_print"
=> false
irb(main):006:0> ap Post.all
#<ActiveRecord::Relation [#<Post id: 1, title: "Post #0",
Notez que
Post.all
ne pas retourner un tableau, mais un ActiveRecord::Relation
. Pour un vrai Array
vous avez besoin #to_a
.OriginalL'auteur Chloe | 2013-12-24
Vous devez vous connecter pour publier un commentaire.
Essayer:
Chose à noter ici est que
puts
fonction ajoute automatiquement un caractère de saut de ligne après la déclaration, et si vous utilisez à la placeprint
il fonctionnera de manière similaire, commeputs
sans le caractère de saut de ligne à la fin.Si vous utilisez awesome_print, essayez:
En outre, lorsque vous émettez la première commande, la sortie sera répété à la fin (comme par votre commentaire) pour afficher la sortie de l'expression actuelle. Vous pouvez le supprimer en ajoutant un ; (point-virgule) à la fin de la commande, comme ceci:
Merci,
ap Post.all.to_a
travaillé! Avec des couleurs pas moins!mise à jour de la réponse.
Le point-virgule astuce ne semble pas fonctionner avec des Rails 4. Il semble ignorer l'intégralité de la déclaration. Mais cela fonctionne:
Post.all.each { |e| puts e.inspect };1
qui imprime un 1 à la fin.devrait fonctionner. Le
semi-colon
permettra d'éviter la sortie de l'ensemble de l'expression/de commande. Donc, si votre commande explicitement imprime quelque chose il sera imprimé, même avec la <kbd>;</kbd>. Essayez de lancer:puts "help"
vsputs "help";
dans votre console.OriginalL'auteur Stoic
Essayer:
OriginalL'auteur vee