diff --git a/Gemfile b/Gemfile index 32ef4cf86..6eb78f919 100644 --- a/Gemfile +++ b/Gemfile @@ -4,6 +4,7 @@ gem "sinatra" gem "sinatra-activerecord" gem "sinatra-flash" gem "sinatra-contrib", github: "sinatra/sinatra-contrib" +gem "sinatra-assetpack", :require => "sinatra/assetpack" gem "i18n" gem "rake" @@ -15,8 +16,8 @@ gem "feedzirra", github: "swanson/feedzirra" gem "loofah" gem "nokogiri" gem "feedbag", github: "dwillis/feedbag" - gem "coveralls", require: false +gem "uglifier" group :production do gem "unicorn" diff --git a/Gemfile.lock b/Gemfile.lock index 56aa80c78..143147b1d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -62,12 +62,15 @@ GEM diff-lcs (1.2.4) dotenv (0.7.0) eventmachine (1.0.3) + execjs (1.4.0) + multi_json (~> 1.0) faker (1.1.2) i18n (~> 0.5) foreman (0.63.0) dotenv (>= 0.7) thor (>= 0.13.6) i18n (0.6.4) + jsmin (1.0.1) kgio (2.8.0) loofah (1.2.1) nokogiri (>= 1.4.4) @@ -118,6 +121,12 @@ GEM sinatra-activerecord (1.2.2) activerecord (~> 3.0) sinatra (~> 1.0) + sinatra-assetpack (0.2.2) + backports + jsmin + rack-test + sinatra + tilt (>= 1.3.0) sinatra-flash (0.3.0) sinatra (>= 1.0.0) slop (3.4.4) @@ -125,6 +134,9 @@ GEM thor (0.18.1) tilt (1.4.1) tzinfo (0.3.37) + uglifier (2.1.0) + execjs (>= 0.3.0) + multi_json (~> 1.0, >= 1.0.2) unicorn (4.6.2) kgio (~> 2.6) rack @@ -155,8 +167,10 @@ DEPENDENCIES shotgun sinatra sinatra-activerecord + sinatra-assetpack sinatra-contrib! sinatra-flash sqlite3 + uglifier unicorn will_paginate diff --git a/app.rb b/app.rb index 1c7af2b26..d143d4b78 100644 --- a/app.rb +++ b/app.rb @@ -2,6 +2,7 @@ require "sinatra/activerecord" require "sinatra/flash" require "sinatra/contrib/all" +require "sinatra/assetpack" require "json" require "i18n" require "will_paginate" @@ -17,6 +18,7 @@ class Stringer < Sinatra::Base set :database_file, "config/database.yml" set :views, "app/views" set :public_dir, "app/public" + set :root, File.dirname(__FILE__) enable :sessions set :session_secret, ENV["SECRET_TOKEN"] || "secret!" @@ -25,6 +27,7 @@ class Stringer < Sinatra::Base register Sinatra::ActiveRecordExtension register Sinatra::Flash register Sinatra::Contrib + register Sinatra::AssetPack ActiveRecord::Base.include_root_in_json = false end @@ -49,6 +52,35 @@ def t(*args) end end + assets { + serve "/js", from: "app/public/js" + serve "/css", from: "app/public/css" + serve "/images", from: "app/public/img" + + js :application, "/js/application.js", [ + "/js/jquery-min.js", + "/js/bootstrap-min.js", + "/js/bootstrap.file-input.js", + "/js/mousetrap-min.js", + "/js/underscore-min.js", + "/js/backbone-min.js", + "/js/app.js" + ] + + css :application, "/css/application.css", [ + "/css/bootstrap-min.css", + "/css/flat-ui-no-icons.css", + "/css/font-awesome-min.css", + "/css/styles.css" + ] + + js_compression :uglify + css_compression :simple + + prebuild true + cache_dynamic_assets true + } + before do I18n.locale = ENV["LOCALE"].blank? ? :en : ENV["LOCALE"].to_sym diff --git a/app/views/layout.erb b/app/views/layout.erb index e150adf1a..57355f66b 100644 --- a/app/views/layout.erb +++ b/app/views/layout.erb @@ -8,18 +8,9 @@ - - - - - - - - - - - + <%= css :application %> + <%= js :application %> <%= yield_content :head %> @@ -43,7 +34,7 @@
- +