fuji 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,18 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ coverage
6
+ InstalledFiles
7
+ lib/bundler/man
8
+ pkg
9
+ rdoc
10
+ spec/reports
11
+ test/tmp
12
+ test/version_tmp
13
+ tmp
14
+
15
+ # YARD artifacts
16
+ .yardoc
17
+ _yardoc
18
+ doc/
data/CONTRIBUTING.md ADDED
@@ -0,0 +1,7 @@
1
+ We love pull requests! Here's a quick guide:
2
+
3
+ 1. Fork the repo.
4
+ 1. Run the tests: `bundle && rake`
5
+ 1. Hack and test.
6
+ 1. Push to your fork and submit a pull request.
7
+ 1. Profit.
data/Gemfile ADDED
@@ -0,0 +1,2 @@
1
+ source 'https://rubygems.org'
2
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,35 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ fuji (0.0.1)
5
+ compass
6
+ sass
7
+
8
+ GEM
9
+ remote: https://rubygems.org/
10
+ specs:
11
+ chunky_png (1.2.6)
12
+ compass (0.12.2)
13
+ chunky_png (~> 1.2)
14
+ fssm (>= 0.2.7)
15
+ sass (~> 3.1)
16
+ diff-lcs (1.1.3)
17
+ fssm (0.2.9)
18
+ rake (10.0.2)
19
+ rspec (2.11.0)
20
+ rspec-core (~> 2.11.0)
21
+ rspec-expectations (~> 2.11.0)
22
+ rspec-mocks (~> 2.11.0)
23
+ rspec-core (2.11.1)
24
+ rspec-expectations (2.11.3)
25
+ diff-lcs (~> 1.1.3)
26
+ rspec-mocks (2.11.2)
27
+ sass (3.2.1)
28
+
29
+ PLATFORMS
30
+ ruby
31
+
32
+ DEPENDENCIES
33
+ fuji!
34
+ rake
35
+ rspec
data/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2012 zeke
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,54 @@
1
+ Fuji
2
+ ====
3
+
4
+ Fuji is a ruby gem for rendering and styling Heroku's global header and nav.
5
+
6
+ The only dependencies are Sass and Compass, so you can use it with Rails or Sinatra.
7
+
8
+ Usage
9
+ -----
10
+
11
+ Add fuji to your application's Gemfile:
12
+
13
+ ```ruby
14
+ gem 'fuji'
15
+ ```
16
+
17
+ Render the header in your application layout:
18
+
19
+ ```haml
20
+ = Fuji::Header.render
21
+ ```
22
+
23
+ The render method accepts the following options:
24
+
25
+ ```ruby
26
+ {
27
+ gravatar_default: "http://assets.heroku.com.s3.amazonaws.com/addons.heroku.com/gravatar_default.png",
28
+ logo_text: "heroku",
29
+ logo_url: "https://www.heroku.com",
30
+ user: nil,
31
+ login_path: nil,
32
+ logout_path: nil,
33
+ }
34
+ ```
35
+
36
+ Style it up by importing the fuji partial into your main sass/scss stylesheet
37
+
38
+ ```sass
39
+ // Override defaults if you wish:
40
+ $fuji-foreground-color: #FFF
41
+ $fuji-text-color: rgba(#FFF, 1)
42
+ $fuji-highlight-color: #FFF
43
+ $fuji-max-width: 960px
44
+
45
+ @import "fuji"
46
+ ```
47
+
48
+ ## Contributing
49
+
50
+ See CONTRIBUTING.md
51
+
52
+ ## License
53
+
54
+ MIT. Go nuts.
data/Rakefile ADDED
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env rake
2
+ require "bundler/gem_tasks"
3
+
4
+ require 'rspec/core/rake_task'
5
+ RSpec::Core::RakeTask.new('spec')
6
+ task :default => :spec
data/fuji.gemspec ADDED
@@ -0,0 +1,23 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require File.expand_path('../lib/fuji/version', __FILE__)
3
+
4
+ Gem::Specification.new do |gem|
5
+ gem.authors = ["Zeke Sikelianos"]
6
+ gem.email = ["zeke@sikelianos.com"]
7
+ gem.description = %q{heroku's site header}
8
+ gem.summary = %q{heroku's site header}
9
+ gem.homepage = "https://github.com/heroku/fuji"
10
+
11
+ gem.files = `git ls-files`.split($\)
12
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
13
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
14
+ gem.name = "fuji"
15
+ gem.require_paths = ["lib"]
16
+ gem.version = Fuji::VERSION
17
+
18
+ gem.add_development_dependency 'rspec'
19
+ gem.add_development_dependency 'rake'
20
+
21
+ gem.add_dependency "compass"
22
+ gem.add_dependency "sass"
23
+ end
data/lib/fuji.rb ADDED
@@ -0,0 +1,134 @@
1
+ require "fuji/version"
2
+ require 'digest/md5'
3
+ require 'uri'
4
+ require "compass"
5
+
6
+ # module Foo
7
+ #
8
+ # module Header
9
+ # def render
10
+ # puts "rendered!"
11
+ # end
12
+ # end
13
+ # extend Header
14
+ #
15
+ # end
16
+
17
+ module Fuji
18
+
19
+ def self.render
20
+ ::Header.render
21
+ end
22
+
23
+ # This makes an _fuji.sass partial available to your app.
24
+ class Style
25
+ base_directory = File.join(File.dirname(__FILE__), '..')
26
+ Compass::Frameworks.register('fuji', :path => base_directory)
27
+ end
28
+
29
+ class Header
30
+ def self.render(options={})
31
+
32
+ # Options
33
+ options[:gravatar_fallback_url] ||= "http://assets.heroku.com.s3.amazonaws.com/addons.heroku.com/gravatar_default.png"
34
+ options[:logo_text] ||= "heroku"
35
+ options[:logo_url] ||= "https://www.heroku.com"
36
+ options[:user] ||= nil
37
+ options[:login_path] ||= nil
38
+ options[:logout_path] ||= nil
39
+ options[:links] ||= nil
40
+
41
+ links = []
42
+
43
+ unless options[:user]
44
+ links << {id: :how, name: 'How it Works', url: 'https://heroku.com/how'}
45
+ links << {id: :pricing, name: 'Pricing', url: 'https://www.heroku.com/pricing'}
46
+ end
47
+
48
+ links << {id: :apps, name: 'Apps', url: 'https://dashboard.heroku.com'}
49
+ links << {id: :addons, name: 'Addons', url: 'https://addons.heroku.com'}
50
+ links << {id: :documentation, name: 'Documentation', url: 'https://devcenter.heroku.com'}
51
+ links << {id: :support, name: 'Support', url: 'https://help.heroku.com'}
52
+
53
+ if options[:user] && options[:logout_path]
54
+ links << {id: :logout, name: 'Logout', url: options[:logout_path]}
55
+ end
56
+
57
+ # Gravatar
58
+ if options[:user] && options[:user].email
59
+ gravatar_url = [
60
+ "https://secure.gravatar.com/avatar/",
61
+ Digest::MD5.hexdigest(options[:user].email),
62
+ "?default=",
63
+ URI.escape(options[:gravatar_fallback_url])
64
+ ].join("")
65
+ links << {
66
+ id: :gravatar,
67
+ name: Fuji::Helper.image_tag(gravatar_url),
68
+ url: 'https://dashboard.heroku.com/account'
69
+ }
70
+ end
71
+
72
+ if options[:login_path] && options[:current_user].nil?
73
+ links << {id: :login, name: 'Login', url: options[:login_path]}
74
+ end
75
+
76
+ # Join links together
77
+ links = links.map do |link|
78
+ Fuji::Helper.link_to(link[:name], link[:url], link[:id])
79
+ end.join("\n")
80
+
81
+ # Prepare the HTML output
82
+ out = "
83
+ <div id='fuji' class='fuji'>
84
+ <div class='container'>
85
+ <h1>
86
+ <a href='#{options[:logo_url]}'>#{options[:logo_text]}</a>
87
+ </h1>
88
+ <ul>#{links}</ul>
89
+ </div>
90
+ </div>
91
+ "
92
+
93
+ # If we're in Rails, make it HTML safe
94
+ out.respond_to?(:html_safe) ? out.html_safe : out
95
+ end
96
+
97
+ # def self.default_links(options={})
98
+ # end
99
+
100
+ end
101
+
102
+ class Helper
103
+
104
+ def self.current_site_matches?(search_string_or_url, request_object=nil)
105
+ # Allow request object to be mocked, for testing purposes
106
+ request ||= request_object
107
+ return false unless request
108
+
109
+ # Clean the string up
110
+ q = extract_domain(search_string_or_url).to_s
111
+
112
+ return true if request.url && request.url.include?(q)
113
+ return true if request.host_with_port && request.host_with_port.include?(q)
114
+ false
115
+ end
116
+
117
+ def self.extract_domain(string)
118
+ string =~ (/^(?:\w+:\/\/)?([^\/?]+)(?:\/|\?|$)/) ? $1 : string
119
+ end
120
+
121
+ def self.link_to(name, url, css="")
122
+ css << " active" if Fuji::Helper.current_site_matches?(url)
123
+ "<li><a href='#{url}' class='#{css}'>#{name}</a></li>"
124
+ end
125
+
126
+ def self.image_tag(url)
127
+ "<img src='#{url}'>"
128
+ end
129
+
130
+ end
131
+
132
+ end
133
+
134
+ # ActionView::Base.send :include, Fuji::ViewHelpers if defined?(ActionView)
@@ -0,0 +1,3 @@
1
+ module Fuji
2
+ VERSION = "0.0.1"
3
+ end
data/spec/fuji_spec.rb ADDED
@@ -0,0 +1,91 @@
1
+ require 'spec_helper'
2
+ require 'digest/md5'
3
+
4
+ describe Fuji::Header do
5
+
6
+ describe "fuji" do
7
+ before do
8
+ @user = OpenStruct.new(email: "bob@heroku.com")
9
+ end
10
+
11
+ it "outputs an HTML string" do
12
+ Fuji::Header.render.should match /div id='fuji'/
13
+ end
14
+
15
+ it "renders the user's avatar" do
16
+ h = Fuji::Header.render(user: @user)
17
+ hash = Digest::MD5.hexdigest(@user.email)
18
+
19
+ h.should match /#{hash}/
20
+ end
21
+
22
+ end
23
+
24
+ describe "Fuji::Helper.current_site_matches?" do
25
+
26
+ describe "inside a rails app" do
27
+ before do
28
+ @request = OpenStruct.new(protocol: "https://", host_with_port: "dhh.com", fullpath: "/foo")
29
+ end
30
+
31
+ it "detects search string" do
32
+ Fuji::Helper.current_site_matches?('dhh.com/foo', @request).should == true
33
+ end
34
+
35
+ it "doesn't detect search string" do
36
+ Fuji::Helper.current_site_matches?('some other shit', @request).should == false
37
+ end
38
+
39
+ end
40
+
41
+ describe "inside a sinatra app" do
42
+
43
+ before do
44
+ @request = OpenStruct.new(url: "https://mizerany.com")
45
+ end
46
+
47
+ it "detects search string" do
48
+ Fuji::Helper.current_site_matches?('mizerany', @request).should == true
49
+ end
50
+
51
+ it "doesn't detect search string" do
52
+ Fuji::Helper.current_site_matches?('some other blake', @request).should == false
53
+ end
54
+
55
+ end
56
+
57
+ describe "in any kind of ruby app" do
58
+
59
+ before do
60
+ @request = OpenStruct.new(url: "https://the-rest.com")
61
+ end
62
+
63
+ it "allows a symbol as a search string" do
64
+ Fuji::Helper.current_site_matches?(:rest, @request).should == true
65
+ end
66
+
67
+ it "matches against domain name when given a full URL" do
68
+ Fuji::Helper.current_site_matches?("http://the-rest.com/extra/mojo", @request).should == true
69
+ end
70
+
71
+ it "returns false if request object is nil" do
72
+ Fuji::Helper.current_site_matches?('foo').should == false
73
+ end
74
+
75
+ end
76
+
77
+ end
78
+
79
+ describe "extract_domain" do
80
+
81
+ it "pulls the domain out of a URL string" do
82
+ Fuji::Helper.extract_domain("https://dweeb-fest.example.com/sho/biz").should == "dweeb-fest.example.com"
83
+ end
84
+
85
+ it "returns the original string if it doesn't contain a domain" do
86
+ Fuji::Helper.extract_domain("turkey jerky").should == "turkey jerky"
87
+ end
88
+
89
+ end
90
+
91
+ end
data/spec/spec.opts ADDED
@@ -0,0 +1,4 @@
1
+ --colour
2
+ --format progress
3
+ --loadby mtime
4
+ --reverse
@@ -0,0 +1,10 @@
1
+ require 'rubygems'
2
+ require 'bundler/setup'
3
+ require 'fuji'
4
+ require 'ostruct'
5
+
6
+ include Fuji
7
+
8
+ RSpec.configure do |config|
9
+ # some (optional) config here
10
+ end
@@ -0,0 +1,69 @@
1
+ // Config
2
+ $fuji-foreground-color: #FFF !default
3
+ $fuji-text-color: rgba(#FFF, 1) !default
4
+ $fuji-highlight-color: #aed582 !default
5
+ $fuji-max-width: 960px !default
6
+ $fuji-line-edge-color: rgba($fuji-foreground-color, 0) !default
7
+ $fuji-line-middle-color: rgba($fuji-foreground-color, 0.1) !default
8
+ $fuji-line-size: 40% !default
9
+
10
+ #fuji
11
+ +transition(all 0.5s false 0s)
12
+ float: none
13
+ overflow: hidden
14
+ margin-bottom: 20px
15
+ padding: 14px 0
16
+
17
+ .container
18
+ margin-left: auto
19
+ margin-right: auto
20
+ position: relative
21
+ min-width: 320px
22
+ max-width: $fuji-max-width
23
+
24
+ h1
25
+ float: left
26
+ margin: 0
27
+ padding: 0
28
+ a
29
+ +transition(all 0.3s false 0s)
30
+ max-width: 300px
31
+ overflow: hidden
32
+ span
33
+ display: none
34
+
35
+ ul
36
+ list-style: none
37
+ margin: 4px 0 0 0
38
+ padding: 0
39
+ float: right
40
+ max-width: 600px
41
+ > li
42
+ float: left
43
+ +background-image(linear-gradient(top, $fuji-line-edge-color, $fuji-line-middle-color $fuji-line-size, $fuji-line-middle-color (100% - $fuji-line-size), $fuji-line-edge-color))
44
+ background-position: left center
45
+ background-repeat: no-repeat
46
+ background-size: 1px 100%
47
+ font-size: 13px
48
+ a
49
+ +transition(all 0.3s false 0s)
50
+ color: rgba($fuji-text-color, 0.5)
51
+ display: block
52
+ padding: 7px 15px
53
+ text-decoration: none
54
+ &:hover, &.active
55
+ text-decoration: underline
56
+ color: $fuji-highlight-color
57
+ &.em
58
+ color: rgba($fuji-text-color, 1)
59
+
60
+ &.gravatar
61
+ padding: 0 0 0 15px
62
+ img
63
+ display: block
64
+ width: 32px
65
+ height: 32px
66
+ +border-radius(16px)
67
+
68
+ &:first-child
69
+ background: none
data/tmtags ADDED
@@ -0,0 +1,24 @@
1
+ !_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/
2
+ !_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/
3
+ !_TAG_PROGRAM_AUTHOR Darren Hiebert /dhiebert@users.sourceforge.net/
4
+ !_TAG_PROGRAM_NAME Exuberant Ctags //
5
+ !_TAG_PROGRAM_URL http://ctags.sourceforge.net /official site/
6
+ !_TAG_PROGRAM_VERSION Development //
7
+ "Fuji /Users/zeke/Projects/hero/fuji/spec/fuji_spec.rb /^ describe "Fuji::Helper.current_site_matches?" do$/;" describe line:24
8
+ "fuji" do /Users/zeke/Projects/hero/fuji/spec/fuji_spec.rb /^ describe "fuji" do$/;" describe line:6
9
+ "extract_domain" do /Users/zeke/Projects/hero/fuji/spec/fuji_spec.rb /^ describe "extract_domain" do$/;" describe line:79
10
+ "in any kind of ruby app" do /Users/zeke/Projects/hero/fuji/spec/fuji_spec.rb /^ describe "in any kind of ruby app" do$/;" describe line:57
11
+ "inside a rails app" do /Users/zeke/Projects/hero/fuji/spec/fuji_spec.rb /^ describe "inside a rails app" do$/;" describe line:26
12
+ "inside a sinatra app" do /Users/zeke/Projects/hero/fuji/spec/fuji_spec.rb /^ describe "inside a sinatra app" do$/;" describe line:41
13
+ Fuji /Users/zeke/Projects/hero/fuji/lib/fuji.rb /^module Fuji$/;" module line:17
14
+ Fuji /Users/zeke/Projects/hero/fuji/lib/fuji/version.rb /^module Fuji$/;" module line:1
15
+ Fuji /Users/zeke/Projects/hero/fuji/spec/fuji_spec.rb /^describe Fuji::Header do$/;" describe line:4
16
+ Header /Users/zeke/Projects/hero/fuji/lib/fuji.rb /^ class Header$/;" class line:29
17
+ Helper /Users/zeke/Projects/hero/fuji/lib/fuji.rb /^ class Helper$/;" class line:102
18
+ Style /Users/zeke/Projects/hero/fuji/lib/fuji.rb /^ class Style$/;" class line:24
19
+ current_site_matches /Users/zeke/Projects/hero/fuji/lib/fuji.rb /^ def self.current_site_matches?(search_string_or_url, request_object=nil)$/;" singleton method line:104
20
+ extract_domain /Users/zeke/Projects/hero/fuji/lib/fuji.rb /^ def self.extract_domain(string)$/;" singleton method line:117
21
+ image_tag /Users/zeke/Projects/hero/fuji/lib/fuji.rb /^ def self.image_tag(url)$/;" singleton method line:126
22
+ link_to /Users/zeke/Projects/hero/fuji/lib/fuji.rb /^ def self.link_to(name, url, css="")$/;" singleton method line:121
23
+ render /Users/zeke/Projects/hero/fuji/lib/fuji.rb /^ def self.render(options={})$/;" singleton method line:30
24
+ render /Users/zeke/Projects/hero/fuji/lib/fuji.rb /^ def self.render$/;" singleton method line:19
data/tmtagsHistory ADDED
@@ -0,0 +1 @@
1
+ <dt><span class="filename"><a href="txmt://open?url=file:///Users/zeke/Projects/hero/fuji/lib/fuji.rb&line=98">fuji.rb:98 -- /Users/zeke/Projects/hero/fuji/lib</a></span><br><div class="code"> # end</div></dt>
metadata ADDED
@@ -0,0 +1,134 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: fuji
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Zeke Sikelianos
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-12-11 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rspec
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: rake
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: compass
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: sass
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ description: heroku's site header
79
+ email:
80
+ - zeke@sikelianos.com
81
+ executables: []
82
+ extensions: []
83
+ extra_rdoc_files: []
84
+ files:
85
+ - .gitignore
86
+ - CONTRIBUTING.md
87
+ - Gemfile
88
+ - Gemfile.lock
89
+ - LICENSE
90
+ - README.md
91
+ - Rakefile
92
+ - fuji.gemspec
93
+ - lib/fuji.rb
94
+ - lib/fuji/version.rb
95
+ - spec/fuji_spec.rb
96
+ - spec/spec.opts
97
+ - spec/spec_helper.rb
98
+ - stylesheets/_fuji.sass
99
+ - tmtags
100
+ - tmtagsHistory
101
+ homepage: https://github.com/heroku/fuji
102
+ licenses: []
103
+ post_install_message:
104
+ rdoc_options: []
105
+ require_paths:
106
+ - lib
107
+ required_ruby_version: !ruby/object:Gem::Requirement
108
+ none: false
109
+ requirements:
110
+ - - ! '>='
111
+ - !ruby/object:Gem::Version
112
+ version: '0'
113
+ segments:
114
+ - 0
115
+ hash: -2441385227944830096
116
+ required_rubygems_version: !ruby/object:Gem::Requirement
117
+ none: false
118
+ requirements:
119
+ - - ! '>='
120
+ - !ruby/object:Gem::Version
121
+ version: '0'
122
+ segments:
123
+ - 0
124
+ hash: -2441385227944830096
125
+ requirements: []
126
+ rubyforge_project:
127
+ rubygems_version: 1.8.24
128
+ signing_key:
129
+ specification_version: 3
130
+ summary: heroku's site header
131
+ test_files:
132
+ - spec/fuji_spec.rb
133
+ - spec/spec.opts
134
+ - spec/spec_helper.rb