fistface 1.0.1 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ ZTUxMWRhZmIyOGY3OGE3YzJmMzVlZTY1MWI0ZmI4ZTc5YzRkYzc2OQ==
5
+ data.tar.gz: !binary |-
6
+ ZmJjZjVmMjE5MDhhNzk2MjBlN2JiOGI0NTUzOWY0MTI0MWVhZTk5Zg==
7
+ !binary "U0hBNTEy":
8
+ metadata.gz: !binary |-
9
+ MTQ1M2Q3OTJlODFlMzU1NTkyZjBiYzkxYjMxNjk0NGUzNGUyYjgzZWQ1OGM4
10
+ MDM0ZTVhMGU5YjY3N2M0OGRkZDEwZjEyZWFkN2IyNzc3NDA3ZmEyYmRlOTZm
11
+ ODBkZjQ4ZWZkZWJiYzkzZGM1NDNlNTBjNTU2MTNjYjc1YzZlYTM=
12
+ data.tar.gz: !binary |-
13
+ YjBiYzU5NjUyMmQ4YjdkZTgzZDc3OTcyYTlmMzk1NDU1OThmNDY2N2EwNWE0
14
+ NDRjNTc2ZjBmNmU1YjRmMzkxMTc2NWY2MDE3OWI4OTIzNzVkY2MyMTMwNTc5
15
+ ZmI2YWEwNDIwODgzYTE4NzQ2ZDQ0MmNkMTEzNjExZjNmMTAyMzI=
@@ -7,31 +7,31 @@ PATH
7
7
  GEM
8
8
  remote: http://rubygems.org/
9
9
  specs:
10
- diff-lcs (1.1.2)
10
+ diff-lcs (1.2.1)
11
11
  rack (1.3.1)
12
12
  rack-test (0.6.0)
13
13
  rack (>= 1.0)
14
- rake (0.9.2.2)
15
- rspec (2.6.0)
16
- rspec-core (~> 2.6.0)
17
- rspec-expectations (~> 2.6.0)
18
- rspec-mocks (~> 2.6.0)
19
- rspec-core (2.6.4)
20
- rspec-expectations (2.6.0)
21
- diff-lcs (~> 1.1.2)
22
- rspec-mocks (2.6.0)
14
+ rake (10.0.3)
15
+ rspec (2.13.0)
16
+ rspec-core (~> 2.13.0)
17
+ rspec-expectations (~> 2.13.0)
18
+ rspec-mocks (~> 2.13.0)
19
+ rspec-core (2.13.1)
20
+ rspec-expectations (2.13.0)
21
+ diff-lcs (>= 1.1.3, < 2.0)
22
+ rspec-mocks (2.13.0)
23
23
  sinatra (1.2.7)
24
24
  rack (~> 1.1)
25
- tilt (< 2.0, >= 1.2.2)
25
+ tilt (>= 1.2.2, < 2.0)
26
26
  tilt (1.3.3)
27
- timecop (0.3.5)
27
+ timecop (0.6.1)
28
28
 
29
29
  PLATFORMS
30
30
  ruby
31
31
 
32
32
  DEPENDENCIES
33
33
  fistface!
34
- rack-test
35
- rake
36
- rspec
37
- timecop
34
+ rack-test (~> 0.6)
35
+ rake (~> 10.0)
36
+ rspec (~> 2.13)
37
+ timecop (~> 0.6)
@@ -1,4 +1,4 @@
1
- Copyright 2011 thoughtbot, inc.
1
+ Copyright 2010-2013 thoughtbot, inc.
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -24,24 +24,32 @@ Setup
24
24
 
25
25
  Create a Gemfile:
26
26
 
27
- source "http://rubygems.org"
28
- gem "sinatra", "~> 1.1"
29
- gem "fistface", "~> 1.0"
27
+ source 'http://rubygems.org'
28
+ gem 'sinatra', '~> 1.1'
29
+ gem 'fistface', '~> 1.0'
30
30
 
31
31
  Create a rackup file (config.ru):
32
32
 
33
33
  require 'rubygems'
34
34
  require 'bundler'
35
35
  Bundler.require
36
- run FistFace
36
+ run Sinatra::FistFace
37
+ run Sinatra::Application
37
38
 
38
- Prepare the production environment:
39
+ Prepare the app for production:
39
40
 
40
41
  bundle install
41
42
  git init
42
43
  git add .
43
- git commit -m "Creating a Fist Face instance"
44
- heroku create
44
+ git commit -m 'Creating a Fist Face instance'
45
+
46
+ Create the production environment. Use Heroku's Bamboo stack in order to use
47
+ [Varnish](https://devcenter.heroku.com/articles/http-caching):
48
+
49
+ heroku create your-app-name-here --stack bamboo-mri-1.9.2
50
+
51
+ Add your S3 bucket:
52
+
45
53
  heroku config:add S3_URL=https://your-bucket.s3.amazonaws.com
46
54
 
47
55
  Do not include a trailing slash.
@@ -106,4 +114,4 @@ The names and logos for thoughtbot are trademarks of thoughtbot, inc.
106
114
  License
107
115
  -------
108
116
 
109
- Fist Face is Copyright © 2011 thoughtbot. It is free software, and may be redistributed under the terms specified in the MIT-LICENSE file.
117
+ Fist Face is Copyright © 2010-2013 thoughtbot, inc. It is free software, and may be redistributed under the terms specified in the MIT-LICENSE file.
@@ -1,27 +1,22 @@
1
1
  # -*- encoding: utf-8 -*-
2
- $:.push File.expand_path("../lib", __FILE__)
3
- require "fistface/version"
2
+ $:.push File.expand_path('../lib', __FILE__)
3
+ require 'fistface/version'
4
4
 
5
5
  Gem::Specification.new do |s|
6
-
7
- # Dependencies
8
6
  s.add_dependency('sinatra', '~> 1.1')
9
- s.add_development_dependency("rspec")
10
- s.add_development_dependency("rack-test")
11
- s.add_development_dependency("timecop")
12
- s.add_development_dependency("rake")
13
-
14
- #Configuration
15
- s.name = 'fistface'
16
- s.version = Fistface::VERSION
17
- s.authors = ['Dan Croak']
18
- s.email = 'support@thoughtbot.com'
19
- s.homepage = 'http://github.com/thoughtbot/fistface'
20
- s.summary = 'DIY @font-face web service'
7
+ s.add_development_dependency('rack-test', '~> 0.6')
8
+ s.add_development_dependency('rake', '~> 10.0')
9
+ s.add_development_dependency('rspec', '~> 2.13')
10
+ s.add_development_dependency('timecop', '~> 0.6')
11
+ s.authors = ['Dan Croak']
21
12
  s.description = 'Pow. Right in the kisser.'
22
-
23
- s.files = `git ls-files`.split("\n")
24
- s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
25
- s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
26
- s.require_paths = ["lib"]
13
+ s.email = 'support@thoughtbot.com'
14
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
15
+ s.files = `git ls-files`.split("\n")
16
+ s.homepage = 'http://github.com/thoughtbot/fistface'
17
+ s.name = 'fistface'
18
+ s.require_paths = ['lib']
19
+ s.summary = 'DIY @font-face web service'
20
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
21
+ s.version = FistFace::VERSION
27
22
  end
@@ -6,30 +6,29 @@ module Sinatra
6
6
 
7
7
  def self.registered(app)
8
8
  app.before do
9
- one_year_in_seconds = 31536000
10
-
11
- headers 'Cache-Control' => "public, max-age=#{one_year_in_seconds}",
12
- 'Expires' => (Time.now + one_year_in_seconds).httpdate,
13
- 'Access-Control-Allow-Origin' => '*'
9
+ expires 31536000, :public
10
+ headers 'Access-Control-Allow-Origin' => '*'
14
11
  end
15
12
 
16
13
  app.get '/:font_face.css' do
17
- headers['Content-Type'] = 'text/css'
14
+ content_type 'text/css'
18
15
  open("#{ENV['S3_URL']}/#{params[:font_face]}.css").read
19
16
  end
20
17
 
21
18
  app.get '/:directory/:font_face' do
22
- headers['Content-Type'] = case params[:font_face]
23
- when /\.ttf$/ then 'font/truetype'
24
- when /\.otf$/ then 'font/opentype'
25
- when /\.woff$/ then 'font/woff'
26
- when /\.eot$/ then 'application/vnd.ms-fontobject'
27
- when /\.svg$/ then 'image/svg+xml'
28
- end
19
+ content_type(
20
+ case params[:font_face]
21
+ when /\.ttf$/ then 'font/truetype'
22
+ when /\.otf$/ then 'font/opentype'
23
+ when /\.woff$/ then 'font/woff'
24
+ when /\.eot$/ then 'application/vnd.ms-fontobject'
25
+ when /\.svg$/ then 'image/svg+xml'
26
+ end
27
+ )
29
28
  open("#{ENV['S3_URL']}/#{params[:directory]}/#{params[:font_face]}").read
30
29
  end
31
-
32
30
  end
33
31
  end
32
+
34
33
  register FistFace
35
- end
34
+ end
@@ -1,3 +1,3 @@
1
- module Fistface
2
- VERSION = "1.0.1"
1
+ module FistFace
2
+ VERSION = '1.0.2'
3
3
  end
@@ -1,38 +1,38 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe "FistFace" do
3
+ describe 'FistFace' do
4
4
  include Rack::Test::Methods
5
5
 
6
6
  def app
7
7
  @app ||= Sinatra::Application
8
8
  end
9
9
 
10
- context "when I GET a font stylesheet by convention of font-name.css" do
10
+ context 'when I GET a font stylesheet by convention of font-name.css' do
11
11
  before do
12
12
  Timecop.freeze(first_of_january)
13
13
 
14
- get "chunk.css"
14
+ get 'chunk.css'
15
15
  end
16
16
 
17
17
  after { Timecop.return }
18
18
 
19
- it "responds with HTTP status OK" do
19
+ it 'responds with HTTP status OK' do
20
20
  last_response.should be_ok
21
21
  end
22
22
 
23
- it "has the @font-face declaration in the CSS body" do
23
+ it 'has the @font-face declaration in the CSS body' do
24
24
  last_response.body.should == File.read('spec/fixtures/chunk.css')
25
25
  end
26
26
 
27
- it "is in the CSS Content-Type" do
28
- last_response.content_type.should == 'text/css'
27
+ it 'is in the CSS Content-Type' do
28
+ last_response.content_type.should == 'text/css;charset=utf-8'
29
29
  end
30
30
 
31
- it "wildcards the Access-Control-Allow-Origin header so Firefox can access the file" do
31
+ it 'wildcards the Access-Control-Allow-Origin header so Firefox can access the file' do
32
32
  last_response.headers['Access-Control-Allow-Origin'].should == '*'
33
33
  end
34
34
 
35
- it "HTTP caches the file for a year in Varnish" do
35
+ it 'HTTP caches the file for a year in HTTP accelerators like Varnish' do
36
36
  last_response.headers['Cache-Control'].should == 'public, max-age=31536000'
37
37
  end
38
38
 
@@ -41,28 +41,28 @@ describe "FistFace" do
41
41
  end
42
42
  end
43
43
 
44
- context "when I GET a font file by convention of font-name/font-name.ttf" do
44
+ context 'when I GET a font file by convention of font-name/font-name.ttf' do
45
45
  before do
46
46
  Timecop.freeze(first_of_january)
47
47
 
48
- get "chunk/chunk.ttf"
48
+ get 'chunk/chunk.ttf'
49
49
  end
50
50
 
51
51
  after { Timecop.return }
52
52
 
53
- it "responds with HTTP status OK" do
53
+ it 'responds with HTTP status OK' do
54
54
  last_response.should be_ok
55
55
  end
56
56
 
57
- it "is in the truetype Content-Type" do
57
+ it 'is in the truetype Content-Type' do
58
58
  last_response.content_type.should == 'font/truetype'
59
59
  end
60
60
 
61
- it "wildcards the Access-Control-Allow-Origin header so Firefox can access the file" do
61
+ it 'wildcards the Access-Control-Allow-Origin header so Firefox can access the file' do
62
62
  last_response.headers['Access-Control-Allow-Origin'].should == '*'
63
63
  end
64
64
 
65
- it "HTTP caches the file for a year in Varnish" do
65
+ it 'HTTP caches the file for a year in Varnish' do
66
66
  last_response.headers['Cache-Control'].should == 'public, max-age=31536000'
67
67
  end
68
68
 
@@ -71,39 +71,39 @@ describe "FistFace" do
71
71
  end
72
72
  end
73
73
 
74
- context "when I GET an opentype font" do
75
- before { get "chunk/chunk.otf" }
74
+ context 'when I GET an opentype font' do
75
+ before { get 'chunk/chunk.otf' }
76
76
 
77
- it "is in the opentype Content-Type" do
77
+ it 'is in the opentype Content-Type' do
78
78
  last_response.content_type.should == 'font/opentype'
79
79
  end
80
80
  end
81
81
 
82
- context "when I GET a web open font format font" do
83
- before { get "chunk/chunk.woff" }
82
+ context 'when I GET a web open font format font' do
83
+ before { get 'chunk/chunk.woff' }
84
84
 
85
- it "is in the web open font format Content-Type" do
85
+ it 'is in the web open font format Content-Type' do
86
86
  last_response.content_type.should == 'font/woff'
87
87
  end
88
88
  end
89
89
 
90
- context "when I GET an embedded opentype font" do
91
- before { get "chunk/chunk.eot" }
90
+ context 'when I GET an embedded opentype font' do
91
+ before { get 'chunk/chunk.eot' }
92
92
 
93
- it "is in the embedded opentype Content-Type" do
93
+ it 'is in the embedded opentype Content-Type' do
94
94
  last_response.content_type.should == 'application/vnd.ms-fontobject'
95
95
  end
96
96
  end
97
97
 
98
- context "when I GET an svg font" do
99
- before { get "chunk/chunk.svg" }
98
+ context 'when I GET an svg font' do
99
+ before { get 'chunk/chunk.svg' }
100
100
 
101
- it "is in the svg Content-Type" do
101
+ it 'is in the svg Content-Type' do
102
102
  last_response.content_type.should == 'image/svg+xml'
103
103
  end
104
104
  end
105
105
 
106
106
  def first_of_january
107
- Date.parse("January 1, 2011")
107
+ Date.parse('January 1, 2011')
108
108
  end
109
109
  end
@@ -5,4 +5,4 @@ require 'rack/test'
5
5
  require 'timecop'
6
6
 
7
7
  ENV['RACK_ENV'] = 'test'
8
- ENV['S3_URL'] = 'spec/fixtures'
8
+ ENV['S3_URL'] = 'spec/fixtures'
metadata CHANGED
@@ -1,71 +1,85 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fistface
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
5
- prerelease:
4
+ version: 1.0.2
6
5
  platform: ruby
7
6
  authors:
8
7
  - Dan Croak
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2011-12-03 00:00:00.000000000Z
11
+ date: 2013-03-23 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: sinatra
16
- requirement: &70296433657120 !ruby/object:Gem::Requirement
17
- none: false
15
+ requirement: !ruby/object:Gem::Requirement
18
16
  requirements:
19
17
  - - ~>
20
18
  - !ruby/object:Gem::Version
21
19
  version: '1.1'
22
20
  type: :runtime
23
21
  prerelease: false
24
- version_requirements: *70296433657120
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.1'
25
27
  - !ruby/object:Gem::Dependency
26
- name: rspec
27
- requirement: &70296433656700 !ruby/object:Gem::Requirement
28
- none: false
28
+ name: rack-test
29
+ requirement: !ruby/object:Gem::Requirement
29
30
  requirements:
30
- - - ! '>='
31
+ - - ~>
31
32
  - !ruby/object:Gem::Version
32
- version: '0'
33
+ version: '0.6'
33
34
  type: :development
34
35
  prerelease: false
35
- version_requirements: *70296433656700
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: '0.6'
36
41
  - !ruby/object:Gem::Dependency
37
- name: rack-test
38
- requirement: &70296433656240 !ruby/object:Gem::Requirement
39
- none: false
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
40
44
  requirements:
41
- - - ! '>='
45
+ - - ~>
42
46
  - !ruby/object:Gem::Version
43
- version: '0'
47
+ version: '10.0'
44
48
  type: :development
45
49
  prerelease: false
46
- version_requirements: *70296433656240
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: '10.0'
47
55
  - !ruby/object:Gem::Dependency
48
- name: timecop
49
- requirement: &70296433655820 !ruby/object:Gem::Requirement
50
- none: false
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
51
58
  requirements:
52
- - - ! '>='
59
+ - - ~>
53
60
  - !ruby/object:Gem::Version
54
- version: '0'
61
+ version: '2.13'
55
62
  type: :development
56
63
  prerelease: false
57
- version_requirements: *70296433655820
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: '2.13'
58
69
  - !ruby/object:Gem::Dependency
59
- name: rake
60
- requirement: &70296433655400 !ruby/object:Gem::Requirement
61
- none: false
70
+ name: timecop
71
+ requirement: !ruby/object:Gem::Requirement
62
72
  requirements:
63
- - - ! '>='
73
+ - - ~>
64
74
  - !ruby/object:Gem::Version
65
- version: '0'
75
+ version: '0.6'
66
76
  type: :development
67
77
  prerelease: false
68
- version_requirements: *70296433655400
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ~>
81
+ - !ruby/object:Gem::Version
82
+ version: '0.6'
69
83
  description: Pow. Right in the kisser.
70
84
  email: support@thoughtbot.com
71
85
  executables: []
@@ -91,33 +105,26 @@ files:
91
105
  - spec/spec_helper.rb
92
106
  homepage: http://github.com/thoughtbot/fistface
93
107
  licenses: []
108
+ metadata: {}
94
109
  post_install_message:
95
110
  rdoc_options: []
96
111
  require_paths:
97
112
  - lib
98
113
  required_ruby_version: !ruby/object:Gem::Requirement
99
- none: false
100
114
  requirements:
101
115
  - - ! '>='
102
116
  - !ruby/object:Gem::Version
103
117
  version: '0'
104
- segments:
105
- - 0
106
- hash: 1911532667743223418
107
118
  required_rubygems_version: !ruby/object:Gem::Requirement
108
- none: false
109
119
  requirements:
110
120
  - - ! '>='
111
121
  - !ruby/object:Gem::Version
112
122
  version: '0'
113
- segments:
114
- - 0
115
- hash: 1911532667743223418
116
123
  requirements: []
117
124
  rubyforge_project:
118
- rubygems_version: 1.8.6
125
+ rubygems_version: 2.0.0
119
126
  signing_key:
120
- specification_version: 3
127
+ specification_version: 4
121
128
  summary: DIY @font-face web service
122
129
  test_files:
123
130
  - spec/fistface_spec.rb