From a158e0955ce58c84ed882cc6b32985d4ac567d36 Mon Sep 17 00:00:00 2001 From: CyberLeo Date: Wed, 28 Jan 2015 17:51:37 -0600 Subject: [PATCH] Screwing around --- .rbenv-vars | 2 ++ .ruby-version | 1 + Gemfile | 7 ++++ Gemfile.lock | 44 ++++++++++++++++++++++++ Procfile | 1 + app.rb | 49 +++++++++++++++++++++++++++ config.ru | 10 ++++++ unicorn.rb | 21 ++++++++++++ views/handler_js.erb | 46 +++++++++++++++++++++++++ views/index.erb | 24 ++++++++++++++ views/meta_css.erb | 72 ++++++++++++++++++++++++++++++++++++++++ views/result.erb | 10 ++++++ views/tracklist_json.erb | 10 ++++++ views/tracklist_xml.erb | 10 ++++++ 14 files changed, 307 insertions(+) create mode 100644 .rbenv-vars create mode 100644 .ruby-version create mode 100644 Gemfile create mode 100644 Gemfile.lock create mode 100644 Procfile create mode 100644 app.rb create mode 100644 config.ru create mode 100644 unicorn.rb create mode 100644 views/handler_js.erb create mode 100644 views/index.erb create mode 100644 views/meta_css.erb create mode 100644 views/result.erb create mode 100644 views/tracklist_json.erb create mode 100644 views/tracklist_xml.erb diff --git a/.rbenv-vars b/.rbenv-vars new file mode 100644 index 0000000..f86c6a4 --- /dev/null +++ b/.rbenv-vars @@ -0,0 +1,2 @@ +PORT=8080 +RACK_ENV=development diff --git a/.ruby-version b/.ruby-version new file mode 100644 index 0000000..7d2ed7c --- /dev/null +++ b/.ruby-version @@ -0,0 +1 @@ +2.1.4 diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..a346d2d --- /dev/null +++ b/Gemfile @@ -0,0 +1,7 @@ +source 'https://rubygems.org/' + +gem 'foreman' +gem 'unicorn' +gem 'sinatra' +gem 'sinatra-contrib' +gem 'yajl-ruby' diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 0000000..23e46db --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,44 @@ +GEM + remote: https://rubygems.org/ + specs: + backports (3.6.4) + dotenv (1.0.2) + foreman (0.77.0) + dotenv (~> 1.0.2) + thor (~> 0.19.1) + kgio (2.9.3) + multi_json (1.10.1) + rack (1.6.0) + rack-protection (1.5.3) + rack + rack-test (0.6.3) + rack (>= 1.0) + raindrops (0.13.0) + sinatra (1.4.5) + rack (~> 1.4) + rack-protection (~> 1.4) + tilt (~> 1.3, >= 1.3.4) + sinatra-contrib (1.4.2) + backports (>= 2.0) + multi_json + rack-protection + rack-test + sinatra (~> 1.4.0) + tilt (~> 1.3) + thor (0.19.1) + tilt (1.4.1) + unicorn (4.8.3) + kgio (~> 2.6) + rack + raindrops (~> 0.7) + yajl-ruby (1.2.1) + +PLATFORMS + ruby + +DEPENDENCIES + foreman + sinatra + sinatra-contrib + unicorn + yajl-ruby diff --git a/Procfile b/Procfile new file mode 100644 index 0000000..dc85175 --- /dev/null +++ b/Procfile @@ -0,0 +1 @@ +web: bundle exec unicorn -p $PORT -c unicorn.rb diff --git a/app.rb b/app.rb new file mode 100644 index 0000000..45763c7 --- /dev/null +++ b/app.rb @@ -0,0 +1,49 @@ +require 'sinatra/base' +require 'sinatra/json' +require 'yajl' +require 'yajl/json_gem' + +$tracklist = [ + { index: 1, + title: 'Lucky Star - ???? Sailor Fuku', + metadata: '', + length: 200, + bpm: 141, + notes: 'Pitch this one up to about 150-155 to mix with the next track; mix in at ~3:14' + }, + { index: 2, + title: 'M-Project - Cherry', + metadata: 'M-Project - Cherry', + length: 216, + bpm: 160, + notes: 'Start this one slow and speed up after mixing last track out' + }, +] + +def tracklist_json + $tracklist.to_json +end + +class App < Sinatra::Base + configure do + set :protection, :except => :frame_options + end + + get '/tracklist.json' do + json $tracklist + end + + get '/js/handler.js' do + content_type 'text/javascript' + erb :handler_js + end + + get '/css/meta.css' do + content_type 'text/css' + erb :meta_css + end + + get '/' do + erb :index, :locals => { :tracklist => tracklist_json } + end +end diff --git a/config.ru b/config.ru new file mode 100644 index 0000000..13dfd2b --- /dev/null +++ b/config.ru @@ -0,0 +1,10 @@ +use Rack::Reloader, 0 +use Rack::ContentLength +use Rack::Logger + +require 'sinatra' + +$:.push('lib') +require './app.rb' + +run App diff --git a/unicorn.rb b/unicorn.rb new file mode 100644 index 0000000..698c9d6 --- /dev/null +++ b/unicorn.rb @@ -0,0 +1,21 @@ +worker_processes 1 +preload_app true +timeout 30 + +before_fork do |server, worker| + + Signal.trap 'TERM' do + puts 'Unicorn master intercepting TERM and sending myself QUIT instead' + Process.kill 'QUIT', Process.pid + end + +end + +after_fork do |server, worker| + + Signal.trap 'TERM' do + puts 'Unicorn worker intercepting TERM and doing nothing. Wait for master to send QUIT' + end + +end + diff --git a/views/handler_js.erb b/views/handler_js.erb new file mode 100644 index 0000000..f153465 --- /dev/null +++ b/views/handler_js.erb @@ -0,0 +1,46 @@ +function format_track(index, title, length, bpm, notes) { + var minutes = Math.floor(length / 60); + var seconds = length % 60; + var length = minutes + ":" + ( "0" + seconds ).slice(-2); + entry = $('
'); + entry.append($('' + index + '')); + entry.append($('' + title + '')); + entry.append($('' + length + '')); + entry.append($('')); + entry.append($('' + bpm + ' BPM')); + entry.append($('' + notes + '')); + return entry; +} + +function init() { + for (var index in tracklist) { + track = tracklist[index]; + entry = format_track(track['index'], track['title'], track['length'], track['bpm'], track['notes']); + $('#tracks').append(entry); + } +} + +/* Track 0 is 'no current track' */ +function current(index) { + if (index < 0 || index > maximum_index) + return; + current_index = index; + $("div.track").removeClass("current"); + $("div#track_" + index).addClass("current"); +} + +function next() { + current(current_index + 1); +} + +function prev() { + current(current_index - 1); +} + +function commit() { +} + +maximum_index = tracklist.length; +current_index = 0; + +init(); diff --git a/views/index.erb b/views/index.erb new file mode 100644 index 0000000..bee2ca0 --- /dev/null +++ b/views/index.erb @@ -0,0 +1,24 @@ + + + + + + + + + +
+ - + Velkommen! + +
+
+
+ + + + + diff --git a/views/meta_css.erb b/views/meta_css.erb new file mode 100644 index 0000000..403121f --- /dev/null +++ b/views/meta_css.erb @@ -0,0 +1,72 @@ +body { + margin: 0; + padding: 0; +} +#controls { + border: 1px dashed red; + width: 100%; + padding: 0.2em; +} +#tracks { + width: 100%; + padding: 0.2em; + overflow: auto; +} + +.track { + border-top: 1px solid gray; + height: 3em; + padding: 0.25em; + padding-right: 0.5em; + margin: 0 0.5em; +} + +.track.current { + background: #fdd; +} + +.track:last-child { + border-bottom: none; +} + +.track > .index { + font-size: 24pt; + float: left; + padding: 0 0.25em; + margin-right: 0.1em; + border: 1px solid gray; + background: gray; +} + +.track > .title { + float: left; + font-size: 16pt; +} + +.track > .length { + font-size: 16pt; +/* + text-transform: uppercase; + padding-top: 10px; + padding-left: 5px; +*/ + float: right; +} + +.track > .clear { + float: left; + clear: both; +} + +.track > .bpm { + font-size: 12pt; + margin-top: -0.75em; + float: right; +} + +.track > .notes { + font-size: 10pt; + float: left; + margin-top: -0.75em; + padding-left: 3em; +} diff --git a/views/result.erb b/views/result.erb new file mode 100644 index 0000000..64b5bfd --- /dev/null +++ b/views/result.erb @@ -0,0 +1,10 @@ +<% +if result.passed? + sc = 'up' + err = '' +else + sc = 'down' + err = result.error ? " - #{CGI.escapeHTML(result.error)}" : '' +end +sc += ' stale' if result.stale? +%><%= result.type %>: <%= result.name %> <%= sc %> (<%= "%u" % result.age %>s ago)<%= err %>
\ No newline at end of file diff --git a/views/tracklist_json.erb b/views/tracklist_json.erb new file mode 100644 index 0000000..e981685 --- /dev/null +++ b/views/tracklist_json.erb @@ -0,0 +1,10 @@ + + + + 1 + M-Project - Cherry + M-Project - Cherry + 216 + 160 + + diff --git a/views/tracklist_xml.erb b/views/tracklist_xml.erb new file mode 100644 index 0000000..e981685 --- /dev/null +++ b/views/tracklist_xml.erb @@ -0,0 +1,10 @@ + + + + 1 + M-Project - Cherry + M-Project - Cherry + 216 + 160 + + -- 2.42.0