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に組み込まれているため、インストールするものはありません。
トールジェムの使い方
オプション解析の別のアプローチを探している場合は、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)
ヘルプメニューは次のようになります :
これは、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のような人でも、コマンドラインアプリケーションは非常に強力で楽しいものになります。
試してみて、今日から自分で構築を始めましょう🙂
-
Rubyでパーサーを構築する方法
構文解析は、一連の文字列を理解し、それらを理解できるものに変換する技術です。正規表現を使用することもできますが、必ずしもその仕事に適しているとは限りません。 たとえば、HTMLを正規表現で解析することはおそらく良い考えではないことは一般的な知識です。 Rubyには、この作業を実行できるnokogiriがありますが、独自のパーサーを作成することで多くのことを学ぶことができます。始めましょう! Rubyでの解析 パーサーの中核はStringScannerです クラス。 このクラスは、文字列のコピーと位置ポインタを保持します。ポインタを使用すると、特定のトークンを検索するために文字列をトラバ
-
SwiftUIでデザインシステムを構築する方法
1 つの製品をサポートする設計システムを構築するのは簡単ではありません。スケーラビリティのために堅牢で柔軟でなければなりません。困難ではありますが、多くの優れたリソースが、チームが視覚的にもプログラム的にも優れたシステムを構築するのに役立つ有用な原則とアプローチを共有しています。この記事は、SwiftUI で優れたシステムを構築することに焦点を当てることで、彼らの肩に寄り添い、手付かずの地に貢献しようとします。 . なぜこの記事を書くのか ニューヨークの ITP での最初の夏に、幸運にも Line Break Studio で iOS 開発者のインターンとして働く機会がありました。私が割り当