Class: Glslkit::Rails::LiveReload::ProgramsController
- Inherits:
-
ActionController::API
- Object
- ActionController::API
- Glslkit::Rails::LiveReload::ProgramsController
- 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
-
#digests ⇒ Object
GET /glslkit/digests.json => => "5059f642...", ... ソースdigest(決定1)のみを返す軽量エンドポイント。.
-
#show ⇒ Object
GET /glslkit/programs/:name.json => §3.2 のJSON(失敗時は§3.4)。.
Instance Method Details
#digests ⇒ Object
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 |
#show ⇒ Object
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 |