2016-04-08 8 views
0

Ich versuche, eine Konsole zu meinem Ruby-cli Anwendung (ähnlich wie die Rails-Konsole) hinzuzufügen, aber ich kann nicht eine Lösung zu finden scheinen, das tut, was ich brauche:Aktivieren einer Konsole für eine Ruby-App

  • Colorization & Syntax
  • Fähigkeit Hervorhebung in Variablen zu übergeben oder den aktuellen Kontext verwenden

ich möchte pry verwenden, aber ich kann nicht herausfinden, wie Sie den Code Kontext deaktivieren aus gedruckt werden zu Beginn der Sitzung. Ich möchte, dass es die Sitzung sofort startet, ohne etwas außer der Aufforderung auszudrucken.

Hier ist, was gerade gedruckt wird, wenn die hebeln Sitzung beginnt:

Frame number: 0/8 

From: <file_path> @ line <#> <Class>#<method>: 

    71: def console 
    72: client_setup 
    73: puts "Console Connected to #{@client.url}" 
    74: puts 'HINT: The @client object is available to you' 
    75: rescue StandardError => e 
    76: puts "WARNING: Couldn't connect to #{@client.url}" 
    77: ensure 
    78: Pry.config.prompt = proc { "> " } 
    79: binding.pry 
=> 80: end 
> 

Hier ist, was ich will:

> 

Ich habe auch versucht ein paar andere Lösungen, aber hier ist mit jeder meine Probleme :

  • IRB: Nein Einfärben, nicht anpassbar scheinen
  • ripl: Kein Einfärben oder Syntax

Gibt es hier Hilfe hervorheben würde sehr geschätzt!

+0

Es sieht so aus, als ob Sie versuchen, Ihr Programm Pry laden zu lassen, aber ich denke, die richtige Lösung ist, dass Pry Ihr Programm lädt. Fügen Sie den Code ein, den Sie ausführen möchten, bevor die Pry-Eingabeaufforderung in einer Datei mit dem Namen 'setup.rb' angezeigt wird. Dann starte Pry mit 'pry -r setup.rb'. –

Antwort

0

Was ich am Ende eine ziemlich einfache/leere Klasse ist die Definition zu tun bis zu binden:

class Console 
    def initialize(client) 
    @client = client 
    end 
end 

Dann in meiner Konsole Methode:

Pry.config.prompt = proc { '> ' } 
Pry.plugins['stack_explorer'] && Pry.plugins['stack_explorer'].disable! 
Pry.start(Console.new(@client)) 

Deaktivieren der stack_explorer verhindert es die Rahmennummer Infos von Druck, und im Inneren der Pry-Sitzung, ich kann wie erwartet auf @client zugreifen.

0

Wir in der Regel eine separate ausführbare Datei wie bin/Konsole in unserem Projekt erstellen und dort Inhalte dieser ähnlich setzen:

#!/usr/bin/env ruby 

require_relative "../application" 

require "pry" 
Pry.start 

Wo application.rb eine Datei ist, die Edelsteine ​​über Bündler lädt und mit dem notwendigen Anwendung Dateien, so dass es möglich ist, Anwendungsklassen in der Konsole zu verwenden.

Es ist einfach, Ihre Konsole mit nur ./bin/console Befehl von Ihrem Terminal zu starten.

Wenn Sie das Aussehen der Konsole dann offizielle Wiki bei GitHub hat genügend Informationen über diese anpassen müssen: https://github.com/pry/pry/wiki/Customization-and-configuration

+0

Danke @SunnyMagadan. Ich mache das alles bereits innerhalb eines Thor-Clis, und es gibt einen Setup-Code, den ich für andere CLI-Befehle verwenden und teilen möchte. Die Hauptsache, nach der ich suche, ist, welche Option eingestellt werden kann, damit der Code vor dem Start der Sitzung nicht gedruckt wird. Ich konnte das im Wiki nicht finden. – jsmartt

+0

... oder wenn ich herausfinden kann, wie man eine neue leere Bindung erstellt und eine Variable darin platziert, wäre das auch großartig. – jsmartt

Verwandte Themen