summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorDaniel Beauchamp <daniel.beauchamp@shopify.com>2012-08-13 23:36:38 -0400
committerDaniel Beauchamp <daniel.beauchamp@shopify.com>2012-08-13 23:36:38 -0400
commit16f51fd9dc454b26d9866b080caa17ffe2f8ce27 (patch)
tree2c031e8c8e629bdf096b00cc445d04e7782af2c3 /lib
parent41d8c33a6b87c948a7fe4ae5e53483d42fead422 (diff)
Updated to use sprockets! Ah, much cleaner.
Diffstat (limited to 'lib')
-rw-r--r--lib/dashing.rb57
1 files changed, 20 insertions, 37 deletions
diff --git a/lib/dashing.rb b/lib/dashing.rb
index 8b2af2f..ee7cd1f 100644
--- a/lib/dashing.rb
+++ b/lib/dashing.rb
@@ -1,4 +1,5 @@
require 'sinatra'
+require 'sprockets'
require 'sinatra/content_for'
require 'rufus/scheduler'
require 'coffee-script'
@@ -7,9 +8,18 @@ require 'json'
SCHEDULER = Rufus::Scheduler.start_new
+set :root, Dir.pwd
+
+set :sprockets, Sprockets::Environment.new(settings.root)
+set :assets_prefix, '/assets'
+set :digest_assets, false
+['assets/javascripts', 'assets/stylesheets', 'assets/fonts', 'assets/images', 'widgets', File.expand_path('../../javascripts', __FILE__)]. each do |path|
+ settings.sprockets.append_path path
+end
+
set server: 'thin', connections: [], history: {}
-set :public_folder, File.join(Dir.pwd, 'public')
-set :views, File.join(Dir.pwd, 'dashboards')
+set :public_folder, File.join(settings.root, 'public')
+set :views, File.join(settings.root, 'dashboards')
set :default_dashboard, nil
set :auth_token, nil
@@ -45,7 +55,7 @@ end
get '/views/:widget?.html' do
protected!
widget = params[:widget]
- send_file File.join(Dir.pwd, 'widgets', widget, "#{widget}.html")
+ send_file File.join(settings.root, 'widgets', widget, "#{widget}.html")
end
post '/widgets/:id' do
@@ -61,39 +71,12 @@ post '/widgets/:id' do
end
end
-def framework_javascripts
- ['jquery.js', 'es5-shim.js', 'batman.js', 'batman.jquery.js', 'application.coffee', 'widget.coffee'].collect do |f|
- File.join(File.expand_path('../../vendor/javascripts', __FILE__), f)
- end
-end
-
-def widget_javascripts
- asset_paths("/widgets/**/*.coffee")
-end
-
-def javascripts
- (framework_javascripts + widget_javascripts).collect do |f|
- if File.extname(f) == ".coffee"
- begin
- CoffeeScript.compile(File.read(f))
- rescue ExecJS::ProgramError => e
- message = e.message + ": in #{f}"
- raise ExecJS::ProgramError.new(message)
- end
- else
- File.read(f)
- end
- end.join("\n")
-end
-
-def stylesheets
- asset_paths("/public/**/*.scss", "/widgets/**/*.scss").collect do |f|
- Sass.compile File.read(f)
- end.join("\n")
+def development?
+ ENV['RACK_ENV'] == 'development'
end
-def asset_paths(*paths)
- paths.inject([]) { |arr, path| arr + Dir[File.join(Dir.pwd, path)] }
+def production?
+ ENV['RACK_ENV'] == 'production'
end
def send_event(id, body)
@@ -119,8 +102,8 @@ def first_dashboard
files.first
end
-Dir[File.join(Dir.pwd, 'lib', '**', '*.rb')].each {|file| require file }
+Dir[File.join(settings.root, 'lib', '**', '*.rb')].each {|file| require file }
job_path = ENV["JOB_PATH"] || 'jobs'
-files = Dir[File.join(Dir.pwd, job_path, '/*.rb')]
-files.each { |job| require(job) } \ No newline at end of file
+files = Dir[File.join(settings.root, job_path, '/*.rb')]
+files.each { |job| require(job) }