Skip to content
This repository was archived by the owner on Mar 7, 2018. It is now read-only.

Commit 8795505

Browse files
committed
use any Tilt-supported view engine for dashboards, including Haml
1 parent 56b3ac9 commit 8795505

File tree

2 files changed

+37
-5
lines changed

2 files changed

+37
-5
lines changed

lib/dashing.rb

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,12 @@ def protected!
5050

5151
get '/:dashboard' do
5252
protected!
53-
if File.exist? File.join(settings.views, "#{params[:dashboard]}.erb")
54-
erb params[:dashboard].to_sym
53+
view_engine = Tilt.mappings.keys.find do |ext|
54+
File.exist? File.join(settings.views, "#{params[:dashboard]}.#{ext}")
55+
end
56+
57+
if view_engine
58+
render view_engine.to_sym, params[:dashboard].to_sym
5559
else
5660
halt 404
5761
end
@@ -107,7 +111,7 @@ def latest_events
107111
end
108112

109113
def first_dashboard
110-
files = Dir[File.join(settings.views, '*.erb')].collect { |f| f.match(/(\w*).erb/)[1] }
114+
files = Dir[File.join(settings.views, '*')].collect { |f| File.basename(f, '.*') }
111115
files -= ['layout']
112116
files.first
113117
end

test/app_test.rb

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,14 +58,42 @@ def test_redirect_to_first_dashboard
5858
end
5959
end
6060

61+
def test_redirect_to_first_dashboard_without_erb
62+
with_generated_project do |dir|
63+
FileUtils.touch(File.join(dir, "dashboards/htmltest.html"))
64+
get '/'
65+
assert_equal 302, last_response.status
66+
assert_equal 'http://example.org/htmltest', last_response.location
67+
end
68+
end
69+
6170
def test_get_dashboard
6271
with_generated_project do
6372
get '/sampletv'
6473
assert_equal 200, last_response.status
6574
assert_include last_response.body, 'class="gridster"'
6675
end
6776
end
68-
77+
78+
begin
79+
require 'haml'
80+
def test_get_haml
81+
with_generated_project do |dir|
82+
File.write(File.join(dir, "dashboards/hamltest.haml"), <<-HAML)
83+
.gridster
84+
%ul
85+
%li{data: {col: 1, row: 1, sizex: 1, sizey: 1}}
86+
%div{data: {view: "Clock"}}
87+
%i.icon-time.icon-background
88+
HAML
89+
get '/hamltest'
90+
assert_equal 200, last_response.status
91+
assert_include last_response.body, "class='gridster'"
92+
end
93+
end
94+
rescue LoadError
95+
end
96+
6997
def test_get_nonexistent_dashboard
7098
with_generated_project do
7199
get '/nodashboard'
@@ -88,7 +116,7 @@ def with_generated_project
88116

89117
Sinatra::Application.settings.views = File.join(dir, 'new_project/dashboards')
90118
Sinatra::Application.settings.root = File.join(dir, 'new_project')
91-
yield
119+
yield Sinatra::Application.settings.root
92120
end
93121
end
94122

0 commit comments

Comments
 (0)