tension 0.9.13 → 0.9.14
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 +4 -4
- data/lib/tension/controller.rb +1 -1
- data/lib/tension/environment.rb +60 -46
- data/lib/tension/railtie.rb +4 -2
- data/lib/tension/utils.rb +2 -11
- data/lib/tension/version.rb +1 -1
- data/lib/tension.rb +9 -0
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a75cab3b3ef65c9590305e2ae0743398a5326968
|
4
|
+
data.tar.gz: 9ff656abe44e288d6ee0e8ea2a8c3bfbcf0725f6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 94bfedf19b85e67862a66b352e9cc2b439a357d3389a031993ba6236b0e213f7f7d97d3089f441c6a826d31a2f849a78ca88b418942cee37115b2afaeddad31a
|
7
|
+
data.tar.gz: fc08ff6e486a0c43564c7ee934617bde46a33cc58d99926dfcbd77622052737e799cc9838cab327d39391a1eff0d38a6d49f8f1e9834041ce0c68087959cce81
|
data/lib/tension/controller.rb
CHANGED
data/lib/tension/environment.rb
CHANGED
@@ -4,67 +4,81 @@ module Tension
|
|
4
4
|
# the assets to be included in templates.
|
5
5
|
#
|
6
6
|
class Environment
|
7
|
-
class << self
|
8
7
|
|
9
|
-
|
10
|
-
#
|
11
|
-
def find(key)
|
12
|
-
fetch( Tension::Utils.controller_path(key) )
|
13
|
-
end
|
14
|
-
alias_method :[], :find
|
8
|
+
attr_reader :assets
|
15
9
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
end
|
10
|
+
def initialize(assets_path)
|
11
|
+
@manifest = Sprockets::Manifest.new(assets_path)
|
12
|
+
process_assets!
|
13
|
+
end
|
21
14
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
end
|
15
|
+
# Loads a Context for the specified controller path.
|
16
|
+
#
|
17
|
+
def find_context(key)
|
18
|
+
fetch( Tension::Utils.controller_path(key) )
|
19
|
+
end
|
20
|
+
alias_method :[], :find_context
|
29
21
|
|
30
|
-
|
31
|
-
|
22
|
+
# A Hash mapping controller paths to Contexts.
|
23
|
+
#
|
24
|
+
def contexts
|
25
|
+
@contexts ||= Hash.new
|
26
|
+
end
|
32
27
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
end
|
28
|
+
# Determines whether or not a given path refers to an asset that requires
|
29
|
+
# precompilation.
|
30
|
+
#
|
31
|
+
def precompilation_needed?(path)
|
32
|
+
if cxt = find_context(path)
|
33
|
+
Tension::Utils.shared_asset?(path) || cxt.has_action?( Tension::Utils.action_name(path) )
|
40
34
|
end
|
35
|
+
end
|
41
36
|
|
42
37
|
|
43
|
-
|
38
|
+
private
|
44
39
|
|
45
|
-
|
46
|
-
|
47
|
-
|
40
|
+
def fetch(path)
|
41
|
+
contexts[path] || store(path) unless path.nil?
|
42
|
+
end
|
48
43
|
|
49
|
-
|
50
|
-
|
51
|
-
|
44
|
+
def store(path)
|
45
|
+
contexts[path] ||= Context.new(path) if valid_route?(path)
|
46
|
+
end
|
52
47
|
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
end
|
48
|
+
def valid_route?(controller)
|
49
|
+
configured_get_defaults.find do |default|
|
50
|
+
default[:controller] == controller
|
57
51
|
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def process_assets!
|
55
|
+
@assets = Hash.new
|
56
|
+
@manifest.files.each do |full_path, info|
|
57
|
+
next unless full_path.match(/\.css|\.js\z/)
|
58
58
|
|
59
|
-
|
60
|
-
|
61
|
-
#
|
62
|
-
def configured_get_defaults
|
63
|
-
@configured_get_defaults ||= Rails.application.routes.routes.map do |route|
|
64
|
-
route.defaults if route.verb.match("GET") && !route.defaults.empty?
|
65
|
-
end.compact
|
59
|
+
info = info.merge(full_path: full_path).with_indifferent_access
|
60
|
+
@assets[ info[:logical_path] ] = Asset.new(info)
|
66
61
|
end
|
62
|
+
end
|
63
|
+
|
64
|
+
# Routing defaults (including controller path and action name) for all
|
65
|
+
# configured GET routes.
|
66
|
+
#
|
67
|
+
def configured_get_defaults
|
68
|
+
@configured_get_defaults ||= Rails.application.routes.routes.map do |route|
|
69
|
+
route.defaults if route.verb.match("GET") && !route.defaults.empty?
|
70
|
+
end.compact
|
71
|
+
end
|
72
|
+
|
73
|
+
end
|
74
|
+
|
75
|
+
class Asset
|
76
|
+
def initialize(attributes)
|
77
|
+
@attributes = attributes
|
78
|
+
end
|
67
79
|
|
80
|
+
def logical_path
|
81
|
+
@attributes[:logical_path]
|
68
82
|
end
|
69
83
|
end
|
70
84
|
end
|
data/lib/tension/railtie.rb
CHANGED
@@ -9,10 +9,12 @@ module Tension
|
|
9
9
|
ActionView::Base.send(:include, Tension::Helper)
|
10
10
|
ActionController::Base.send(:include, Tension::Controller)
|
11
11
|
|
12
|
+
Tension.environment = Tension::Environment.new('public/assets')
|
13
|
+
|
12
14
|
Rails.application.config.assets.precompile << lambda do |path, filename|
|
13
|
-
Tension
|
15
|
+
Tension.environment.precompilation_needed?(path)
|
14
16
|
end
|
15
17
|
end
|
16
|
-
|
18
|
+
|
17
19
|
end
|
18
20
|
end
|
data/lib/tension/utils.rb
CHANGED
@@ -18,9 +18,6 @@ module Tension
|
|
18
18
|
|
19
19
|
elsif matches = path.split("#").first.match(CONTROLLER_REGEX)
|
20
20
|
return matches[0]
|
21
|
-
|
22
|
-
else
|
23
|
-
return nil
|
24
21
|
end
|
25
22
|
end
|
26
23
|
|
@@ -45,14 +42,14 @@ module Tension
|
|
45
42
|
# type: Tension::CSS
|
46
43
|
#
|
47
44
|
def find_asset(options)
|
48
|
-
assets[ logical_asset_path(options) ]
|
45
|
+
Tension.environment.assets[ logical_asset_path(options) ]
|
49
46
|
end
|
50
47
|
|
51
48
|
# Returns the application-wide Sprockets Asset for the given type.
|
52
49
|
# ARGS: type: Tension::JS or Tension::CSS
|
53
50
|
#
|
54
51
|
def global_asset(type)
|
55
|
-
assets[ "application.#{type}" ]
|
52
|
+
Tension.environment.assets[ "application.#{type}" ]
|
56
53
|
end
|
57
54
|
|
58
55
|
private
|
@@ -71,12 +68,6 @@ module Tension
|
|
71
68
|
end
|
72
69
|
end
|
73
70
|
|
74
|
-
# Alias for Sprockets' asset index.
|
75
|
-
#
|
76
|
-
def assets
|
77
|
-
Rails.application.assets
|
78
|
-
end
|
79
|
-
|
80
71
|
# Takes an asset path like "comments/base/index.js" and determines
|
81
72
|
# the controller ("comments/base") that should serve that asset.
|
82
73
|
# ARGS: path: a String path like "admin/blog_common.css"
|
data/lib/tension/version.rb
CHANGED
data/lib/tension.rb
CHANGED
@@ -3,9 +3,18 @@ require 'tension/context'
|
|
3
3
|
require 'tension/controller'
|
4
4
|
require 'tension/helper'
|
5
5
|
require 'tension/environment'
|
6
|
+
require 'tension/version'
|
6
7
|
require 'tension/railtie' if defined?(Rails)
|
7
8
|
|
8
9
|
module Tension
|
9
10
|
CSS = "css".freeze
|
10
11
|
JS = "js".freeze
|
12
|
+
|
13
|
+
def self.environment
|
14
|
+
@@environment
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.environment=(env)
|
18
|
+
@@environment = env
|
19
|
+
end
|
11
20
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tension
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.14
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Piers Mainwaring
|
@@ -14,14 +14,14 @@ dependencies:
|
|
14
14
|
name: rails
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '3.2'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '3.2'
|
27
27
|
description: Tension brings some sanity to Rails's CSS & JS organization for modern
|
@@ -52,17 +52,17 @@ require_paths:
|
|
52
52
|
- lib
|
53
53
|
required_ruby_version: !ruby/object:Gem::Requirement
|
54
54
|
requirements:
|
55
|
-
- -
|
55
|
+
- - ">="
|
56
56
|
- !ruby/object:Gem::Version
|
57
57
|
version: '0'
|
58
58
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
59
59
|
requirements:
|
60
|
-
- -
|
60
|
+
- - ">="
|
61
61
|
- !ruby/object:Gem::Version
|
62
62
|
version: '0'
|
63
63
|
requirements: []
|
64
64
|
rubyforge_project:
|
65
|
-
rubygems_version: 2.0.
|
65
|
+
rubygems_version: 2.0.3
|
66
66
|
signing_key:
|
67
67
|
specification_version: 4
|
68
68
|
summary: Tighten up Rails's asset pipeline for CSS & JS.
|