Class: Glslkit::Rails::LiveReload::ProgramsController

Inherits:
ActionController::API
  • Object
show all
Defined in:
lib/glslkit/rails/live_reload/programs_controller.rb

Overview

ライブリロードのポーリング対象になる2つのエンドポイント(§3.3)。 ActionController::API を使う(SPEC-livereload.md 決定7)。development でのみマウントされる(Engine#config.glslkit.live_reload が false の 場合は Railtie が一切マウントしないため、production ではこの コントローラ自体にルーティングで到達できない)。

Preprocessor/Validator の失敗は200 + ペイロードで返す(§3.4)。それ以外の 想定外の例外はここで握り潰さず、素通しして500にする。

Instance Method Summary collapse

Instance Method Details

#digestsObject

GET /glslkit/digests.json => => "5059f642...", ... ソースdigest(決定1)のみを返す軽量エンドポイント。



19
20
21
22
23
24
# File 'lib/glslkit/rails/live_reload/programs_controller.rb', line 19

def digests
  digests = ShaderPrograms.discover(rails_app).each_with_object({}) do |(name, stages), acc|
    acc[name] = build(name, stages).source_digest
  end
  render json: digests
end

#showObject

GET /glslkit/programs/:name.json => §3.2 のJSON(失敗時は§3.4)。



27
28
29
30
31
32
33
# File 'lib/glslkit/rails/live_reload/programs_controller.rb', line 27

def show
  programs = ShaderPrograms.discover(rails_app)
  stages = programs[params[:name]]
  return head :not_found unless stages

  render json: payload_for(build(params[:name], stages))
end