レシピファイルは、実行ファイルの生成に必要な各種情報を記述するテキストファイルです。 各種情報は、YAML(YAML Ain't Markup Language)フォーマットで記述します。
もっとも単純なレシピファイルの例は、下記の通りです。
general:
startup: hello.rb
file:
hello.rb:
YAMLフォーマットについて、簡単に解説します。
YAMLでは、いくつかの記号とインデントを用いて、データ構造を表現します。 データ構造には大きく分けて、配列とハッシュという2種類があります。
下記に例を記述すると共に、「#=>」という記号に続き、Ruby上におけるデータを併記します。
配列は、下記の形式で記述します。
- 値
下記のように記述することで、配列を表現します。
- Array
- String
- 123
#=> ["Array", "String", 123]
Ruby上ではArrayオブジェクトとして扱われます。
ハッシュは、下記の形式で記述します。
キー: 値
下記のように記述することで、ハッシュを表現します。
Type: Hash
String: ABC
Number: 123
#=> {"Type" => "Hash", "String" => "ABC", "Number" => 123}
Ruby上ではHashオブジェクトとして扱われます。 そのため、キーの順序は保存されません。
配列とハッシュは、それぞれ組み合わせることができます。 インデントすることによって、親子関係を示します。 インデントにはスペース文字、タブ文字が使用できますが、2個のスペース文字を用いることを推奨します。
配列同士の組み合わせ例は、下記の通りです。
-
- 1x1
- 1x2
-
- 2x1
- 2x2
#=> [["1x1", "1x2"], ["2x1", "2x2"]]
ハッシュ同士の組み合わせ例は、下記の通りです。
Key1:
Type: String
Value: ABC
Key2:
Type: Number
Value: 123
#=> {"Key1" => {"Type" => "String", "Value" => "ABC"},
"Key2" => {"Type" => "Number", "Value" => 123}}
配列とハッシュの組み合わせ例は、下記の通りです。
String:
- A
- B
- C
Number:
- 1
- 2
- 3
#=> {"String" => ["A", "B", "C"], "Number" => [1, 2, 3]}
レシピファイルは下記のブロック(ハッシュ構造)から構成されています。 各ブロックの記述順序は任意ですが、下記の順序で記述することを推奨します。
生成する実行ファイルについての基本的な情報を指定します。 このブロックは必須です。
general:
startup: foo.rb
output: bar.exe
core: cui
kcode: sjis
startupキーは、実行ファイル起動時に、最初に実行するRubyスクリプトのファイル名を指定します。 このキーは必須です。
outputキーは、生成する実行ファイルの出力ファイル名を指定します。 省略された場合、レシピファイルのファイル名が使用されます。 レシピファイルの拡張子が「exy」であれば拡張子を「exe」に置換したファイル名、そうでなければ「.exe」を付加したファイル名を使用します。
coreキーは、実行ファイルの生成に使用するExerbコアを指定します。 定義名、またはファイル名で指定します。
kcodeキーは、Rubyスクリプトの文字コードを指定します。 rubyコマンドの-Kオプションに相当します。 文字コードは、下記のいずれかを設定してください。 デフォルトはnoneです。
指定値 | 意味 |
---|---|
none | 指定なし |
euc | EUC |
sjis | Shift-JIS |
utf8 | UTF-8 |
Rubyスクリプト、拡張ライブラリ等の検索パスを指定します。 レシピファイルが存在するパスを基準とした相対パスで記述することもできます。
path:
- ..\lib\so
- c:\ruby\lib
- c:\ruby
生成する実行ファイルのリソース情報を指定します。
このブロックは、実行ファイルのアイコンリソースを指定するiconブロックと、 バージョン情報リソースを指定するversionブロックで構成されています。
アイコンリソースを指定します。 ...
resource:
icon:
-
width : 16
height: 16
color : 4
file : file.ico
バージョン情報リソースを指定します。 このブロックが省略された場合、バージョン情報リソースは生成されません。
resource:
version:
file_version_number : 1.2.3.4
product_version_number: 5.6.7.8
comments : コメント
company_name : 会社名
legal_copyright : 著作権情報
legal_trademarks : 商標情報
file_version : ファイルバージョン(文字列)
product_version : 製品バージョン(文字列)
product_name : 製品名
file_description : ファイルの説明
internal_name : 内部名
original_filename : 正式ファイル名
private_build : プライベートビルド情報
special_build : スペシャルビルド情報
生成する実行ファイルに格納するファイルを指定します。 このブロックは必須です。
file:
foo.so:
type: extension-library