Skip to content
This repository has been archived by the owner on Nov 8, 2023. It is now read-only.

Commit

Permalink
Use Sinatra::ConfigFile to handle configuration
Browse files Browse the repository at this point in the history
  • Loading branch information
jedfoster committed Dec 3, 2014
1 parent 82157d7 commit 73fe5ee
Show file tree
Hide file tree
Showing 7 changed files with 94 additions and 46 deletions.
1 change: 1 addition & 0 deletions Gemfile
Expand Up @@ -4,6 +4,7 @@ ruby '2.0.0'
gem 'rack-contrib', :git => 'git://github.com/rack/rack-contrib.git'
gem 'sinatra'
gem 'sinatra-partial'
gem 'sinatra-contrib'
gem 'unicorn'
gem 'chairman'
gem 'rack-cache'
Expand Down
9 changes: 9 additions & 0 deletions Gemfile.lock
Expand Up @@ -35,6 +35,7 @@ GEM
aws-sdk (1.47.0)
json (~> 1.4)
nokogiri (>= 1.4.4)
backports (3.6.4)
chairman (0.1.6)
dalli (~> 2.6.4)
faraday-http-cache (~> 0.4.0)
Expand Down Expand Up @@ -129,6 +130,13 @@ GEM
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)
sinatra-partial (0.4.0)
sinatra
slop (3.4.7)
Expand Down Expand Up @@ -168,6 +176,7 @@ DEPENDENCIES
sass
sawyer
sinatra
sinatra-contrib
sinatra-partial
stipe
unicorn
25 changes: 25 additions & 0 deletions config/api.yml
@@ -0,0 +1,25 @@
api:

# These defaults can be overridden with the following environment variables:
# ENV['LIBSASS_ENDPOINT']
# ENV['SASS_34_ENDPOINT']
# ENV['SASS_33_ENDPOINT']
# ENV['SASS_32_ENDPOINT']

development: &default_settings
endpoints:
lib: 'http://lib.sassmeister.dev'
'3.4': 'http://sass34.sassmeister.dev'
'3.3': 'http://sass33.sassmeister.dev'
'3.2': 'http://sass32.sassmeister.dev'

test:
<<: *default_settings

production:
endpoints:
lib: 'http://libsass.api.sassmeister.com'
'3.4': 'http://sassmeister-34.herokuapp.com'
'3.3': 'http://sassmeister-33.herokuapp.com'
'3.2': 'http://sassmeister-32.herokuapp.com'

20 changes: 20 additions & 0 deletions config/config.yml
@@ -0,0 +1,20 @@
development: &default_settings
app_version: '2.0.1'
session_duration: 7776000 # 90 days, in seconds
app_domain: 'sassmeister.dev'
sandbox_domain: 'sandbox.sassmeister.dev'
assets_host: '/'
cache_max_age: 0
cookie_domain: '.sassmeister.dev'

test:
<<: *default_settings

production:
<<: *default_settings
app_domain: 'sassmeister.com'
sandbox_domain: 'sandbox.sassmeister.com'
assets_host: 'http://cdn.sassmeister.com'
cache_max_age: 300 # 5 minutes
cookie_domain: '.sassmeister.com'

33 changes: 15 additions & 18 deletions lib/sassmeister/api_routes.rb
@@ -1,25 +1,22 @@
require 'sinatra/base'
require 'sinatra/config_file'
require 'sassmeister/client'

module SassMeister
class ApiRoutes < Sinatra::Base
configure :development, :test do
COMPILER_ENDPOINTS = {
'lib' => 'http://lib.sassmeister.dev',
'3.4' => 'http://sass34.sassmeister.dev',
'3.3' => 'http://sass33.sassmeister.dev',
'3.2' => 'http://sass32.sassmeister.dev'
}
end

configure :production do
COMPILER_ENDPOINTS = {
'lib' => ENV['LIBSASS_ENDPOINT'] || 'http://libsass.api.sassmeister.com',
'3.4' => ENV['SASS_34_ENDPOINT'] || 'http://sassmeister-34.herokuapp.com',
'3.3' => ENV['SASS_33_ENDPOINT'] || 'http://sassmeister-33.herokuapp.com',
'3.2' => ENV['SASS_32_ENDPOINT'] || 'http://sassmeister-32.herokuapp.com'
}
end

register Sinatra::ConfigFile

config_file '../../config/api.yml'

env_endpoints = {
'lib' => ENV['LIBSASS_ENDPOINT'],
'3.4' => ENV['SASS_34_ENDPOINT'],
'3.3' => ENV['SASS_33_ENDPOINT'],
'3.2' => ENV['SASS_32_ENDPOINT']
}

COMPILER_ENDPOINTS = settings.api[:endpoints].merge(env_endpoints) {|k, yml, env| env.nil? ? yml : env}

set :protection, except: :frame_options

before '/app/:compiler/*' do
Expand Down
27 changes: 12 additions & 15 deletions sassmeister.rb
Expand Up @@ -2,6 +2,7 @@

require 'sinatra/base'
require 'sinatra/partial'
require 'sinatra/config_file'
require 'chairman'
require 'json'
require 'yaml'
Expand All @@ -13,40 +14,36 @@

class SassMeisterApp < Sinatra::Base
register Sinatra::Partial
register Sinatra::ConfigFile

set :partial_template_engine, :erb

config_file 'config/config.yml'

use Chairman::Routes
use SassMeister::ApiRoutes

helpers SassMeister::Helpers
helpers Assets

APP_DOMAIN = settings.app_domain
SANDBOX_DOMAIN = settings.sandbox_domain
CACHE_MAX_AGE = settings.cache_max_age
Assets::HOST = settings.assets_host
COOKIE_DOMAIN = settings.cookie_domain
APP_VERSION = settings.app_version
SESSION_DURATION = settings.session_duration

configure :development, :test do
APP_DOMAIN = 'sassmeister.dev'
SANDBOX_DOMAIN = 'sandbox.sassmeister.dev'
yml = YAML.load_file 'config/github.yml'
Chairman.config yml['client_id'], yml['client_secret'], ['gist']
CACHE_MAX_AGE = 0
end

configure :production do
APP_DOMAIN = 'sassmeister.com'
SANDBOX_DOMAIN = 'sandbox.sassmeister.com'
Assets::HOST = 'http://cdn.sassmeister.com'
require 'newrelic_rpm'

Chairman.config ENV['GITHUB_ID'], ENV['GITHUB_SECRET'], ['gist']
CACHE_MAX_AGE = 300 # 5 mins.
end

configure do
APP_VERSION = '2.0.1'
SESSION_DURATION = 7776000 # 90 days, in seconds
COOKIE_DOMAIN = ".#{APP_DOMAIN}"
end


# implement redirects
class Chairman::Routes
configure do
Expand Down
25 changes: 12 additions & 13 deletions sassmeister_embedded.rb
Expand Up @@ -2,6 +2,7 @@

require 'sinatra/base'
require 'sinatra/partial'
require 'sinatra/config_file'
require 'chairman'
require 'json'
require 'yaml'
Expand All @@ -13,37 +14,35 @@

class SassMeisterEmbeddedApp < Sinatra::Base
register Sinatra::Partial
register Sinatra::ConfigFile

set :partial_template_engine, :erb
set :protection, except: :frame_options

config_file 'config/config.yml'

use SassMeister::ApiRoutes

helpers SassMeister::Helpers
helpers Assets

APP_DOMAIN = settings.app_domain
SANDBOX_DOMAIN = settings.sandbox_domain
CACHE_MAX_AGE = settings.cache_max_age
Assets::HOST = settings.assets_host
COOKIE_DOMAIN = settings.cookie_domain
APP_VERSION = settings.app_version
SESSION_DURATION = settings.session_duration

configure :development do
APP_DOMAIN = 'sassmeister.dev'
SANDBOX_DOMAIN = 'sandbox.sassmeister.dev'
yml = YAML.load_file 'config/github.yml'
Chairman.config yml['client_id'], yml['client_secret'], ['gist']
CACHE_MAX_AGE = 0
end

configure :production do
APP_DOMAIN = 'sassmeister.com'
SANDBOX_DOMAIN = 'sandbox.sassmeister.com'
Assets::HOST = 'http://cdn.sassmeister.com'

Chairman.config ENV['GITHUB_ID'], ENV['GITHUB_SECRET'], ['gist']
CACHE_MAX_AGE = 1800 # 30 mins.
end

configure do
APP_VERSION = '2.0.1'
end


before do
@github = Chairman.session(nil)
@gist = nil
Expand Down

0 comments on commit 73fe5ee

Please sign in to comment.