toji 1.1.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (69) hide show
  1. checksums.yaml +4 -4
  2. data/example/koji_making.ipynb +7 -7
  3. data/example/koji_making.rb +5 -5
  4. data/example/koji_recipe.rb +1 -1
  5. data/example/moromi.ipynb +55 -21
  6. data/example/moromi.rb +5 -5
  7. data/example/rice_recipe.rb +2 -2
  8. data/example/shubo.ipynb +6 -6
  9. data/example/shubo.rb +5 -5
  10. data/example/three_step_mashing_recipe.rb +2 -2
  11. data/lib/toji/brew/base.rb +88 -0
  12. data/lib/toji/brew/builder.rb +27 -0
  13. data/lib/toji/brew/graph/ab.rb +85 -0
  14. data/lib/toji/brew/graph/bmd.rb +58 -0
  15. data/lib/toji/brew/graph/progress.rb +142 -0
  16. data/lib/toji/brew/graph.rb +10 -0
  17. data/lib/toji/{product/koji_making.rb → brew/koji.rb} +35 -43
  18. data/lib/toji/{product → brew}/moromi.rb +105 -96
  19. data/lib/toji/brew/shubo.rb +122 -0
  20. data/lib/toji/brew/state.rb +117 -0
  21. data/lib/toji/{product/job_accessor.rb → brew/state_accessor.rb} +4 -4
  22. data/lib/toji/brew/state_record.rb +82 -0
  23. data/lib/toji/brew.rb +21 -0
  24. data/lib/toji/recipe/ingredient/koji/actual.rb +23 -0
  25. data/lib/toji/recipe/ingredient/koji/actual_fermentable.rb +17 -0
  26. data/lib/toji/recipe/ingredient/koji/base.rb +28 -0
  27. data/lib/toji/recipe/ingredient/koji/expected.rb +53 -0
  28. data/lib/toji/recipe/ingredient/koji/expected_fermentable.rb +17 -0
  29. data/lib/toji/recipe/ingredient/koji.rb +21 -0
  30. data/lib/toji/recipe/ingredient/lactic_acid.rb +21 -0
  31. data/lib/toji/recipe/ingredient/rice/actual.rb +20 -0
  32. data/lib/toji/recipe/ingredient/rice/actual_steamable.rb +29 -0
  33. data/lib/toji/recipe/ingredient/rice/base.rb +42 -0
  34. data/lib/toji/recipe/ingredient/rice/expected.rb +48 -0
  35. data/lib/toji/recipe/ingredient/rice/expected_steamable.rb +31 -0
  36. data/lib/toji/recipe/ingredient/rice.rb +21 -0
  37. data/lib/toji/recipe/ingredient/yeast.rb +21 -0
  38. data/lib/toji/recipe/ingredient.rb +11 -0
  39. data/lib/toji/recipe/lactic_acid_rate.rb +17 -0
  40. data/lib/toji/recipe/three_step_mashing.rb +4 -2
  41. data/lib/toji/recipe/yeast_rate.rb +41 -0
  42. data/lib/toji/recipe.rb +3 -0
  43. data/lib/toji/version.rb +1 -1
  44. data/lib/toji.rb +1 -3
  45. metadata +32 -29
  46. data/lib/toji/graph/ab.rb +0 -79
  47. data/lib/toji/graph/bmd.rb +0 -56
  48. data/lib/toji/graph/progress.rb +0 -87
  49. data/lib/toji/graph.rb +0 -8
  50. data/lib/toji/ingredient/koji/actual.rb +0 -21
  51. data/lib/toji/ingredient/koji/actual_fermentable.rb +0 -15
  52. data/lib/toji/ingredient/koji/base.rb +0 -26
  53. data/lib/toji/ingredient/koji/expected.rb +0 -51
  54. data/lib/toji/ingredient/koji/expected_fermentable.rb +0 -15
  55. data/lib/toji/ingredient/koji.rb +0 -19
  56. data/lib/toji/ingredient/rice/actual.rb +0 -18
  57. data/lib/toji/ingredient/rice/actual_steamable.rb +0 -27
  58. data/lib/toji/ingredient/rice/base.rb +0 -40
  59. data/lib/toji/ingredient/rice/expected.rb +0 -46
  60. data/lib/toji/ingredient/rice/expected_steamable.rb +0 -29
  61. data/lib/toji/ingredient/rice.rb +0 -19
  62. data/lib/toji/ingredient/yeast/base.rb +0 -21
  63. data/lib/toji/ingredient/yeast/red_star.rb +0 -30
  64. data/lib/toji/ingredient/yeast.rb +0 -9
  65. data/lib/toji/ingredient.rb +0 -8
  66. data/lib/toji/product/base.rb +0 -74
  67. data/lib/toji/product/job.rb +0 -176
  68. data/lib/toji/product/shubo.rb +0 -130
  69. data/lib/toji/product.rb +0 -11
@@ -0,0 +1,23 @@
1
+ module Toji
2
+ module Recipe
3
+ module Ingredient
4
+ module Koji
5
+ class Actual
6
+ include Base
7
+ include Rice::ActualSteamable
8
+ include ActualFermentable
9
+
10
+ def initialize(raw, soaked, steaming_water, steamed, cooled, tanekoji, dekoji)
11
+ @raw = raw
12
+ @soaked = soaked
13
+ @steaming_water = steaming_water
14
+ @steamed = steamed
15
+ @cooled = cooled
16
+ @tanekoji = tanekoji
17
+ @dekoji = dekoji
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,17 @@
1
+ module Toji
2
+ module Recipe
3
+ module Ingredient
4
+ module Koji
5
+ module ActualFermentable
6
+ def tanekoji_rate
7
+ tanekoji / raw
8
+ end
9
+
10
+ def dekoji_rate
11
+ (dekoji - raw) / raw
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,28 @@
1
+ module Toji
2
+ module Recipe
3
+ module Ingredient
4
+ module Koji
5
+ module Base
6
+ include Rice::Base
7
+
8
+ # 種麹
9
+ #
10
+ # 総破精麹を造るには、種麹の量を麹米100kgあたり種麹100gとする
11
+ # 突き破精麹を造るには、種麹の量を麹米100kgあたり種麹80gとする
12
+ #
13
+ # 出典: 酒造教本 P66
14
+ attr_reader :tanekoji_rate
15
+ attr_reader :tanekoji
16
+
17
+ # 出麹歩合
18
+ #
19
+ # 出麹歩合17〜19%のものが麹菌の繁殖のほどよい麹である
20
+ #
21
+ # 出典: 酒造教本 P67
22
+ attr_reader :dekoji_rate
23
+ attr_reader :dekoji
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,53 @@
1
+ module Toji
2
+ module Recipe
3
+ module Ingredient
4
+ module Koji
5
+ class Expected
6
+ include Base
7
+ include Rice::ExpectedSteamable
8
+ include ExpectedFermentable
9
+
10
+ def initialize(raw, rice_rate: Recipe::RiceRate::Cooked::DEFAULT, koji_rate: Recipe::KojiRate::DEFAULT)
11
+ @raw = raw.to_f
12
+
13
+ @rice_rate = rice_rate
14
+ @soaked_rate = rice_rate.soaked_rate
15
+ @before_steaming_rate = rice_rate.before_steaming_rate
16
+ @steamed_rate = rice_rate.steamed_rate
17
+ @cooled_rate = rice_rate.cooled_rate
18
+
19
+ @koji_rate = koji_rate
20
+ @tanekoji_rate = koji_rate.tanekoji_rate
21
+ @dekoji_rate = koji_rate.dekoji_rate
22
+ end
23
+
24
+ def self.create(x)
25
+ if self===x
26
+ x
27
+ else
28
+ new(x)
29
+ end
30
+ end
31
+
32
+ def +(other)
33
+ if Base===other
34
+ Actual.new(raw + other.raw, soaked + other.soaked, steaming_water + other.steaming_water, steamed + other.steamed, cooled + other.cooled, tanekoji + other.tanekoji, dekoji + other.dekoji)
35
+ else
36
+ x, y = other.coerce(self)
37
+ x + y
38
+ end
39
+ end
40
+
41
+ def *(other)
42
+ if Integer===other || Float===other
43
+ Expected.new(@raw * other, rice_rate: @rice_rate, koji_rate: @koji_rate)
44
+ else
45
+ x, y = other.coerce(self)
46
+ x * y
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,17 @@
1
+ module Toji
2
+ module Recipe
3
+ module Ingredient
4
+ module Koji
5
+ module ExpectedFermentable
6
+ def tanekoji
7
+ @raw * @tanekoji_rate
8
+ end
9
+
10
+ def dekoji
11
+ @raw + @raw * @dekoji_rate
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,21 @@
1
+ require 'toji/recipe/ingredient/koji/base'
2
+ require 'toji/recipe/ingredient/koji/expected_fermentable'
3
+ require 'toji/recipe/ingredient/koji/expected'
4
+ require 'toji/recipe/ingredient/koji/actual_fermentable'
5
+ require 'toji/recipe/ingredient/koji/actual'
6
+
7
+ module Toji
8
+ module Recipe
9
+ module Ingredient
10
+ module Koji
11
+ def self.expected(raw, rice_rate: Recipe::RiceRate::Cooked::DEFAULT, koji_rate: Recipe::KojiRate::DEFAULT)
12
+ Expected.new(raw, rice_rate: rice_rate, koji_rate: koji_rate)
13
+ end
14
+
15
+ def self.actual(raw, soaked, steaming_water, steamed, cooled, tanekoji, dekoji)
16
+ Actual.new(raw, soaked, steaming_water, steamed, cooled, tanekoji, dekoji)
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ module Toji
2
+ module Recipe
3
+ module Ingredient
4
+ class LacticAcid
5
+
6
+ def initialize(total, rate: Recipe::LacticAcidRate::SIMPLE_SOKUJO)
7
+ @total = total
8
+ @rate = rate
9
+ end
10
+
11
+ def moto
12
+ @total * @rate.moto_rate
13
+ end
14
+
15
+ def soe
16
+ @total * @rate.soe_rate
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,20 @@
1
+ module Toji
2
+ module Recipe
3
+ module Ingredient
4
+ module Rice
5
+ class ActualRice
6
+ include Base
7
+ include ActualSteamable
8
+
9
+ def initialize(raw, soaked, steaming_water, steamed, cooled)
10
+ @raw = raw
11
+ @soaked = soaked
12
+ @steaming_water = steaming_water
13
+ @steamed = steamed
14
+ @cooled = cooled
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,29 @@
1
+ module Toji
2
+ module Recipe
3
+ module Ingredient
4
+ module Rice
5
+ module ActualSteamable
6
+ def soaked_rate
7
+ soaking_water / raw
8
+ end
9
+
10
+ def soaking_water
11
+ soaked - raw
12
+ end
13
+
14
+ def before_steaming_rate
15
+ # TODO
16
+ end
17
+
18
+ def steamed_rate
19
+ (steamed - raw) / raw
20
+ end
21
+
22
+ def cooled_rate
23
+ (cooled - raw) / raw
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,42 @@
1
+ module Toji
2
+ module Recipe
3
+ module Ingredient
4
+ module Rice
5
+ module Base
6
+ # 白米
7
+ attr_reader :raw
8
+
9
+ # 浸漬米吸水率
10
+ #
11
+ # 標準的な白米吸水率は掛米で30〜35%、麹米で33%前後で許容範囲はかなり狭い
12
+ #
13
+ # 出典: 酒造教本 P38
14
+ attr_reader :soaked_rate
15
+ attr_reader :soaking_water
16
+ attr_reader :soaked
17
+
18
+ # 蒸米吸水率
19
+ #
20
+ # 蒸しにより通常甑置き前の浸漬白米の重量よりさらに12〜13%吸水する
21
+ # 蒸しにより吸水の増加が13%を超える場合は、蒸米の表面が柔らかくべとつく蒸米になりやすい
22
+ # 蒸米吸水率は麹米及び酒母米で41〜43%、掛米は39〜40%で、吟醸造りの場合は数%低い
23
+ #
24
+ # 出典: 酒造教本 P48
25
+ attr_reader :steamed_rate
26
+ attr_reader :steaming_water
27
+ attr_reader :steamed
28
+
29
+ # 放冷
30
+ #
31
+ # 冷却法で若干異なるが蒸米の冷却により掛米で白米重量の10%、麹米で8%程度の水が失われる
32
+ # 出典: 酒造教本 P49
33
+ #
34
+ # 麹を造るのに適した蒸米は、引込時の吸水率が33%を理想とし、許容幅はプラスマイナス1%である
35
+ # 出典: 酒造教本 P59
36
+ attr_reader :cooled_rate
37
+ attr_reader :cooled
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,48 @@
1
+ module Toji
2
+ module Recipe
3
+ module Ingredient
4
+ module Rice
5
+ class Expected
6
+ include Base
7
+ include ExpectedSteamable
8
+
9
+ def initialize(raw, rice_rate: Recipe::RiceRate::Cooked::DEFAULT)
10
+ @raw = raw.to_f
11
+
12
+ @rice_rate = rice_rate
13
+ @soaked_rate = rice_rate.soaked_rate
14
+ @before_steaming_rate = rice_rate.before_steaming_rate
15
+ @steamed_rate = rice_rate.steamed_rate
16
+ @cooled_rate = rice_rate.cooled_rate
17
+ end
18
+
19
+ def +(other)
20
+ if Base===other
21
+ Actual.new(raw + other.raw, soaked + other.soaked, steaming_water + other.steaming_water, steamed + other.steamed, cooled + other.cooled)
22
+ else
23
+ x, y = other.coerce(self)
24
+ x + y
25
+ end
26
+ end
27
+
28
+ def *(other)
29
+ if Integer===other || Float===other
30
+ self.class.new(@raw * other, rice_rate: @rice_rate)
31
+ else
32
+ x, y = other.coerce(self)
33
+ x * y
34
+ end
35
+ end
36
+
37
+ def self.create(x)
38
+ if self===x
39
+ x
40
+ else
41
+ new(x)
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,31 @@
1
+ module Toji
2
+ module Recipe
3
+ module Ingredient
4
+ module Rice
5
+ module ExpectedSteamable
6
+ def soaking_water
7
+ @raw * @soaked_rate
8
+ end
9
+
10
+ def soaked
11
+ @raw + @raw * @soaked_rate
12
+ end
13
+
14
+ def steaming_water
15
+ if @before_steaming_rate
16
+ @raw * (@before_steaming_rate - @soaked_rate)
17
+ end
18
+ end
19
+
20
+ def steamed
21
+ @raw + @raw * @steamed_rate
22
+ end
23
+
24
+ def cooled
25
+ @raw + @raw * @cooled_rate
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,21 @@
1
+ require 'toji/recipe/ingredient/rice/base'
2
+ require 'toji/recipe/ingredient/rice/expected_steamable'
3
+ require 'toji/recipe/ingredient/rice/expected'
4
+ require 'toji/recipe/ingredient/rice/actual_steamable'
5
+ require 'toji/recipe/ingredient/rice/actual'
6
+
7
+ module Toji
8
+ module Recipe
9
+ module Ingredient
10
+ module Rice
11
+ def self.expected(raw, rice_rate: Recipe::RiceRate::Cooked::DEFAULT)
12
+ Expected.new(raw, rice_rate: rice_rate)
13
+ end
14
+
15
+ def self.actual(raw, soaked, steaming_water, steamed, cooled)
16
+ Actual.new(raw, soaked, steaming_water, steamed, cooled)
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ module Toji
2
+ module Recipe
3
+ module Ingredient
4
+ class Yeast
5
+
6
+ def initialize(total, rate: Recipe::YeastRate::RED_STAR)
7
+ @total = total
8
+ @rate = rate
9
+ end
10
+
11
+ def yeast
12
+ @total * @rate.yeast_rate / 1000.0
13
+ end
14
+
15
+ def water
16
+ yeast * @rate.water_rate
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,11 @@
1
+ require 'toji/recipe/ingredient/rice'
2
+ require 'toji/recipe/ingredient/koji'
3
+ require 'toji/recipe/ingredient/yeast'
4
+ require 'toji/recipe/ingredient/lactic_acid'
5
+
6
+ module Toji
7
+ module Recipe
8
+ module Ingredient
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,17 @@
1
+ module Toji
2
+ module Recipe
3
+ class LacticAcidRate
4
+ attr_reader :moto_rate
5
+ attr_reader :soe_rate
6
+
7
+ def initialize(moto_rate, soe_rate)
8
+ @moto_rate = moto_rate
9
+ @soe_rate = soe_rate
10
+ end
11
+
12
+ SOKUJO = new(0.007, 0.0)
13
+ SIMPLE_SOKUJO = new(0.006, 0.002)
14
+ KIMOTO = new(0.0, 0.0)
15
+ end
16
+ end
17
+ end
@@ -18,13 +18,15 @@ module Toji
18
18
  #]
19
19
 
20
20
  attr_reader :yeast
21
+ attr_reader :lactic_acid
21
22
  attr_reader :steps
22
23
 
23
- def initialize(yeast_cls, total, template=@@template)
24
+ def initialize(yeast_rate, lactic_acid_rate, total, template=@@template)
24
25
  @total = total
25
26
  rate = total / template.map(&:weight_total).sum
26
27
 
27
- @yeast = yeast_cls.new(total)
28
+ @yeast = Ingredient::Yeast.new(total, rate: yeast_rate)
29
+ @lactic_acid = Ingredient::LacticAcid.new(total, rate: lactic_acid_rate)
28
30
 
29
31
  @steps = template.map {|step|
30
32
  step * rate
@@ -0,0 +1,41 @@
1
+ module Toji
2
+ module Recipe
3
+ class YeastRate
4
+
5
+ # 1リットル醸造のために必要な酵母の量
6
+ attr_reader :yeast_rate
7
+
8
+ # 乾燥酵母を戻すのに必要な水の量
9
+ attr_reader :water_rate
10
+
11
+ def initialize(yeast_rate, water_rate)
12
+ @yeast_rate = yeast_rate
13
+ @water_rate = water_rate
14
+ end
15
+
16
+ # RedStar酵母
17
+ #
18
+ # 容量 5g
19
+ # 醸造可能量 20〜23L
20
+ #
21
+ # ドライイーストは、生イーストの保存性を高めるために、その水分を大部分除いたものです。
22
+ # 使用時にはイーストの10倍以上の30-35℃の無菌のお湯(ミネラルウオーターや湯冷まし)で20-25分程度なじませてください。
23
+ # これにより水分を再吸収させると同 時に発酵力を回復させ、生イーストの状態にもどします。
24
+ # このときの温湯の温度が、イーストの発酵力に影響します
25
+ RED_STAR = new(5.0 / 20.0, 10.0)
26
+
27
+ # 酒粕
28
+ #
29
+ # 以下の計算式を用いて酒粕にどの程度水を足せば醪時点での緩さになるかを算出する。
30
+ # 計算が面倒なので麹歩合は無視して蒸米時点での重量とする。
31
+ # (白米重量 * 蒸米歩合 + 白米重量 * 汲水歩合) / (粕歩合 * 100) - 1
32
+ #
33
+ # 蒸米歩合135%、汲水歩合130%、粕歩合30%の場合、酒粕に対して7.833倍の水を足せば理論上醪と同じ緩さになる。
34
+ # (100 * 1.35 + 100 * 1.3) / (0.3 * 100) - 1
35
+ # => 7.833333333333334
36
+ #
37
+ # しかし櫂入れ出来る程度の緩さになれば良いのではないだろうか。
38
+ SAKE_LEES = new(5.0, 3.0)
39
+ end
40
+ end
41
+ end
data/lib/toji/recipe.rb CHANGED
@@ -1,5 +1,8 @@
1
+ require 'toji/recipe/ingredient'
1
2
  require 'toji/recipe/rice_rate'
2
3
  require 'toji/recipe/koji_rate'
4
+ require 'toji/recipe/yeast_rate'
5
+ require 'toji/recipe/lactic_acid_rate'
3
6
  require 'toji/recipe/step'
4
7
  require 'toji/recipe/three_step_mashing'
5
8
 
data/lib/toji/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Toji
2
- VERSION = "1.1.0"
2
+ VERSION = "1.2.0"
3
3
  end
data/lib/toji.rb CHANGED
@@ -1,10 +1,8 @@
1
1
  require "toji/version"
2
2
  require 'active_support/all'
3
3
 
4
- require 'toji/ingredient'
5
4
  require 'toji/recipe'
6
- require 'toji/product'
7
- require 'toji/graph'
5
+ require 'toji/brew'
8
6
 
9
7
  module Toji
10
8
  class Error < StandardError; end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: toji
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yoshida Tetsuya
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-01-29 00:00:00.000000000 Z
11
+ date: 2020-03-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -119,41 +119,44 @@ files:
119
119
  - example/shubo.rb
120
120
  - example/three_step_mashing_recipe.rb
121
121
  - lib/toji.rb
122
- - lib/toji/graph.rb
123
- - lib/toji/graph/ab.rb
124
- - lib/toji/graph/bmd.rb
125
- - lib/toji/graph/progress.rb
126
- - lib/toji/ingredient.rb
127
- - lib/toji/ingredient/koji.rb
128
- - lib/toji/ingredient/koji/actual.rb
129
- - lib/toji/ingredient/koji/actual_fermentable.rb
130
- - lib/toji/ingredient/koji/base.rb
131
- - lib/toji/ingredient/koji/expected.rb
132
- - lib/toji/ingredient/koji/expected_fermentable.rb
133
- - lib/toji/ingredient/rice.rb
134
- - lib/toji/ingredient/rice/actual.rb
135
- - lib/toji/ingredient/rice/actual_steamable.rb
136
- - lib/toji/ingredient/rice/base.rb
137
- - lib/toji/ingredient/rice/expected.rb
138
- - lib/toji/ingredient/rice/expected_steamable.rb
139
- - lib/toji/ingredient/yeast.rb
140
- - lib/toji/ingredient/yeast/base.rb
141
- - lib/toji/ingredient/yeast/red_star.rb
142
- - lib/toji/product.rb
143
- - lib/toji/product/base.rb
144
- - lib/toji/product/job.rb
145
- - lib/toji/product/job_accessor.rb
146
- - lib/toji/product/koji_making.rb
147
- - lib/toji/product/moromi.rb
148
- - lib/toji/product/shubo.rb
122
+ - lib/toji/brew.rb
123
+ - lib/toji/brew/base.rb
124
+ - lib/toji/brew/builder.rb
125
+ - lib/toji/brew/graph.rb
126
+ - lib/toji/brew/graph/ab.rb
127
+ - lib/toji/brew/graph/bmd.rb
128
+ - lib/toji/brew/graph/progress.rb
129
+ - lib/toji/brew/koji.rb
130
+ - lib/toji/brew/moromi.rb
131
+ - lib/toji/brew/shubo.rb
132
+ - lib/toji/brew/state.rb
133
+ - lib/toji/brew/state_accessor.rb
134
+ - lib/toji/brew/state_record.rb
149
135
  - lib/toji/recipe.rb
136
+ - lib/toji/recipe/ingredient.rb
137
+ - lib/toji/recipe/ingredient/koji.rb
138
+ - lib/toji/recipe/ingredient/koji/actual.rb
139
+ - lib/toji/recipe/ingredient/koji/actual_fermentable.rb
140
+ - lib/toji/recipe/ingredient/koji/base.rb
141
+ - lib/toji/recipe/ingredient/koji/expected.rb
142
+ - lib/toji/recipe/ingredient/koji/expected_fermentable.rb
143
+ - lib/toji/recipe/ingredient/lactic_acid.rb
144
+ - lib/toji/recipe/ingredient/rice.rb
145
+ - lib/toji/recipe/ingredient/rice/actual.rb
146
+ - lib/toji/recipe/ingredient/rice/actual_steamable.rb
147
+ - lib/toji/recipe/ingredient/rice/base.rb
148
+ - lib/toji/recipe/ingredient/rice/expected.rb
149
+ - lib/toji/recipe/ingredient/rice/expected_steamable.rb
150
+ - lib/toji/recipe/ingredient/yeast.rb
150
151
  - lib/toji/recipe/koji_rate.rb
152
+ - lib/toji/recipe/lactic_acid_rate.rb
151
153
  - lib/toji/recipe/rice_rate.rb
152
154
  - lib/toji/recipe/rice_rate/base.rb
153
155
  - lib/toji/recipe/rice_rate/cooked.rb
154
156
  - lib/toji/recipe/rice_rate/steamed.rb
155
157
  - lib/toji/recipe/step.rb
156
158
  - lib/toji/recipe/three_step_mashing.rb
159
+ - lib/toji/recipe/yeast_rate.rb
157
160
  - lib/toji/version.rb
158
161
  - toji.gemspec
159
162
  homepage: https://github.com/yoshida-eth0/ruby-toji