asset 0.0.2 → 0.0.3

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 61f0f83d52b46d60744c9087cc73e8249fa1b9f0
4
- data.tar.gz: 9dbe7813be9d7a49f199eaa7c0cea9f4e836119e
3
+ metadata.gz: 4cd9e5084290d4157c2f2c45785bbc5813256273
4
+ data.tar.gz: 46b793da9b9774e454134f193036381d03e459f5
5
5
  SHA512:
6
- metadata.gz: 47e2a6b246c312a6229d924379c26be8a4bd2c11f030171202f22787bbe67a2c26627e6de2f72301883c6e4146d0b1f0167ee88d0b2d85031d1ffb764fb1183e
7
- data.tar.gz: cfad137ad7fb37ce1280b3534e528a19d7d35f9e7d8fd16b6ca8b34931fb7a23498731bde0cf7bb45fbb4713ec31d6ce2cdded9d667834fc62a44751f405b5ab
6
+ metadata.gz: bd153573b90fbc422dadf116410462db9f06b8cbab3b0a3b6d5985d54d88b93e375819593c552d73456f41393180a9344fcab1eb215eadb5d6629bbbf62c2cb9
7
+ data.tar.gz: b73c59885ceacc7fcc72aa4b628c76a816ff31e62112bf65227a41d9f03eec3da89c67f80dbfb55b9d474ec51bc29383ebb27390a51589f3e8bf504255ac3e76
@@ -0,0 +1,4 @@
1
+ .bundle
2
+ Gemfile.lock
3
+ log
4
+ tmp
@@ -0,0 +1,3 @@
1
+ **Version 0.1.0** - *2017-01-05*
2
+
3
+ - Fixed gemspec issues
data/Gemfile ADDED
@@ -0,0 +1,9 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
4
+
5
+ group :development do
6
+ gem 'rerun' #, :git => 'https://github.com/fugroup/rerun'
7
+ gem 'rb-fsevent'
8
+ gem 'terminal-notifier'
9
+ end
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2016 Fugroup
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,134 @@
1
+ # Asset compresses and serves your CSS and JS files
2
+
3
+ Compress and cache your Javascript and CSS files automatically.
4
+
5
+ Set up your manifest file, install the helpers and the middleware, and you're up and running with compressed assets served lightning fast on pure in-memory Ruby Rack.
6
+
7
+ ### Installation
8
+ ```
9
+ gem install asset
10
+ ```
11
+ or add to Gemfile. In your Rack app include the line
12
+ ```ruby
13
+ # Rack apps
14
+ include Asset::Helpers
15
+
16
+ # Sinatra
17
+ helpers Asset::Helpers
18
+ ```
19
+
20
+ ### Settings
21
+ ```ruby
22
+ Asset.mode = ENV['RACK_ENV'] || MODE rescue 'development'
23
+ Asset.path = APP_ASSETS rescue File.join(Dir.pwd, 'app', 'assets')
24
+ Asset.cache = File.join(Dir.pwd, 'tmp')
25
+ Asset.debug = false
26
+ ```
27
+
28
+ ### Usage
29
+ ```yaml
30
+ # Install your manifest file in APP_ROOT/app/assets/manifest.yml
31
+
32
+ # Asset manifest. Only the files mentioned here will be available.
33
+ # Options are compress: true/false, bundle: true/false
34
+ css:
35
+ - app.css
36
+ - themes/themes.css
37
+
38
+ js:
39
+ - app.js
40
+ - lib/cookie.js
41
+
42
+ # Example with options:
43
+ css:
44
+ - app.css:
45
+ - compress: true
46
+ - bundle: false
47
+ - themes/themes.css
48
+
49
+ js:
50
+ - app.js:
51
+ - bundle: false
52
+ - lib/cookie.js
53
+ ```
54
+
55
+ ```ruby
56
+ # After setting up the manifest file, use the helpers in your views
57
+ <%= script_tag 'app.js' %>
58
+ <%= style_tag 'app.css' %>
59
+
60
+ # Multiple
61
+ <%= script_tag 'app.js', 'lib/cookies.js' %>
62
+
63
+ # Bundle all files with 'application.js'
64
+ <%= script_tag 'application.js' %>
65
+
66
+ # Bundle all files with 'application.css'
67
+ <%= script_tag 'application.css' %>
68
+ ```
69
+
70
+ In development mode, all files will be printed. In production mode, you'll get only one file.
71
+
72
+ The file will also be cached and compressed. The cache auto-expires.
73
+
74
+ ### Middleware
75
+
76
+ The Asset gem also comes with Rack middleware to handle requests for your assets.
77
+
78
+ ```ruby
79
+ # Insert the asset middleware early in the stack
80
+ use Asset::Router
81
+
82
+ # Full example from the config.ru file
83
+
84
+ # Set up middleware stack
85
+ app = Rack::Builder.new do
86
+ use Asset::Router # Include the Asset middleware router
87
+
88
+ # Use this setup to have files served from /assets/images and /assets/fonts
89
+ use Rack::Static, :urls => ['/images', '/fonts'], :root => APP_ASSETS,
90
+ :header_rules => [
91
+ [:all, {'Cache-Control' => 'public, max-age=31536000'}],
92
+ [:fonts, {'Access-Control-Allow-Origin' => '*'}]
93
+ ]
94
+ run App # Your app goes here
95
+ end
96
+
97
+ run app
98
+
99
+ # Files will be available here on your server (HTTP):
100
+ /assets/js/app.js
101
+ /assets/js/lib/app.js
102
+ /assets/css/app.css
103
+ /assets/css/themes/dark.css
104
+
105
+ # You can also drop the /assets in front
106
+ /js/app.js
107
+ /css/app.css
108
+ ```
109
+
110
+ The helpers will generate these URLs, so you don't have to worry about it.
111
+
112
+ ### Images and fonts
113
+
114
+ To include support for other static file types likes images and fonts, use [Rack::Static](https://github.com/rack/rack/blob/master/lib/rack/static.rb)
115
+
116
+ ```ruby
117
+ use Rack::Static, :urls => ['/images', '/fonts'], :root => APP_ASSETS,
118
+ :header_rules => [
119
+ [:all, {'Cache-Control' => 'public, max-age=31536000'}],
120
+ [:fonts, {'Access-Control-Allow-Origin' => '*'}]
121
+ ]
122
+ ```
123
+
124
+ We've included an image tag helper too for this use:
125
+ ```erb
126
+ # Use this in your application, will default to APP_ROOT/assets/images
127
+ <%= image_tag 'logo.png' %>
128
+ ```
129
+
130
+ ### Contribute
131
+
132
+ Created and maintained by [Fugroup Ltd.](https://www.fugroup.net) We are the creators of [CrowdfundHQ.](https://crowdfundhq.com)
133
+
134
+ `@authors: Vidar`
data/app.rb ADDED
@@ -0,0 +1,52 @@
1
+ class App < Sinatra::Base
2
+
3
+ # helpers Asset::Helpers
4
+
5
+ configure do
6
+ # Settings
7
+ set :app_file, __FILE__
8
+ set :root, APP_ROOT
9
+ set :views, APP_VIEWS
10
+
11
+ # Turn this on in dev to see handler
12
+ set :show_exceptions, MODE != 'production'
13
+ set :raise_errors, false
14
+
15
+ # Haml setup
16
+ set :haml, {:format => :html5}
17
+ set :haml, :layout => :'layout/layout'
18
+ set :sass, {:cache_location => './tmp/sass-cache'}
19
+
20
+ # Liquid setup
21
+ Liquid::Template.file_system = Liquid::LocalFileSystem.new(APP_VIEWS)
22
+
23
+ # Set up loggers and tmp files
24
+ Dir.mkdir('./tmp') unless File.exists?('./tmp')
25
+ Dir.mkdir('./log') unless File.exists?('./log')
26
+
27
+ # Global loggers
28
+ $log = Logger.new("./log/app.log")
29
+ $errors = Logger.new("./log/errors.log")
30
+ end
31
+
32
+ # Disable caching of classes when not in production
33
+ configure :development, :test do |c|
34
+ Liquid.cache_classes = false
35
+ Liquid::Template.error_mode = :strict
36
+ end
37
+
38
+ get('/') do
39
+ erb(:index)
40
+ end
41
+
42
+ # Default not found page
43
+ not_found do
44
+ "404, Not found".tap{|m| puts m}
45
+ end
46
+
47
+ # Default error pages
48
+ error(500..510) do
49
+ "50X, Application error".tap{|m| puts m}
50
+ end
51
+
52
+ end
@@ -0,0 +1,32 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = 'asset'
3
+ s.version = '0.0.3'
4
+ s.date = '2017-01-05'
5
+ s.summary = "Compress and serve your CSS and JS automatically"
6
+ s.description = "The only thing you need for your assets."
7
+ s.authors = ["Fugroup Limited"]
8
+ s.email = 'vidar@fugroup.net'
9
+ s.license = 'MIT'
10
+
11
+ s.add_runtime_dependency 'rack', '>= 0'
12
+ s.add_runtime_dependency 'sass', '>= 0'
13
+ s.add_runtime_dependency 'uglifier', '>= 0'
14
+
15
+ s.add_development_dependency 'sinatra', '>= 0'
16
+ s.add_development_dependency 'puma', '>= 0'
17
+ s.add_development_dependency 'tilt', '>= 0'
18
+ s.add_development_dependency 'liquid', '>= 0'
19
+ s.add_development_dependency 'erubis', '>= 0'
20
+ s.add_development_dependency 'rest-client', '>= 0'
21
+ s.add_development_dependency 'request_store', '>= 0'
22
+ s.add_development_dependency 'fuprint', '>= 0'
23
+ s.add_development_dependency 'futest', '>= 0'
24
+
25
+ s.homepage = 'https://github.com/fugroup/asset'
26
+ s.license = 'MIT'
27
+
28
+ s.require_paths = ['lib']
29
+ s.files = `git ls-files -z`.split("\x0").reject do |f|
30
+ f.match(%r{^(test|spec|features|app|config|log|tmp)/})
31
+ end
32
+ end
@@ -0,0 +1,21 @@
1
+ Encoding.default_external = Encoding::UTF_8
2
+ Encoding.default_internal = Encoding::UTF_8
3
+
4
+ # Init the app
5
+ require './config/boot.rb'
6
+ require './app.rb'
7
+
8
+ # Set up middleware stack
9
+ app = Rack::Builder.new do
10
+ use Fuprint::Request
11
+ use Asset::Router
12
+ use Rack::Static, :urls => ['/images', '/fonts'], :root => APP_ASSETS,
13
+ :header_rules => [
14
+ [:all, {'Cache-Control' => 'public, max-age=31536000'}],
15
+ [:fonts, {'Access-Control-Allow-Origin' => '*'}]
16
+ ]
17
+ run App
18
+ end
19
+
20
+ run app
21
+
@@ -1,3 +1,5 @@
1
+ require 'rack'
2
+
1
3
  module Asset
2
4
 
3
5
  # # # # # #
@@ -10,10 +12,10 @@ module Asset
10
12
  class << self; attr_accessor :mode, :path, :cache, :manifest, :debug; end
11
13
 
12
14
  # Default is production
13
- @mode = ENV['RACK_ENV'] || MODE rescue 'development'
14
- @path = APP_ASSETS rescue File.join(Dir.pwd, 'app', 'assets')
15
+ @mode = ENV['RACK_ENV'] || 'development'
16
+ @path = File.join(Dir.pwd, 'app', 'assets')
15
17
  @cache = File.join(Dir.pwd, 'tmp')
16
- @debug = true
18
+ @debug = false
17
19
 
18
20
  end
19
21
 
@@ -23,6 +25,5 @@ require_relative 'assets/item'
23
25
  # Load the manifest
24
26
  ::Asset.manifest = ::Asset::Util.load_manifest
25
27
 
26
-
27
28
  require_relative 'assets/helpers'
28
29
  require_relative 'assets/router'
@@ -0,0 +1,40 @@
1
+ module Asset
2
+ module Helpers
3
+
4
+ # Script tags
5
+ def script_tag(*paths)
6
+ tag('js', *paths) do |src|
7
+ %{<script src="#{src}"></script>}
8
+ end
9
+ end
10
+
11
+ # Style tags
12
+ def style_tag(*paths)
13
+ tag('css', *paths) do |src|
14
+ %{<link href="#{src}" media="all" rel="stylesheet" type="text/css">}
15
+ end
16
+ end
17
+
18
+ # Image tags
19
+ def image_tag(path)
20
+ b = ::Asset::Util.mtime("images/#{path}")
21
+ %{<img src="/assets/images/#{CGI.escapeHTML(path)}#{b ? "?#{b.to_i}" : ''}">} rescue path
22
+ end
23
+
24
+ private
25
+
26
+ # Build the tags
27
+ def tag(type, *paths, &block)
28
+ paths.map do |path|
29
+
30
+ # Yield the source back to the tag builder
31
+ item = ::Asset.manifest.find{|i| i.path == path}
32
+
33
+ # Src is same as path if item not found
34
+ item ? item.files.map{|src| yield(%{/assets/#{type}/#{src}})} : yield(path)
35
+
36
+ end.flatten.join("\n")
37
+ end
38
+
39
+ end
40
+ end
@@ -0,0 +1,67 @@
1
+ module Asset
2
+ class Item
3
+
4
+ attr_accessor :path, :type, :key, :modified, :compress, :bundle, :name
5
+
6
+ # Init
7
+ def initialize(*args)
8
+ @path, @type, @key, @modified, @compress, @bundle = args
9
+ @name = @path.rpartition('.')[0]
10
+ end
11
+
12
+ # File? Or bundle?
13
+ def file?
14
+ @path !~ /^application\.(js|css)$/
15
+ end
16
+
17
+ # Get the files. Pass keyed = false to get the path instead of the file
18
+ def files(keyed = true)
19
+ if file? or (keyed and ::Asset.mode == 'production')
20
+ [keyed ? file : path]
21
+ else
22
+ ::Asset.manifest.select{|i| i.type == @type and i.file?}.map{|i| keyed ? i.file : i.path}
23
+ end
24
+ end
25
+
26
+ # Get the file, meaning the full path with key
27
+ def file
28
+ ::Asset.mode == 'development' ? @path : %{#{file? ? @name : 'application'}-#{@key}.#{@type}}
29
+ end
30
+
31
+ # Get the content. Pass cache = false to fetch from disk instead of the cache.
32
+ def content(cache = (::Asset.mode = 'production'))
33
+ return joined unless cache
34
+
35
+ File.read(File.join(::Asset.cache, %{#{@key}.#{@type}})).tap{|f| return f if f} rescue nil
36
+
37
+ # Compress the files
38
+ compressed.tap{|r| write_cache(r)}
39
+ end
40
+
41
+ # Store in cache
42
+ def write_cache(r)
43
+ File.open(File.join(::Asset.cache, %{#{@key}.#{@type}}), 'w'){|f| f.write(r)}
44
+ end
45
+
46
+ # Compressed joined files
47
+ def compressed
48
+ case @type
49
+ when 'css'
50
+ Tilt.new('scss', :style => :compressed){ joined }.render rescue joined
51
+ when 'js'
52
+ Uglifier.compile(joined, {}) rescue joined
53
+ end
54
+ end
55
+
56
+ # All files joined
57
+ def joined
58
+ @joined ||= files(false).map{|f| File.read(File.join(::Asset.path, @type, f))}.join
59
+ end
60
+
61
+ # Print data
62
+ def print
63
+ [:path, :type, :key, :name, :modified, :files, :content].each{|r| puts "#{r.upcase}: #{send(r).inspect}"}
64
+ end
65
+
66
+ end
67
+ end
@@ -0,0 +1,76 @@
1
+ module Asset
2
+ class Router
3
+
4
+ # Mime types
5
+ MIME = {
6
+ 'js' => 'application/javascript; charset=UTF-8',
7
+ 'css' => 'text/css; charset=UTF-8',
8
+ 'txt' => 'text/plain; charset=UTF-8'
9
+ }
10
+
11
+ # Init
12
+ def initialize(app)
13
+ @app = app
14
+ end
15
+
16
+ # Call
17
+ def call(env)
18
+ # Setting up request
19
+ @request = Rack::Request.new(env)
20
+
21
+ # The routes
22
+ case @request.path_info
23
+
24
+ # Match /assets?/:type/path
25
+ when /^(\/assets)?\/(js|css)\/(.+)/
26
+ type, path = $2, $3
27
+
28
+ path =~ /(-[a-f0-9]{1,32})/
29
+ path = path.gsub($1, '') if $1
30
+
31
+ item = ::Asset.manifest.find{|i| i.path == path and i.type == type}
32
+
33
+ # Not found if no item, wrong key or no content
34
+ return not_found if !item or ($1 and $1 != item.key) or !item.content(!!$1)
35
+
36
+ found(item)
37
+
38
+ # Bounce favicon requests
39
+ when /^\/favicon\.ico$/
40
+ not_found
41
+
42
+ # Return a standard robots.txt
43
+ when /^\/robots\.txt$/
44
+ robots
45
+
46
+ else
47
+ # No routes found, pass down the middleware stack
48
+ @app.call(env)
49
+ end
50
+ end
51
+
52
+ private
53
+
54
+ # Found
55
+ def found(item)
56
+ [ 200, {'Content-Type' => MIME[item.type],
57
+ 'Content-Length' => item.content.size,
58
+ 'Cache-Control' => 'max-age=86400, public',
59
+ 'Expires' => (Time.now + 86400*30).utc.rfc2822,
60
+ 'Last-Modified' => item.modified.utc.rfc2822
61
+ }, [item.content]]
62
+ end
63
+
64
+ # Not found
65
+ def not_found(path = '@')
66
+ [404, {'Content-Type' => MIME['txt'], 'Content-Length' => 0}, []]
67
+ end
68
+
69
+ # Robots
70
+ def robots
71
+ s = %{Sitemap: #{@request.scheme}://#{@request.host}/sitemap.xml}
72
+ [200, {'Content-Type' => MIME['txt'],'Content-Length' => s.size}, [s]]
73
+ end
74
+
75
+ end
76
+ end
@@ -0,0 +1,55 @@
1
+ module Asset
2
+ class Util
3
+
4
+ # Get timestamp
5
+ def self.mtime(path)
6
+ File.mtime(asset_path(path))
7
+ end
8
+
9
+ # Asset path
10
+ def self.asset_path(path)
11
+ File.join(::Asset.path, File.split(path))
12
+ end
13
+
14
+ # Digest
15
+ def self.digest(path, time)
16
+ Digest::MD5.hexdigest(%{#{path}#{time.to_i}})
17
+ end
18
+
19
+ # Load manifest
20
+ def self.load_manifest
21
+ list = YAML.load_file(File.join(::Asset.path, 'manifest.yml'))
22
+ manifest = []
23
+
24
+ list.each do |type, files|
25
+ max = Time.new(0).utc
26
+ files.each do |name|
27
+
28
+ # Depending on the options, the name can be a string or a Hash
29
+ h = name.is_a?(Hash)
30
+
31
+ # Path looks like app.js or similar
32
+ path = h ? name.keys[0] : name
33
+
34
+ # Get the modified time of the asset
35
+ modified = mtime("#{type}/#{path}").utc
36
+
37
+ # Record max to know the latest change
38
+ max = modified if modified > max
39
+
40
+ # Loading manifest with items
41
+ manifest << ::Asset::Item.new(
42
+ path, type, digest(path, modified), modified,
43
+ (h ? name['compress'] : true), (h ? name['bundle'] : true))
44
+ end
45
+
46
+ # Insert the application bundle
47
+ manifest.insert(0, ::Asset::Item.new(
48
+ "application.#{type}", type,
49
+ digest("application.#{type}", max), max))
50
+ end
51
+ manifest
52
+ end
53
+
54
+ end
55
+ end
metadata CHANGED
@@ -1,22 +1,202 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: asset
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Fugroup Limited
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-01-02 00:00:00.000000000 Z
12
- dependencies: []
11
+ date: 2017-01-05 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rack
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: sass
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: uglifier
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: sinatra
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: puma
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: tilt
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: liquid
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: erubis
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: rest-client
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: request_store
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: fuprint
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: futest
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: '0'
13
181
  description: The only thing you need for your assets.
14
182
  email: vidar@fugroup.net
15
183
  executables: []
16
184
  extensions: []
17
185
  extra_rdoc_files: []
18
186
  files:
187
+ - ".gitignore"
188
+ - CHANGELOG.md
189
+ - Gemfile
190
+ - LICENSE
191
+ - README.md
192
+ - app.rb
193
+ - asset.gemspec
194
+ - config.ru
19
195
  - lib/asset.rb
196
+ - lib/assets/helpers.rb
197
+ - lib/assets/item.rb
198
+ - lib/assets/router.rb
199
+ - lib/assets/util.rb
20
200
  homepage: https://github.com/fugroup/asset
21
201
  licenses:
22
202
  - MIT
@@ -37,7 +217,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
37
217
  version: '0'
38
218
  requirements: []
39
219
  rubyforge_project:
40
- rubygems_version: 2.5.1
220
+ rubygems_version: 2.6.8
41
221
  signing_key:
42
222
  specification_version: 4
43
223
  summary: Compress and serve your CSS and JS automatically