Computer >> 컴퓨터 >  >> 프로그램 작성 >> Ruby

Ruby로 명령줄 애플리케이션(CLI)을 구축하는 방법

많은 사람들은 Ruby가 웹 애플리케이션이 아닌 일을 할 수 있다는 사실을 잊습니다. 이 기사에서는 이 문제를 해결하는 데 도움이 되는 명령줄 응용 프로그램을 빌드하는 방법을 보여 드리고자 합니다!

다음은 익숙할 수 있는 몇 가지 명령줄 응용 프로그램입니다.

  • psql
  • rails
  • bundler
  • gem
  • git

명령줄 응용 프로그램을 구축하는 방법에는 여러 가지가 있으며 이 기사에서는 그 중 세 가지에 중점을 둘 것입니다.

배울 내용 :

  • ARGV 어레이
  • OptParse 라이브러리
  • 토르의 보석

시작하겠습니다!

Ruby ARGV 상수

명령줄 응용 프로그램은 일반적으로 여러 옵션 또는 '플래그'를 사용합니다.

예를 들어 :

psql --help

Ruby에서 이러한 옵션에 어떻게 액세스할 수 있습니까?

ARGV 사용 배열.

argv.rb 파일에 다음 코드가 있는 경우 :

p ARGV

그리고 ruby argv.rb test abc 1 2 3를 사용하여 이 코드를 실행하면 , 당신은 이것을 얻을 것입니다:

["test", "abc", "1", "2", "3"]

모든 옵션이 포함된 어레이입니다!

옵션 파서를 구현하여 특정 옵션이 전달되었는지 확인할 수 있습니다.

예시 :

def process_argv(option)
  case option
  when "-h"
    puts "This is the help menu."
    puts "  -v Enable verbose mode"
    puts "  -c Enable syntax highlighting"
    exit
  when "-v"
    @options[:verbose] = true
  when "-c"
    @options[:syntax_highlighting] = true
  end
end

@options = {}

ARGV.each { |option| process_argv(option) }

p @options

이렇게 실행하면 :

ruby argv.rb -v -c

보게 될 내용 :

{:verbose=>true, :syntax_highlighting=>true}

이것은 간단한 경우에 효과가 있지만 더 큰 응용 프로그램을 작성하려면 다른 솔루션을 고려하는 것이 좋습니다.

옵션 파서 라이브러리 사용 방법

Ruby는 OptionParser와 함께 제공됩니다. 명령줄 옵션을 구문 분석하는 데 사용할 수 있는 클래스입니다.

예시입니다 :

require 'optparse'

@options = {}

OptionParser.new do |opts|
  opts.on("-v", "--verbose", "Show extra information") do
    @options[:verbose] = true
  end

  opts.on("-c", "--color", "Enable syntax highlighting") do
    @options[:syntax_highlighting] = true
  end
end.parse!

p @options

optparse를 사용하면 몇 가지 이점을 얻을 수 있습니다. 자신의 맞춤형 솔루션보다.

예를 들어 :

  • 짧은 -v를 사용할 수 있습니다. &긴 버전 --verbose 추가 작업 없이 모든 플래그의
  • 모든 옵션에는 도움말 메뉴의 일부가 될 설명이 있습니다.
  • 도움말 메뉴는 자동으로 만들어지므로 옵션을 추가하거나 제거할 때마다 수동으로 업데이트할 필요가 없습니다.

메뉴는 다음과 같습니다. :

Ruby로 명령줄 애플리케이션(CLI)을 구축하는 방법

가장 좋은 점은?

이 모든 것이 Ruby에 내장되어 있으므로 설치할 것이 없습니다!

토르 젬 사용 방법

옵션 구문 분석에 대한 다른 접근 방식을 찾고 있다면 Thor gem을 살펴봐야 합니다. 이것이 Rails가 사용하는 것입니다.

Rails에서는 다음과 같은 작업을 수행합니다. :

  • rails new
  • rails generate
  • rails console

rails를 (부분적으로) 다시 생성하려면 다음과 같이 할 수 있는 명령:

require 'thor'

class RailsCLI < Thor
  class_option :verbose, :type => :boolean, :aliases => "-v"

  desc "new DIRECTORY", "Create a new rails app"

  def new
    # ...
  end

  desc "generate THING PARAMETERS", "Generate controller / model / migration"

  def generate
    # ...
  end

  desc "console", "Start a rails console"

  def console
    # ...
  end
end

RailsCLI.start(ARGV)

도움말 메뉴는 다음과 같습니다. :

Ruby로 명령줄 애플리케이션(CLI)을 구축하는 방법

이것은 OptionParser와 매우 다른 스타일입니다. …

...그리고 몇 가지 변수 옵션으로 한 가지 작업을 수행하는 경우 앱에 가장 적합한 선택이 아닐 수도 있습니다.

그러나 rails와 같은 명령이 있는 경우 , 다양한 작업에 사용된다면 Thor는 탁월한 선택입니다!

Ruby Readline 라이브러리

pry와 같은 대화형 인터페이스로 애플리케이션을 구축하시겠습니까? 또는 psql ?

Readline을 확인하세요. 이 작업을 수행하는 데 도움이 되는 모듈입니다.

예시입니다 :

prompt = "> "

while buf = Readline.readline(prompt, true)
  puts "Your input was: '#{buf}'"
end

이렇게 하면 프롬프트가 표시되고 Enter 키를 누른 후 작성한 내용을 다시 에코합니다.

CTRL+C를 눌러 프로그램을 종료할 수 있습니다. .

Readline은 입력한 모든 항목의 기록을 유지하며 ctrl+r을 사용하여 기록을 검색할 수 있습니다. 또는 Readline::HISTORY.to_a 코드 내부.

Readline 사용 자동 완성과 같은 기능을 구현할 수도 있습니다. 예제는 이 링크를 참조하세요.

동영상 튜토리얼 보기

결론

GUI 유형의 사용자라도 명령줄 응용 프로그램은 매우 강력하고 재미있게 구축할 수 있습니다.

지금 사용해 보고 나만의 건물을 시작해 보세요 🙂