2016-04-08 3 views
0

Я пытаюсь добавить консоль в приложение Ruby cli (как консоль Rails), но я не могу найти решение, которое мне нужно:Включение консоли для приложения Ruby

  • Colorization & подсветка синтаксиса
  • Возможность передавать переменные или использовать текущий контекст

Я хотел бы использовать pry, но я не могу понять, как отключить контекст кода от печатаемого в начале сессии. Я бы хотел, чтобы он сразу же начал сеанс, ничего не распечатывая вне подсказки.

Вот что в настоящее время печатается, когда подглядывать сессия начинается:

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 
> 

Вот что я хочу:

> 

Я также попробовал несколько других решений, но вот мои проблемы с каждым :

  • IRB: нет раскрашивание, не кажется, настраиваемый
  • ripl: Отсутствие подсветки или подсветки синтаксиса

Любая помощь здесь была бы принята с благодарностью!

+0

Похоже, вы пытаетесь загрузить свою программу Pry, но я думаю, что правильное решение - заставить Pry загружать вашу программу. Поместите код, который вы хотите запустить, до появления приглашения Pry в файле, называемом 'setup.rb'. Затем запустите Pry с помощью 'pry -r setup.rb'. –

ответ

0

То, что я в конечном итоге делает это определение довольно простой/пустой класс для связывания:

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

Тогда в моем методе консоли:

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

отключив stack_explorer помешало ему печатать данные номер кадра, и внутри Pry session, я могу получить доступ к @client, как и ожидалось.

0

Мы обычно создать отдельный исполняемый файл, как бен/консоли в нашем проекте и поместить туда содержимое, похожее на это:

#!/usr/bin/env ruby 

require_relative "../application" 

require "pry" 
Pry.start 

Где application.rb файл, который загружает драгоценные камни через Bundler и включает в себя все необходимые приложения связанных с файлами, поэтому в консоли можно будет использовать классы приложений.

Легко запустить консоль с помощью команды ./bin/console с вашего терминала.

Если вам нужно настроить внешний вид консоли, то официальный вики на GitHub имеет достаточно информации об этом: https://github.com/pry/pry/wiki/Customization-and-configuration

+0

Спасибо @SunnyMagadan. Я на самом деле все это делаю в Thor cli, и есть какой-то установочный код, который я бы хотел использовать и использовать для других команд cli. Главное, что я ищу, - это вариант, который можно отключить, чтобы код печатался до начала сеанса. Я не мог найти это в вики. – jsmartt

+0

... это или если я могу выяснить, как создать новое пустое связывание и поместить в него переменную, это тоже было бы здорово. – jsmartt

Смежные вопросы