2022 ruby ターミナルで実行した結果をブラウザとリンクさせるあれこれ


目次
1、open3モジュール
2、jsonファイルをパースする際、ハッシュキーをrubyのシンボルに変換
3、initializeメソッド
4、optparseライブラリ

Open3.caputure3



cmdで指定されたコマンドを実行して、1、プロセスの標準出力2、標準エラー3、プロセスの終了ステータスのオブジェクトを返す。


プログラムを起動してopen3でコマンドをリンクさせてます

require "open3"

def add_proc
    @server.mount_proc("/directry") do |req,res|
        days = req.query["days"] 
        account = req.query["account"]

        script = "../sample.rb" #何か作成したプログラム
        file = "#{days}.output" #プログラムの結果を保存するファイル

        cmd = "ruby #{script} -d #{days} -a #{account}" > "#{file}" #ターミナルでのコマンド入力
        stdout,stderr,status = Open3.capture3(cmd) #引数にcmd
        erb = 
            if /exit 0/ =~ status.to_s 
                "/directory" #成功したときの画面
            else
                "/nodirectory" #失敗したときの画面
            end
        template = ERB.new(File.read(erb))
        res.body << template.result(binding) #templateに変数を埋め込みHTMLファイルを作成しレスポンスとしている
    end
end



jsonファイルをパースする際、ハッシュキーをrubyのシンボルに変換する場合


require "json"

def read_account(filename)
    File.open(filename) do |o|
        JSON.parse(File.read(o),symbolize_name: true) #symbolize_nameオプションをtrueに指定する
    end
end


initializeメソッド


プログラムが実行されたとき同時に実行される

# frozen_string_literal: true
class SumpleClass
    def initialize(account_file)
        @account = account_file
    end
    def run
        puts "#{@account}"
    end
end
if __FILE__ == $PROGRAM_NAME #ファイルが実行されるときこのプログラムも実行される
    app = AmazonSearch.new(ARGV[0])
    app.run
end

$ ruby sumple.rb iketeru #引数の値がaccountfileに渡る
結果=> iketeru


optpaeseライブラリ


コマンドライン用のライブラリで、ARGVというグローバル変数の配列にコマンドライン引数が格納されています。
このコマンドライン引数を使って、プログラムを実行するときに使いたい情報を渡すことができます。

require "optparse"

opts = OptionParser.new
opts.banner = "Usage: ruby optparse.rb [options]"
opts.program_name = "sumpleprogram"
opts.version = [0.2]
opts.release = "2022-03-05"

opts.on_tail("-v","--version") do
    puts opts.ver 
    exit
end
opts.parse!(ARGV)


% ruby opt.rb -v
結果=> 
kazuprogram 0.2 (2020-09-09)


% ruby opt.rb -h
結果=>
Usage: ruby optparse.rb [options]
  -v, --version