font_assets 0.0.1

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.
data/.gitignore ADDED
@@ -0,0 +1,5 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
5
+ *.swp
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in font_assets.gemspec
4
+ gemspec
data/README.md ADDED
@@ -0,0 +1,34 @@
1
+ Font Assets
2
+ =============
3
+
4
+ This little gem helps serve font-face assets in Rails 3.1. It really does these two things:
5
+
6
+ * Registers font Mime Types for woff, eot, tff, and svg font files
7
+ * Sets Access-Control-Allow-Origin response headers for font assets, which Firefox requires for cross domain fonts
8
+
9
+ Install
10
+ -------
11
+
12
+ Add `font_assets` to your Gemfile:
13
+
14
+ gem 'font_assets'
15
+
16
+
17
+ Usage
18
+ -----
19
+
20
+ Set the origin domain that will get set in the `Access-Control-Allow-Origin` header
21
+
22
+ # in config/environments/production.rb
23
+
24
+ config.font_assets.origin = 'http://codeschool.com'
25
+
26
+ The origin domain must match the domain of the site serving the page that is requesting the font, not the host of the font. For example, if you are using a CDN to serve your assets (like CloudFront), and the full path to the font asset is `http://d3rd6rvl24noqd.cloudfront.net/assets/fonts/Pacifico-webfont-734f1436e605566ae2f1c132905e28b2.woff`, but the URI the user is visiting if `http://coffeescript.codeschool.com/level/1`, you'd want to set the origin head to this:
27
+
28
+ config.font_assets.origin = 'http://coffeescript.codeschool.com'
29
+
30
+
31
+ License
32
+ -------
33
+
34
+ Font Assets is released under the MIT license.
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,24 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "font_assets/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "font_assets"
7
+ s.version = FontAssets::VERSION
8
+ s.authors = ["Eric Allam"]
9
+ s.email = ["rubymaverick@gmail.com"]
10
+ s.homepage = ""
11
+ s.summary = %q{Improve font serving in Rails 3.1}
12
+ s.description = %q{Improve font serving in Rails 3.1}
13
+
14
+ s.rubyforge_project = "font_assets"
15
+
16
+ s.files = `git ls-files`.split("\n")
17
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
+ s.require_paths = ["lib"]
20
+
21
+ # specify any dependencies here; for example:
22
+ # s.add_development_dependency "rspec"
23
+ # s.add_runtime_dependency "rest-client"
24
+ end
@@ -0,0 +1,7 @@
1
+ require "font_assets/version"
2
+ require "font_assets/railtie" if defined?(Rails)
3
+
4
+ module FontAssets
5
+ class Railtie < Rails::Railtie
6
+ end
7
+ end
@@ -0,0 +1,41 @@
1
+ module FontAssets
2
+ class Middleware
3
+
4
+ def initialize(app, origin)
5
+ @app = app
6
+ @origin = origin
7
+ end
8
+
9
+ def access_control_headers
10
+ {
11
+ "Access-Control-Allow-Origin" => @origin,
12
+ "Access-Control-Allow-Methods" => "GET",
13
+ "Access-Control-Allow-Headers" => "x-requested-with",
14
+ "Access-Control-Max-Age" => "3628800"
15
+ }
16
+ end
17
+
18
+ def call(env)
19
+ # intercept the "preflight" request
20
+ if env["REQUEST_METHOD"] == "OPTIONS"
21
+ return [200, access_control_headers, []]
22
+ else
23
+ code, headers, body = @app.call(env)
24
+ headers.merge!(access_control_headers) if font_asset?(env["PATH_INFO"])
25
+ [code, headers, body]
26
+ end
27
+ end
28
+
29
+ private
30
+
31
+ def extension(path)
32
+ path.split("?").first.split(".").last
33
+ end
34
+
35
+ def font_asset?(path)
36
+ %w(woff eot tff svg).include? extension(path)
37
+ end
38
+
39
+ end
40
+
41
+ end
@@ -0,0 +1,20 @@
1
+ require 'font_assets/middleware'
2
+
3
+ module FontAssets
4
+ class Railtie < Rails::Railtie
5
+ config.font_assets = ActiveSupport::OrderedOptions.new
6
+
7
+ initializer "font_assets.configure_rails_initialization" do |app|
8
+ config.font_assets.origin ||= "*"
9
+
10
+ app.middleware.insert_before 'ActionDispatch::Static', FontAssets::Middleware, config.font_assets.origin
11
+ end
12
+
13
+ config.after_initialize do
14
+ Rack::Mime::MIME_TYPES.merge! '.woff' => 'application/x-font-woff'
15
+ Rack::Mime::MIME_TYPES.merge! '.ttf' => 'application/x-font-ttf'
16
+ Rack::Mime::MIME_TYPES.merge! '.eot' => 'application/vnd.ms-fontobject'
17
+ Rack::Mime::MIME_TYPES.merge! '.svg' => 'image/svg+xml'
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,3 @@
1
+ module FontAssets
2
+ VERSION = "0.0.1"
3
+ end
metadata ADDED
@@ -0,0 +1,54 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: font_assets
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Eric Allam
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2011-12-15 00:00:00.000000000Z
13
+ dependencies: []
14
+ description: Improve font serving in Rails 3.1
15
+ email:
16
+ - rubymaverick@gmail.com
17
+ executables: []
18
+ extensions: []
19
+ extra_rdoc_files: []
20
+ files:
21
+ - .gitignore
22
+ - Gemfile
23
+ - README.md
24
+ - Rakefile
25
+ - font_assets.gemspec
26
+ - lib/font_assets.rb
27
+ - lib/font_assets/middleware.rb
28
+ - lib/font_assets/railtie.rb
29
+ - lib/font_assets/version.rb
30
+ homepage: ''
31
+ licenses: []
32
+ post_install_message:
33
+ rdoc_options: []
34
+ require_paths:
35
+ - lib
36
+ required_ruby_version: !ruby/object:Gem::Requirement
37
+ none: false
38
+ requirements:
39
+ - - ! '>='
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
42
+ required_rubygems_version: !ruby/object:Gem::Requirement
43
+ none: false
44
+ requirements:
45
+ - - ! '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ requirements: []
49
+ rubyforge_project: font_assets
50
+ rubygems_version: 1.8.10
51
+ signing_key:
52
+ specification_version: 3
53
+ summary: Improve font serving in Rails 3.1
54
+ test_files: []