많은 사람들은 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에 내장되어 있으므로 설치할 것이 없습니다!
토르 젬 사용 방법
옵션 구문 분석에 대한 다른 접근 방식을 찾고 있다면 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)
도움말 메뉴는 다음과 같습니다. :
이것은 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 유형의 사용자라도 명령줄 응용 프로그램은 매우 강력하고 재미있게 구축할 수 있습니다.
지금 사용해 보고 나만의 건물을 시작해 보세요 🙂