目次
1、コマンドラインオプションの設定
2、ヘッドレスモードの設定
3、WEBサーバー WEBrickの動かし方
コマンドラインオプションの設定
rubyで便利なコマンドライン用の「optparse」ライブラリを使ってみましょう。
よくターミナルで使う、「-v」や「--version」のようにオプションを取り扱うのに便利です。
[optparse.rb]
#frozen_string_literal: true
require "optparse" <=#optparseライブラリのrequire
opts = OptionParser.new <=#OptionParserクラスのインスタンス作成
opts.banner = "usage: ruby optparse.rb [options]" <=#メッセージや使い方などを書いたバナー
opts.program_name = "sumple-opts" <=#このプログラム名
opts.version = [0.2] <=#バージョン番号
opts.release = "2022-02-17" <=#リリース日
opts.on_tail("-v","--version","バージョンを表示する") do <=#on_tailメソッドはオプションリストの最後に追加するメソッド
puts opts.ver
exit
end
opts.parse!(ARGV) <=#ARGVの解析
実行してみます。
% ruby optparse.rbだと何も出力されない
% ruby optparse.rb -h
usage: ruby optparse.rb [options]
-v,--version バージョン表示する-hでヘルプを表示
% ruby optparse.rb -v
sumple-opts 0.2 (2022-02-17)-vオプションでバージョン表示
ヘッドレスモードの設定
seleniumを使用してブラウザの画面を表示しないで実行する設定
[sumple.rb]
def headlessopts
options = Selenium::WebDriver::Chrome::Options.new #<=chromeドライバーに渡すオプションのインスタンス作成
options.headless! #<=ヘッドレスモードを有効にした
@driver = Selenium::WebDriver.for :chrome,options: options #<=インスタンス作成時オプション追加
end
このオプションを付けることによってコマンド操作のみで動かすことができます。
WEBサーバー WEBrickの動かし方
WEBrickはWebサーバーそのものではなく、Webサーバーを作るためのクラスライブラリです。
Ruby3.0からは標準ライブラリに含まれなくなったので別途インストールが必要となります。
[webrick.rb]
#frozen_string_literal: true
require "webrick" #<=WEBrickライブラリをrequire
config = {
DocumentRoot: "./", #<=configというハッシュにサーバーの設定を書く
BindAddress: "127.0.0.1", #<=サーバーのIPアドレスを設定
Port: 8099 #<=サーバーのポート番号を設定
}
server = WEBrick::HTTPServer.new(config) #<=configで設定したサーバーのインスタンスを生成
trip("INT"){ server.shutdown} #<=コントロールキー + C でプログラムを停止するように設定
server.start #<=サーバーを起動
[ターミナル]
% ruby webrick.rbで
で実行、Webサーバーが起動します。
プログラムをmount_procメソッドをつかって実行
#frozen_string_literal: true
require "webrick"
config = {
DocumentRoot: "./",
BindAddress: "127.0.0.1",
Port: 8099
}
server = WEBrick::HTTPServer.new(config)
server.mount_proc("/test") do |req,res|
res.body << '<html lang="ja">'
res.body << '<head><meta http-equiv="Content-Type" content="text/html; charset="UTF-8" /></head>'
res.body << "<p>sumple-text</p>"
res.body << "</html>"
end
procメソッドは、引数に実行したいプログラムのパス名を指定する。