dassets 0.8.0 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -3,4 +3,4 @@ source "https://rubygems.org"
3
3
  gemspec
4
4
 
5
5
  gem 'rake'
6
- gem 'pry'
6
+ gem 'pry', "~> 0.9.0"
@@ -11,13 +11,14 @@ Gem::Specification.new do |gem|
11
11
  gem.description = %q{Digest and serve HTML asset files}
12
12
  gem.summary = %q{Digested asset files}
13
13
  gem.homepage = "http://github.com/redding/dassets"
14
+ gem.license = 'MIT'
14
15
 
15
16
  gem.files = `git ls-files`.split($/)
16
17
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
17
18
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
19
  gem.require_paths = ["lib"]
19
20
 
20
- gem.add_development_dependency("assert", ["~> 2.4"])
21
+ gem.add_development_dependency("assert", ["~> 2.12"])
21
22
  gem.add_development_dependency('assert-rack-test', ["~> 1.0"])
22
23
  gem.add_development_dependency("sinatra", ["~> 1.4"])
23
24
 
@@ -20,6 +20,11 @@ module Dassets
20
20
  @combinations = Hash.new{ |h, k| [k] } # digest pass-thru if none defined
21
21
  end
22
22
 
23
+ def base_url(value = nil)
24
+ @base_url = value if !value.nil?
25
+ @base_url
26
+ end
27
+
23
28
  def source(path, &block)
24
29
  @sources << Source.new(path).tap{ |s| block.call(s) if block }
25
30
  end
@@ -10,7 +10,14 @@ class Dassets::Server
10
10
  # the behavior to respect POST tunnel method specifiers. We always want
11
11
  # the real request method.
12
12
  def request_method; @env['REQUEST_METHOD']; end
13
- def path_info; @env['PATH_INFO']; end
13
+
14
+ def path_info
15
+ @env['PATH_INFO'].sub(dassets_base_url, '')
16
+ end
17
+
18
+ def dassets_base_url
19
+ Dassets.config.base_url.to_s
20
+ end
14
21
 
15
22
  # Determine if the request is for an asset file
16
23
  # This will be called on every request so speed is an issue
@@ -1,3 +1,3 @@
1
1
  module Dassets
2
- VERSION = "0.8.0"
2
+ VERSION = "0.9.0"
3
3
  end
@@ -7,6 +7,8 @@ $LOAD_PATH.unshift(File.expand_path("../..", __FILE__))
7
7
  # require pry for debugging (`binding.pry`)
8
8
  require 'pry'
9
9
 
10
+ require 'test/support/factory'
11
+
10
12
  require 'pathname'
11
13
  TEST_SUPPORT_PATH = Pathname.new(File.expand_path('../support', __FILE__))
12
14
 
@@ -0,0 +1,6 @@
1
+ require 'assert/factory'
2
+
3
+ module Factory
4
+ extend Assert::Factory
5
+
6
+ end
@@ -17,8 +17,19 @@ class Dassets::Config
17
17
  subject{ @config }
18
18
 
19
19
  should have_options :file_store, :cache
20
- should have_reader :combinations
21
- should have_imeth :source, :combination, :combination?
20
+ should have_readers :combinations
21
+ should have_imeths :base_url, :source, :combination, :combination?
22
+
23
+ should "have no base url by default" do
24
+ assert_nil subject.base_url
25
+ end
26
+
27
+ should "set a base url" do
28
+ url = Factory.url
29
+ subject.base_url url
30
+
31
+ assert_equal url, subject.base_url
32
+ end
22
33
 
23
34
  should "default the file store option to a null file store" do
24
35
  assert_kind_of Dassets::FileStore::NullStore, subject.file_store
@@ -4,7 +4,7 @@ require 'dassets/engine'
4
4
  class Dassets::Engine
5
5
 
6
6
  class UnitTests < Assert::Context
7
- desc "the base Dassets::Engine"
7
+ desc "Dassets::Engine"
8
8
  setup do
9
9
  @engine = Dassets::Engine.new
10
10
  end
@@ -31,7 +31,7 @@ class Dassets::Engine
31
31
  end
32
32
 
33
33
  class NullEngineTests < Assert::Context
34
- desc "the NullEngine"
34
+ desc "Dassets::NullEngine"
35
35
  setup do
36
36
  @engine = Dassets::NullEngine.new('some' => 'opts')
37
37
  end
@@ -8,12 +8,22 @@ class Dassets::Server::Request
8
8
  class UnitTests < Assert::Context
9
9
  desc "Dassets::Server::Request"
10
10
  setup do
11
- @req = file_request('GET', '/file1-daa05c683a4913b268653f7a7e36a5b4.txt')
11
+ @path = '/file1-daa05c683a4913b268653f7a7e36a5b4.txt'
12
+ @req = file_request('GET', @path)
12
13
  end
13
14
  subject{ @req }
14
15
 
16
+ should have_imeths :dassets_base_url
15
17
  should have_imeths :for_asset_file?, :asset_path, :asset_file
16
18
 
19
+ should "know its base url" do
20
+ assert_equal Dassets.config.base_url.to_s, subject.dassets_base_url
21
+ end
22
+
23
+ should "know its path info" do
24
+ assert_equal @path, subject.path_info
25
+ end
26
+
17
27
  should "know its asset_path" do
18
28
  assert_equal 'file1.txt', subject.asset_path
19
29
  end
@@ -71,4 +81,26 @@ class Dassets::Server::Request
71
81
 
72
82
  end
73
83
 
84
+ class BaseUrlTests < UnitTests
85
+ desc "when a base url is configured"
86
+ setup do
87
+ @orig_base_url = Dassets.config.base_url
88
+ @new_base_url = Factory.url
89
+ Dassets.config.base_url(@new_base_url)
90
+ end
91
+ teardown do
92
+ Dassets.config.base_url(@orig_base_url)
93
+ end
94
+
95
+ should "have the same base url as is configured" do
96
+ assert_equal @new_base_url.to_s, subject.dassets_base_url
97
+ end
98
+
99
+ should "remove the configured base url from the path info" do
100
+ assert_equal @path, file_request('GET', @path).path_info
101
+ assert_equal @path, file_request('GET', "#{@new_base_url}#{@path}").path_info
102
+ end
103
+
104
+ end
105
+
74
106
  end
@@ -3,7 +3,7 @@ require 'dassets/server'
3
3
 
4
4
  class Dassets::Server
5
5
 
6
- class BaseTests < Assert::Context
6
+ class UnitTests < Assert::Context
7
7
  desc "Dassets::Server"
8
8
  setup do
9
9
  @server = Dassets::Server.new('a rack app goes here')
@@ -5,7 +5,7 @@ require 'dassets/engine'
5
5
 
6
6
  class Dassets::Source
7
7
 
8
- class BaseTests < Assert::Context
8
+ class UnitTests < Assert::Context
9
9
  desc "Dassets::Source"
10
10
  setup do
11
11
  @source_path = TEST_SUPPORT_PATH.join("source_files")
@@ -51,7 +51,7 @@ class Dassets::Source
51
51
 
52
52
  end
53
53
 
54
- class EmptySourceTests < Assert::Context
54
+ class EmptySourceTests < UnitTests
55
55
  desc "with no source files"
56
56
  setup do
57
57
  @empty_source_path = TEST_SUPPORT_PATH.join("empty")
@@ -80,7 +80,7 @@ class Dassets::Source
80
80
 
81
81
  end
82
82
 
83
- class EngineRegistrationTests < BaseTests
83
+ class EngineRegistrationTests < UnitTests
84
84
  desc "when registering an engine"
85
85
  setup do
86
86
  @empty_engine = Class.new(Dassets::Engine) do
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dassets
3
3
  version: !ruby/object:Gem::Version
4
- hash: 63
4
+ hash: 59
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 8
8
+ - 9
9
9
  - 0
10
- version: 0.8.0
10
+ version: 0.9.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Kelly Redding
@@ -16,26 +16,24 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2013-12-05 00:00:00 Z
19
+ date: 2014-08-01 00:00:00 Z
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
- name: assert
23
- prerelease: false
24
22
  requirement: &id001 !ruby/object:Gem::Requirement
25
23
  none: false
26
24
  requirements:
27
25
  - - ~>
28
26
  - !ruby/object:Gem::Version
29
- hash: 11
27
+ hash: 27
30
28
  segments:
31
29
  - 2
32
- - 4
33
- version: "2.4"
30
+ - 12
31
+ version: "2.12"
34
32
  type: :development
33
+ name: assert
35
34
  version_requirements: *id001
36
- - !ruby/object:Gem::Dependency
37
- name: assert-rack-test
38
35
  prerelease: false
36
+ - !ruby/object:Gem::Dependency
39
37
  requirement: &id002 !ruby/object:Gem::Requirement
40
38
  none: false
41
39
  requirements:
@@ -47,10 +45,10 @@ dependencies:
47
45
  - 0
48
46
  version: "1.0"
49
47
  type: :development
48
+ name: assert-rack-test
50
49
  version_requirements: *id002
51
- - !ruby/object:Gem::Dependency
52
- name: sinatra
53
50
  prerelease: false
51
+ - !ruby/object:Gem::Dependency
54
52
  requirement: &id003 !ruby/object:Gem::Requirement
55
53
  none: false
56
54
  requirements:
@@ -62,10 +60,10 @@ dependencies:
62
60
  - 4
63
61
  version: "1.4"
64
62
  type: :development
63
+ name: sinatra
65
64
  version_requirements: *id003
66
- - !ruby/object:Gem::Dependency
67
- name: ns-options
68
65
  prerelease: false
66
+ - !ruby/object:Gem::Dependency
69
67
  requirement: &id004 !ruby/object:Gem::Requirement
70
68
  none: false
71
69
  requirements:
@@ -77,10 +75,10 @@ dependencies:
77
75
  - 1
78
76
  version: "1.1"
79
77
  type: :runtime
78
+ name: ns-options
80
79
  version_requirements: *id004
81
- - !ruby/object:Gem::Dependency
82
- name: rack
83
80
  prerelease: false
81
+ - !ruby/object:Gem::Dependency
84
82
  requirement: &id005 !ruby/object:Gem::Requirement
85
83
  none: false
86
84
  requirements:
@@ -92,7 +90,9 @@ dependencies:
92
90
  - 0
93
91
  version: "1.0"
94
92
  type: :runtime
93
+ name: rack
95
94
  version_requirements: *id005
95
+ prerelease: false
96
96
  description: Digest and serve HTML asset files
97
97
  email:
98
98
  - kelly@kellyredding.com
@@ -132,6 +132,7 @@ files:
132
132
  - test/support/app/assets/nested/a-thing.txt.useless.dumb
133
133
  - test/support/app/assets/nested/file3.txt
134
134
  - test/support/empty/.gitkeep
135
+ - test/support/factory.rb
135
136
  - test/support/public/file1-daa05c683a4913b268653f7a7e36a5b4.txt
136
137
  - test/support/public/file2-9bbe1047cffbb590f59e0e5aeff46ae4.txt
137
138
  - test/support/public/grumpy_cat-b0d1f399a916f7a25c4c0f693c619013.jpg
@@ -156,8 +157,8 @@ files:
156
157
  - test/unit/source_tests.rb
157
158
  - tmp/.gitkeep
158
159
  homepage: http://github.com/redding/dassets
159
- licenses: []
160
-
160
+ licenses:
161
+ - MIT
161
162
  post_install_message:
162
163
  rdoc_options: []
163
164
 
@@ -184,7 +185,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
184
185
  requirements: []
185
186
 
186
187
  rubyforge_project:
187
- rubygems_version: 1.8.24
188
+ rubygems_version: 1.8.25
188
189
  signing_key:
189
190
  specification_version: 3
190
191
  summary: Digested asset files
@@ -197,6 +198,7 @@ test_files:
197
198
  - test/support/app/assets/nested/a-thing.txt.useless.dumb
198
199
  - test/support/app/assets/nested/file3.txt
199
200
  - test/support/empty/.gitkeep
201
+ - test/support/factory.rb
200
202
  - test/support/public/file1-daa05c683a4913b268653f7a7e36a5b4.txt
201
203
  - test/support/public/file2-9bbe1047cffbb590f59e0e5aeff46ae4.txt
202
204
  - test/support/public/grumpy_cat-b0d1f399a916f7a25c4c0f693c619013.jpg