Ruby
 Computer >> コンピューター >  >> プログラミング >> Ruby

Rubyを使用してコマンドラインアプリケーション(CLI)を構築する方法

多くの人は、RubyがWebアプリケーションではないことを実行できることを忘れています。この記事では、それを改善するのに役立つコマンドラインアプリケーションを構築する方法を紹介したいと思います!

使い慣れているコマンドラインアプリケーションは次のとおりです。

  • psql
  • rails
  • bundler
  • gem
  • git

コマンドラインアプリケーションを構築する方法はたくさんあります。この記事では、そのうちの3つに焦点を当てます。

あなたは学ぶつもりです

  • ARGVアレイ
  • OptParseライブラリ
  • トールの宝石

始めましょう!

RubyARGV定数

コマンドラインアプリケーションは通常、複数のオプションまたは「フラグ」を取ります。

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に組み込まれているため、インストールするものはありません。

トールジェムの使い方

オプション解析の別のアプローチを探している場合は、Thorgemを確認する必要があります。これは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とは非常に異なるスタイルです。 …

…そして、いくつかの可変オプションで1つのことを実行する場合、アプリにとって最良の選択ではない可能性があります。

ただし、railsのようなコマンドがある場合 、さまざまなタスクに使用されるので、Thorは最適な選択肢です!

RubyReadlineライブラリ

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のような人でも、コマンドラインアプリケーションは非常に強力で楽しいものになります。

試してみて、今日から自分で構築を始めましょう🙂


  1. Rubyでパーサーを構築する方法

    構文解析は、一連の文字列を理解し、それらを理解できるものに変換する技術です。正規表現を使用することもできますが、必ずしもその仕事に適しているとは限りません。 たとえば、HTMLを正規表現で解析することはおそらく良い考えではないことは一般的な知識です。 Rubyには、この作業を実行できるnokogiriがありますが、独自のパーサーを作成することで多くのことを学ぶことができます。始めましょう! Rubyでの解析 パーサーの中核はStringScannerです クラス。 このクラスは、文字列のコピーと位置ポインタを保持します。ポインタを使用すると、特定のトークンを検索するために文字列をトラバ

  2. SwiftUIでデザインシステムを構築する方法

    1 つの製品をサポートする設計システムを構築するのは簡単ではありません。スケーラビリティのために堅牢で柔軟でなければなりません。困難ではありますが、多くの優れたリソースが、チームが視覚的にもプログラム的にも優れたシステムを構築するのに役立つ有用な原則とアプローチを共有しています。この記事は、SwiftUI で優れたシステムを構築することに焦点を当てることで、彼らの肩に寄り添い、手付かずの地に貢献しようとします。 . なぜこの記事を書くのか ニューヨークの ITP での最初の夏に、幸運にも Line Break Studio で iOS 開発者のインターンとして働く機会がありました。私が割り当