SlideShare a Scribd company logo
1 of 5
Download to read offline
1
Ruby(Thor)について
Release:2014/11(var1.0.0)
2
Thor(トール)概要
Thor とは
Ruby でコマンドを簡単に作成するための gem パッケージライブラリです。
Thor を使用すると簡単にオプションなども作成することができます。
いままでの授業でスクリプトを作成した ruby [ファイル名].rb の実行形式でなく一般コマ
ンド形式で実行が可能になります。
※参考ページ
http://whatisthor.com/
インストール
前提条件:Ruby がインストールされていること
< コマンド実行 >
インストール:
gem install thor
インストール確認 ※バージョン確認
thor –v
※バージョンが表示されれば OK
ファイル作成
コマンドファイルは下記場所に作成することがルールとなっています。
/usr/bin
ファイルテンプレート
コマンドを作成する場合のテンプレートとして下記コードが必要になります。
3
#!/usr/bin/env ruby
# coding: utf-8
require 'thor'
class [クラス名] < Thor
default_command :[コール名]
end
[クラス名].start
※Thor を継承したクラスでコマンドの設定を行っていきます。
簡易コマンド作成
サンプルコマンドを作成:
class MyCommand < Thor
default_command :mycommand
desc 'mycommand', 'say message'
def mycommand
p "success!"
end
end
サンプルコマンド実行:
mycommand
※success が表示されれば OK
オプションについて
コマンド作成時にサポートしてくれるオプションが用意されています。
 :desc - オプションの説明。コマンドのヘルプに表示される。
 :banner - オプションの説明。
4
 :required - 必須。
 :default - オプションのデフォルト値。:required と:default を同時に指定すること
はできない。
 :type - オプションの値のタイプ。:string, :hash, :array, :numeric, :boolean
 :aliases - オプションの別名。一般的にはオプションのショートバージョン指定の
ために使う。
簡易コマンド作成(オプション有)
サンプルコマンドを作成:
class MyCommand < Thor
default_command :mycommand
desc 'mycommand', 'say message'
def mycommand
p "success!"
end
desc 'jp', 'say message at japanese'
option :o, :type => :boolean, :aliases => '-r', :desc => "say
message jp"
def jp
if options[:o]
p "sakusesu!"
else
p "成功!"
end
end
end
サンプルコマンド実行:
日本語表示
mycommand jp
※「成功!」が表示されれば OK
5
日本語表示
mycommand jp -r
※「sakusesu!」が表示されれば OK

More Related Content

What's hot

Lets talk about ubuntu from now (Japanese only)
Lets talk about ubuntu from now (Japanese only)Lets talk about ubuntu from now (Japanese only)
Lets talk about ubuntu from now (Japanese only)Hidetsugu Takahashi
 
LT駆動開発08 - 無限のディスク領域を手に入れよう(妄想編)
LT駆動開発08 - 無限のディスク領域を手に入れよう(妄想編)LT駆動開発08 - 無限のディスク領域を手に入れよう(妄想編)
LT駆動開発08 - 無限のディスク領域を手に入れよう(妄想編)Kazuya Matsubara
 
勉強会資料 LT会 zfsで遊んでみた_公開版
勉強会資料 LT会 zfsで遊んでみた_公開版勉強会資料 LT会 zfsで遊んでみた_公開版
勉強会資料 LT会 zfsで遊んでみた_公開版Ryoma Fujiwara
 
今日からはじめるVim入門
今日からはじめるVim入門今日からはじめるVim入門
今日からはじめるVim入門Yuta Ogura
 
Kickstart, Puppet, Docker
Kickstart, Puppet, DockerKickstart, Puppet, Docker
Kickstart, Puppet, DockerHirokazu Tokuno
 
ソフトウェアライセンス
ソフトウェアライセンスソフトウェアライセンス
ソフトウェアライセンスKatsuhiro Morishita
 
2012 0623-x-road-tokyo-xoops-x(ten)
2012 0623-x-road-tokyo-xoops-x(ten)2012 0623-x-road-tokyo-xoops-x(ten)
2012 0623-x-road-tokyo-xoops-x(ten)Naoki Okino
 
名古屋セキュリティ勉強会LT~学内CTFの話~
名古屋セキュリティ勉強会LT~学内CTFの話~名古屋セキュリティ勉強会LT~学内CTFの話~
名古屋セキュリティ勉強会LT~学内CTFの話~kataware
 
シェルスクリプトを極める
シェルスクリプトを極めるシェルスクリプトを極める
シェルスクリプトを極めるbsdhack
 
Macユーザーに贈る!OmniOSで作るお手軽・カンタン・高性能なZFS-NAS!
Macユーザーに贈る!OmniOSで作るお手軽・カンタン・高性能なZFS-NAS!Macユーザーに贈る!OmniOSで作るお手軽・カンタン・高性能なZFS-NAS!
Macユーザーに贈る!OmniOSで作るお手軽・カンタン・高性能なZFS-NAS!Masataka Tsukamoto
 
ターミナル上でのSwift運用
ターミナル上でのSwift運用ターミナル上でのSwift運用
ターミナル上でのSwift運用HarutakaMatsumoto
 
Linuxにおけるコマンドとエディタの使用方法の紹介
Linuxにおけるコマンドとエディタの使用方法の紹介Linuxにおけるコマンドとエディタの使用方法の紹介
Linuxにおけるコマンドとエディタの使用方法の紹介ADVENTURE Project
 
第一回サーバー勉強友の会
第一回サーバー勉強友の会第一回サーバー勉強友の会
第一回サーバー勉強友の会Takahashi Tomohiko
 
Ubuntuとコンテナ技術 What is LXD? and Why? 2015-12-08
Ubuntuとコンテナ技術 What is LXD? and Why? 2015-12-08Ubuntuとコンテナ技術 What is LXD? and Why? 2015-12-08
Ubuntuとコンテナ技術 What is LXD? and Why? 2015-12-08Nobuto Murata
 
How to read linux kernel
How to read linux kernelHow to read linux kernel
How to read linux kernelNaoya Ito
 
【学習メモ#1st】12ステップで作る組込みOS自作入門
【学習メモ#1st】12ステップで作る組込みOS自作入門【学習メモ#1st】12ステップで作る組込みOS自作入門
【学習メモ#1st】12ステップで作る組込みOS自作入門sandai
 

What's hot (20)

Lets talk about ubuntu from now (Japanese only)
Lets talk about ubuntu from now (Japanese only)Lets talk about ubuntu from now (Japanese only)
Lets talk about ubuntu from now (Japanese only)
 
LT駆動開発08 - 無限のディスク領域を手に入れよう(妄想編)
LT駆動開発08 - 無限のディスク領域を手に入れよう(妄想編)LT駆動開発08 - 無限のディスク領域を手に入れよう(妄想編)
LT駆動開発08 - 無限のディスク領域を手に入れよう(妄想編)
 
勉強会資料 LT会 zfsで遊んでみた_公開版
勉強会資料 LT会 zfsで遊んでみた_公開版勉強会資料 LT会 zfsで遊んでみた_公開版
勉強会資料 LT会 zfsで遊んでみた_公開版
 
今日からはじめるVim入門
今日からはじめるVim入門今日からはじめるVim入門
今日からはじめるVim入門
 
ライセンス変更の話
ライセンス変更の話ライセンス変更の話
ライセンス変更の話
 
Linux container update
Linux container updateLinux container update
Linux container update
 
Kickstart, Puppet, Docker
Kickstart, Puppet, DockerKickstart, Puppet, Docker
Kickstart, Puppet, Docker
 
ソフトウェアライセンス
ソフトウェアライセンスソフトウェアライセンス
ソフトウェアライセンス
 
2012 0623-x-road-tokyo-xoops-x(ten)
2012 0623-x-road-tokyo-xoops-x(ten)2012 0623-x-road-tokyo-xoops-x(ten)
2012 0623-x-road-tokyo-xoops-x(ten)
 
名古屋セキュリティ勉強会LT~学内CTFの話~
名古屋セキュリティ勉強会LT~学内CTFの話~名古屋セキュリティ勉強会LT~学内CTFの話~
名古屋セキュリティ勉強会LT~学内CTFの話~
 
シェルスクリプトを極める
シェルスクリプトを極めるシェルスクリプトを極める
シェルスクリプトを極める
 
Macユーザーに贈る!OmniOSで作るお手軽・カンタン・高性能なZFS-NAS!
Macユーザーに贈る!OmniOSで作るお手軽・カンタン・高性能なZFS-NAS!Macユーザーに贈る!OmniOSで作るお手軽・カンタン・高性能なZFS-NAS!
Macユーザーに贈る!OmniOSで作るお手軽・カンタン・高性能なZFS-NAS!
 
Hostsの活用
Hostsの活用Hostsの活用
Hostsの活用
 
ターミナル上でのSwift運用
ターミナル上でのSwift運用ターミナル上でのSwift運用
ターミナル上でのSwift運用
 
Open vzでdr hbstudy
Open vzでdr hbstudyOpen vzでdr hbstudy
Open vzでdr hbstudy
 
Linuxにおけるコマンドとエディタの使用方法の紹介
Linuxにおけるコマンドとエディタの使用方法の紹介Linuxにおけるコマンドとエディタの使用方法の紹介
Linuxにおけるコマンドとエディタの使用方法の紹介
 
第一回サーバー勉強友の会
第一回サーバー勉強友の会第一回サーバー勉強友の会
第一回サーバー勉強友の会
 
Ubuntuとコンテナ技術 What is LXD? and Why? 2015-12-08
Ubuntuとコンテナ技術 What is LXD? and Why? 2015-12-08Ubuntuとコンテナ技術 What is LXD? and Why? 2015-12-08
Ubuntuとコンテナ技術 What is LXD? and Why? 2015-12-08
 
How to read linux kernel
How to read linux kernelHow to read linux kernel
How to read linux kernel
 
【学習メモ#1st】12ステップで作る組込みOS自作入門
【学習メモ#1st】12ステップで作る組込みOS自作入門【学習メモ#1st】12ステップで作る組込みOS自作入門
【学習メモ#1st】12ステップで作る組込みOS自作入門
 

Viewers also liked

gumiStudy#7 The MessagePack Project
gumiStudy#7 The MessagePack ProjectgumiStudy#7 The MessagePack Project
gumiStudy#7 The MessagePack ProjectSadayuki Furuhashi
 
メタプログラミングRuby勉強会#7(fluentプラグイン)
メタプログラミングRuby勉強会#7(fluentプラグイン)メタプログラミングRuby勉強会#7(fluentプラグイン)
メタプログラミングRuby勉強会#7(fluentプラグイン)Ashitaba YOSHIOKA
 
BUYMAにおけるRepro運用
BUYMAにおけるRepro運用BUYMAにおけるRepro運用
BUYMAにおけるRepro運用Takashi Matsumoto
 
TLS 1.3 と 0-RTT のこわ〜い話
TLS 1.3 と 0-RTT のこわ〜い話TLS 1.3 と 0-RTT のこわ〜い話
TLS 1.3 と 0-RTT のこわ〜い話Kazuho Oku
 
Information sharing and Experience consistency at Cookpad mobile application
Information sharing and Experience consistency at Cookpad mobile applicationInformation sharing and Experience consistency at Cookpad mobile application
Information sharing and Experience consistency at Cookpad mobile applicationichiko_revjune
 

Viewers also liked (7)

gumiStudy#7 The MessagePack Project
gumiStudy#7 The MessagePack ProjectgumiStudy#7 The MessagePack Project
gumiStudy#7 The MessagePack Project
 
メタプログラミングRuby勉強会#7(fluentプラグイン)
メタプログラミングRuby勉強会#7(fluentプラグイン)メタプログラミングRuby勉強会#7(fluentプラグイン)
メタプログラミングRuby勉強会#7(fluentプラグイン)
 
BUYMAにおけるRepro運用
BUYMAにおけるRepro運用BUYMAにおけるRepro運用
BUYMAにおけるRepro運用
 
Fluentd meetup #2
Fluentd meetup #2Fluentd meetup #2
Fluentd meetup #2
 
The monad fear
The monad fearThe monad fear
The monad fear
 
TLS 1.3 と 0-RTT のこわ〜い話
TLS 1.3 と 0-RTT のこわ〜い話TLS 1.3 と 0-RTT のこわ〜い話
TLS 1.3 と 0-RTT のこわ〜い話
 
Information sharing and Experience consistency at Cookpad mobile application
Information sharing and Experience consistency at Cookpad mobile applicationInformation sharing and Experience consistency at Cookpad mobile application
Information sharing and Experience consistency at Cookpad mobile application
 

Ruby(thorライブラリ)

  • 2. 2 Thor(トール)概要 Thor とは Ruby でコマンドを簡単に作成するための gem パッケージライブラリです。 Thor を使用すると簡単にオプションなども作成することができます。 いままでの授業でスクリプトを作成した ruby [ファイル名].rb の実行形式でなく一般コマ ンド形式で実行が可能になります。 ※参考ページ http://whatisthor.com/ インストール 前提条件:Ruby がインストールされていること < コマンド実行 > インストール: gem install thor インストール確認 ※バージョン確認 thor –v ※バージョンが表示されれば OK ファイル作成 コマンドファイルは下記場所に作成することがルールとなっています。 /usr/bin ファイルテンプレート コマンドを作成する場合のテンプレートとして下記コードが必要になります。
  • 3. 3 #!/usr/bin/env ruby # coding: utf-8 require 'thor' class [クラス名] < Thor default_command :[コール名] end [クラス名].start ※Thor を継承したクラスでコマンドの設定を行っていきます。 簡易コマンド作成 サンプルコマンドを作成: class MyCommand < Thor default_command :mycommand desc 'mycommand', 'say message' def mycommand p "success!" end end サンプルコマンド実行: mycommand ※success が表示されれば OK オプションについて コマンド作成時にサポートしてくれるオプションが用意されています。  :desc - オプションの説明。コマンドのヘルプに表示される。  :banner - オプションの説明。
  • 4. 4  :required - 必須。  :default - オプションのデフォルト値。:required と:default を同時に指定すること はできない。  :type - オプションの値のタイプ。:string, :hash, :array, :numeric, :boolean  :aliases - オプションの別名。一般的にはオプションのショートバージョン指定の ために使う。 簡易コマンド作成(オプション有) サンプルコマンドを作成: class MyCommand < Thor default_command :mycommand desc 'mycommand', 'say message' def mycommand p "success!" end desc 'jp', 'say message at japanese' option :o, :type => :boolean, :aliases => '-r', :desc => "say message jp" def jp if options[:o] p "sakusesu!" else p "成功!" end end end サンプルコマンド実行: 日本語表示 mycommand jp ※「成功!」が表示されれば OK