Class: Glslkit::Rails::ManifestBuilder
- Inherits:
-
Object
- Object
- Glslkit::Rails::ManifestBuilder
- Defined in:
- lib/glslkit/rails/manifest_builder.rb
Overview
config.glslkit.paths 配下からvertex/fragmentのペアを検出し、その すべてについて reflection-v1.json のマニフェスト(Glslkit::Manifest, M4) を組み立てる。stage.urlは Rails.application.assets.resolver 経由で 解決する。これはasset_path/asset_urlが内部で使っているのとまさに同じ 経路であり、developmentではDynamic、assets:precompile実行後はStatic (Propshaftが直前に書いた.manifest.jsonを読む)になる。
Instance Attribute Summary collapse
-
#diagnostics ⇒ Object
readonly
Returns the value of attribute diagnostics.
Instance Method Summary collapse
-
#build ⇒ Object
Validatorは常に実行し、@diagnosticsに集める(config.glslkit.validateの 値によらない)。
config.glslkit.validateは「診断を集めるかどうか」 ではなく「その診断を理由にビルド/リクエストを失敗させるかどうか」を 制御する。呼び出し側(Glslkit::Rails.manifest / rake glslkit:reflect / rake glslkit:check)がそれぞれの文脈でdiagnostics/failing?を見て 反応を決める(SPEC.md §8.6)。. -
#failing? ⇒ Boolean
エラーが1件でもあれば真。
fail_on_warningが有効なら警告のみでも真。 config.glslkit.validateがfalseなら常に偽(検証結果があっても ビルド/リクエストを失敗させない)。. -
#initialize(app) ⇒ ManifestBuilder
constructor
A new instance of ManifestBuilder.
Constructor Details
#initialize(app) ⇒ ManifestBuilder
Returns a new instance of ManifestBuilder.
16 17 18 19 |
# File 'lib/glslkit/rails/manifest_builder.rb', line 16 def initialize(app) @app = app @diagnostics = [] end |
Instance Attribute Details
#diagnostics ⇒ Object (readonly)
Returns the value of attribute diagnostics.
14 15 16 |
# File 'lib/glslkit/rails/manifest_builder.rb', line 14 def diagnostics @diagnostics end |
Instance Method Details
#build ⇒ Object
Validatorは常に実行し、@diagnosticsに集める(config.glslkit.validateの
値によらない)。config.glslkit.validateは「診断を集めるかどうか」
ではなく「その診断を理由にビルド/リクエストを失敗させるかどうか」を
制御する。呼び出し側(Glslkit::Rails.manifest / rake glslkit:reflect /
rake glslkit:check)がそれぞれの文脈でdiagnostics/failing?を見て
反応を決める(SPEC.md §8.6)。
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/glslkit/rails/manifest_builder.rb', line 27 def build @diagnostics = [] manifest = Glslkit::Manifest.new(generated_at: Time.now.utc.iso8601, generator: "glslkit/#{Glslkit::VERSION}") programs.each do |name, stages| vertex_source = preprocessor.process(stages.fetch(:vertex)) fragment_source = preprocessor.process(stages.fetch(:fragment)) validate(name, vertex_source, fragment_source) manifest.add_program( name, vertex: {path: stages.fetch(:vertex), source: vertex_source, url: asset_url(stages.fetch(:vertex))}, fragment: {path: stages.fetch(:fragment), source: fragment_source, url: asset_url(stages.fetch(:fragment))} ) end manifest.to_h end |
#failing? ⇒ Boolean
エラーが1件でもあれば真。fail_on_warningが有効なら警告のみでも真。
config.glslkit.validateがfalseなら常に偽(検証結果があっても
ビルド/リクエストを失敗させない)。
47 48 49 50 51 52 53 |
# File 'lib/glslkit/rails/manifest_builder.rb', line 47 def failing? return false unless glslkit_config.validate return true if @diagnostics.any?(&:error?) glslkit_config.fail_on_warning && @diagnostics.any?(&:warning?) end |