engine-assets 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.0
1
+ 0.2.1
@@ -10,7 +10,11 @@ class EngineAssets::AssetsController < ApplicationController
10
10
  if(flat_file)
11
11
  render(:file => flat_file)
12
12
  else
13
- render(:template => File.join('engine_assets', controller_name, params[:path]), :layout => false)
13
+ begin
14
+ render(:template => File.join('engine_assets', controller_name, params[:path]), :layout => false)
15
+ rescue ActionView::MissingTemplate
16
+ head :not_found
17
+ end
14
18
  end
15
19
  end
16
20
 
data/config/routes.rb CHANGED
@@ -3,7 +3,7 @@ ActionController::Routing::Routes.draw do |map|
3
3
  map.send(type, "#{type}/:path.:format", {
4
4
  :controller => "engine_assets/#{type}",
5
5
  :action => :show,
6
- :path => /[A-Za-z0-9\/_-]+/ # e.g., path/to/file.ext
6
+ :path => /[A-Za-z0-9\/._-]+?/ # e.g., path/to/file.ext
7
7
  })
8
8
  end
9
9
  end
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{engine-assets}
8
- s.version = "0.2.0"
8
+ s.version = "0.2.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Corey Innis"]
12
- s.date = %q{2009-11-06}
12
+ s.date = %q{2009-11-07}
13
13
  s.description = %q{A Rails Engine, which enables Rails Engines to provide assets (javascript, css and images)}
14
14
  s.email = %q{support@coolerator.net}
15
15
  s.extra_rdoc_files = [
@@ -30,17 +30,27 @@ Gem::Specification.new do |s|
30
30
  "config/routes.rb",
31
31
  "engine-assets.gemspec",
32
32
  "lib/engine-assets.rb",
33
+ "lib/engine_assets/extensions/rails/plugin.rb",
33
34
  "lib/engine_assets/extensions/rails/routes.rb",
34
35
  "lib/engine_assets/public_locator.rb",
35
36
  "rails/init.rb",
37
+ "spec/controllers/javascripts_controller_spec.rb",
38
+ "spec/controllers/stylesheets_controller_spec.rb",
36
39
  "spec/routing/javascripts_routing_spec.rb",
37
40
  "spec/routing/stylesheets_routing_spec.rb",
38
41
  "spec/spec.opts",
39
42
  "spec/spec_helper.rb",
40
43
  "spec/spec_suite.rb",
41
- "spec/support/fixtures/app/views/javascripts/asset.js.erb",
42
- "spec/support/fixtures/public/javascripts/asset.js",
43
- "spec/support/helpers/textmate_helper.rb"
44
+ "spec/support/fixtures/app/views/engine_assets/javascripts/dual.js.erb",
45
+ "spec/support/fixtures/app/views/engine_assets/javascripts/solo.js.erb",
46
+ "spec/support/fixtures/app/views/engine_assets/stylesheets/dual.css.erb",
47
+ "spec/support/fixtures/app/views/engine_assets/stylesheets/solo.css.erb",
48
+ "spec/support/fixtures/public/javascripts/dual.js",
49
+ "spec/support/fixtures/public/stylesheets/dual.css",
50
+ "spec/support/helpers/fixture_helper.rb",
51
+ "spec/support/helpers/textmate_helper.rb",
52
+ "spec/support/shared/assets_controller_spec.rb",
53
+ "spec/support/shared/assets_routing_spec.rb"
44
54
  ]
45
55
  s.homepage = %q{http://github.com/coreyti/engine-assets}
46
56
  s.rdoc_options = ["--charset=UTF-8"]
@@ -48,11 +58,16 @@ Gem::Specification.new do |s|
48
58
  s.rubygems_version = %q{1.3.5}
49
59
  s.summary = %q{Rails Engines with assets.}
50
60
  s.test_files = [
51
- "spec/routing/javascripts_routing_spec.rb",
61
+ "spec/controllers/javascripts_controller_spec.rb",
62
+ "spec/controllers/stylesheets_controller_spec.rb",
63
+ "spec/routing/javascripts_routing_spec.rb",
52
64
  "spec/routing/stylesheets_routing_spec.rb",
53
65
  "spec/spec_helper.rb",
54
66
  "spec/spec_suite.rb",
55
- "spec/support/helpers/textmate_helper.rb"
67
+ "spec/support/helpers/fixture_helper.rb",
68
+ "spec/support/helpers/textmate_helper.rb",
69
+ "spec/support/shared/assets_controller_spec.rb",
70
+ "spec/support/shared/assets_routing_spec.rb"
56
71
  ]
57
72
 
58
73
  if s.respond_to? :specification_version then
data/lib/engine-assets.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  module EngineAssets ; end
2
2
 
3
3
  require 'engine_assets/public_locator'
4
+ require 'engine_assets/extensions/rails/plugin'
4
5
  require 'engine_assets/extensions/rails/routes'
@@ -0,0 +1,12 @@
1
+ class Rails::Plugin
2
+ class Loader
3
+ def register_plugin_as_loaded_with_engine_assets(plugin)
4
+ register_plugin_as_loaded_without_engine_assets(plugin)
5
+
6
+ if(plugin.engine? && File.exist?(public_dir = File.join(plugin.directory, 'public')))
7
+ EngineAssets::PublicLocator.paths << public_dir
8
+ end
9
+ end
10
+ alias_method_chain :register_plugin_as_loaded, :engine_assets
11
+ end
12
+ end
data/rails/init.rb CHANGED
@@ -5,16 +5,3 @@ require 'engine-assets'
5
5
  require 'controllers/engine_assets/assets_controller'
6
6
  require 'controllers/engine_assets/javascripts_controller'
7
7
  require 'controllers/engine_assets/stylesheets_controller'
8
-
9
- class Rails::Plugin
10
- class Loader
11
- def register_plugin_as_loaded_with_engine_assets(plugin)
12
- register_plugin_as_loaded_without_engine_assets(plugin)
13
-
14
- if(plugin.engine? && File.exist?(public_dir = File.join(plugin.directory, 'public')))
15
- EngineAssets::PublicLocator.paths << public_dir
16
- end
17
- end
18
- alias_method_chain :register_plugin_as_loaded, :engine_assets
19
- end
20
- end
@@ -0,0 +1,9 @@
1
+ require 'spec_helper'
2
+
3
+ describe EngineAssets::JavascriptsController do
4
+ before do
5
+ @format = 'js'
6
+ end
7
+
8
+ it_should_behave_like "A controller acting as an AssetsController"
9
+ end
@@ -0,0 +1,9 @@
1
+ require 'spec_helper'
2
+
3
+ describe EngineAssets::StylesheetsController do
4
+ before do
5
+ @format = 'css'
6
+ end
7
+
8
+ it_should_behave_like "A controller acting as an AssetsController"
9
+ end
@@ -1,38 +1,10 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe EngineAssets::JavascriptsController do
4
- describe "routing" do
5
- attr_reader :path
6
-
7
- context "given a simple path" do
8
- before do
9
- @path = '/javascripts/asset.js'
10
- end
11
-
12
- it "is able to recognize the path" do
13
- pending "my ability to overcome the challenges of spec'ing this working behavior"
14
- { :get => path }.should be_routable
15
- end
16
-
17
- it "is able to generate the path" do
18
- javascripts_path(:asset, :format => :js).should == path
19
- end
20
- end
21
-
22
- context "given a complex path" do
23
- before do
24
- @path = '/javascripts/path/to/asset.js'
25
- end
26
-
27
- it "is able to recognize the path" do
28
- pending "my ability to overcome the challenges of spec'ing this working behavior"
29
- { :get => path }.should be_routable
30
- end
31
-
32
- it "is able to generate the path" do
33
- pending "my ability to overcome the challenges of spec'ing this working behavior"
34
- javascripts_path('path/to/asset', :format => :js).should == path
35
- end
36
- end
4
+ before do
5
+ @prefix = 'javascripts'
6
+ @format = 'js'
37
7
  end
8
+
9
+ it_should_behave_like "A controller routed as an AssetsController"
38
10
  end
@@ -1,13 +1,10 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe EngineAssets::StylesheetsController do
4
- describe "routing" do
5
- it "recognizes valid paths" do
6
- { :get => "/stylesheets/asset.css" }.should be_routable
7
- end
8
-
9
- it "generates valid paths" do
10
- stylesheets_path(:asset, :format => :css).should == '/stylesheets/asset.css'
11
- end
4
+ before do
5
+ @prefix = 'stylesheets'
6
+ @format = 'css'
12
7
  end
8
+
9
+ it_should_behave_like "A controller routed as an AssetsController"
13
10
  end
data/spec/spec_helper.rb CHANGED
@@ -10,7 +10,10 @@ require 'engine-assets'
10
10
  require 'spec'
11
11
  require 'spec/autorun'
12
12
  require 'spec/rails'
13
+ require 'support/helpers/fixture_helper'
13
14
  require 'support/helpers/textmate_helper'
15
+ require 'support/shared/assets_controller_spec'
16
+ require 'support/shared/assets_routing_spec'
14
17
 
15
18
  Spec::Runner.configure do |config|
16
19
  include Support::Helpers
@@ -0,0 +1,2 @@
1
+ // This file, app/views/engine_assets/javascripts/dual.js.erb, should not be rendered
2
+ // since public/javascripts/dual.js takes precedence
@@ -0,0 +1,2 @@
1
+ // This file, app/views/engine_assets/javascripts/solo.js.erb, should be rendered
2
+ // since public/javascripts/solo.js does not exist
@@ -0,0 +1,2 @@
1
+ // This file, app/views/engine_assets/stylesheets/dual.css.erb, should not be rendered
2
+ // since public/stylesheets/dual.css takes precedence
@@ -0,0 +1,2 @@
1
+ // This file, app/views/engine_assets/stylesheets/solo.css.erb, should be rendered
2
+ // since public/stylesheets/solo.css does not exist
@@ -0,0 +1,2 @@
1
+ // This file, public/javascripts/dual.js, should be rendered
2
+ // taking precedence over app/views/engine_assets/javascripts/dual.js.erb
@@ -0,0 +1,2 @@
1
+ // This file, public/stylesheets/dual.css, should be rendered
2
+ // taking precedence over app/views/engine_assets/stylesheets/dual.css.erb
@@ -0,0 +1,8 @@
1
+ module Support
2
+ module Helpers
3
+ def load_view_fixtures(controller_class)
4
+ controller_class.prepend_view_path(File.join(File.dirname(__FILE__), '..', 'fixtures', 'app', 'views'))
5
+ EngineAssets::PublicLocator.paths << File.join(File.dirname(__FILE__), '..', 'fixtures', 'public')
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,34 @@
1
+ require 'spec_helper'
2
+
3
+ describe "A controller acting as an AssetsController", :shared => true do
4
+ attr_reader :format
5
+
6
+ integrate_views
7
+
8
+ before do
9
+ load_view_fixtures(@controller.class)
10
+ end
11
+
12
+ describe "response" do
13
+ context "with a matching file found in 'public'" do
14
+ it "renders that file" do
15
+ get :show, :path => 'dual', :format => format
16
+ response.body.should match("dual.#{format}, should be rendered")
17
+ end
18
+ end
19
+
20
+ context "with a matching file found in 'app'" do
21
+ it "renders that file" do
22
+ get :show, :path => 'solo', :format => format
23
+ response.body.should match("solo.#{format}.erb, should be rendered")
24
+ end
25
+ end
26
+
27
+ context "without a matching file" do
28
+ it "renders 404" do
29
+ get :show, :path => 'none', :format => format
30
+ response.response_code.should == 404
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,54 @@
1
+ require 'spec_helper'
2
+
3
+ describe "A controller routed as an AssetsController", :shared => true do
4
+ attr_reader :prefix, :format
5
+
6
+ describe "routing" do
7
+ attr_reader :path, :route
8
+
9
+ context "given a simple path" do
10
+ before do
11
+ @path = "/#{prefix}/asset.#{format}"
12
+ @route = { :controller => "engine_assets/#{prefix}", :action => 'show', :path => 'asset', :format => format }
13
+ end
14
+
15
+ it "recognizes the path" do
16
+ params_from(:get, path).should == route
17
+ end
18
+
19
+ it "generates the path from a URL helper" do
20
+ send("#{prefix}_path", :asset, :format => format).should == path
21
+ end
22
+ end
23
+
24
+ context "given a complex path of nested directories" do
25
+ before do
26
+ @path = "/#{prefix}/path/to/asset.#{format}"
27
+ @route = { :controller => "engine_assets/#{prefix}", :action => 'show', :path => 'path/to/asset', :format => format }
28
+ end
29
+
30
+ it "recognizes the path" do
31
+ params_from(:get, path).should == route
32
+ end
33
+
34
+ it "generates the path from a URL helper" do
35
+ CGI.unescape(send("#{prefix}_path", 'path/to/asset', :format => format)).should == CGI.unescape(path)
36
+ end
37
+ end
38
+
39
+ context "given a complex path of dotted components" do
40
+ before do
41
+ @path = "/#{prefix}/path.to/asset.one.#{format}"
42
+ @route = { :controller => "engine_assets/#{prefix}", :action => 'show', :path => 'path.to/asset.one', :format => format }
43
+ end
44
+
45
+ it "recognizes the path" do
46
+ params_from(:get, path).should == route
47
+ end
48
+
49
+ it "generates the path from a URL helper" do
50
+ CGI.unescape(send("#{prefix}_path", 'path.to/asset.one', :format => format)).should == CGI.unescape(path)
51
+ end
52
+ end
53
+ end
54
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: engine-assets
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Corey Innis
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-11-06 00:00:00 -05:00
12
+ date: 2009-11-07 00:00:00 -05:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -45,17 +45,27 @@ files:
45
45
  - config/routes.rb
46
46
  - engine-assets.gemspec
47
47
  - lib/engine-assets.rb
48
+ - lib/engine_assets/extensions/rails/plugin.rb
48
49
  - lib/engine_assets/extensions/rails/routes.rb
49
50
  - lib/engine_assets/public_locator.rb
50
51
  - rails/init.rb
52
+ - spec/controllers/javascripts_controller_spec.rb
53
+ - spec/controllers/stylesheets_controller_spec.rb
51
54
  - spec/routing/javascripts_routing_spec.rb
52
55
  - spec/routing/stylesheets_routing_spec.rb
53
56
  - spec/spec.opts
54
57
  - spec/spec_helper.rb
55
58
  - spec/spec_suite.rb
56
- - spec/support/fixtures/app/views/javascripts/asset.js.erb
57
- - spec/support/fixtures/public/javascripts/asset.js
59
+ - spec/support/fixtures/app/views/engine_assets/javascripts/dual.js.erb
60
+ - spec/support/fixtures/app/views/engine_assets/javascripts/solo.js.erb
61
+ - spec/support/fixtures/app/views/engine_assets/stylesheets/dual.css.erb
62
+ - spec/support/fixtures/app/views/engine_assets/stylesheets/solo.css.erb
63
+ - spec/support/fixtures/public/javascripts/dual.js
64
+ - spec/support/fixtures/public/stylesheets/dual.css
65
+ - spec/support/helpers/fixture_helper.rb
58
66
  - spec/support/helpers/textmate_helper.rb
67
+ - spec/support/shared/assets_controller_spec.rb
68
+ - spec/support/shared/assets_routing_spec.rb
59
69
  has_rdoc: true
60
70
  homepage: http://github.com/coreyti/engine-assets
61
71
  licenses: []
@@ -85,8 +95,13 @@ signing_key:
85
95
  specification_version: 3
86
96
  summary: Rails Engines with assets.
87
97
  test_files:
98
+ - spec/controllers/javascripts_controller_spec.rb
99
+ - spec/controllers/stylesheets_controller_spec.rb
88
100
  - spec/routing/javascripts_routing_spec.rb
89
101
  - spec/routing/stylesheets_routing_spec.rb
90
102
  - spec/spec_helper.rb
91
103
  - spec/spec_suite.rb
104
+ - spec/support/helpers/fixture_helper.rb
92
105
  - spec/support/helpers/textmate_helper.rb
106
+ - spec/support/shared/assets_controller_spec.rb
107
+ - spec/support/shared/assets_routing_spec.rb
@@ -1,2 +0,0 @@
1
- // This file, app/views/javascripts/asset.js.erb, should not be rendered
2
- // since public/javascripts/asset.js takes precedence
@@ -1,2 +0,0 @@
1
- // This file, public/javascripts/asset.js, should be rendered
2
- // taking precedence over app/views/javascripts/asset.js.erb