engine-assets 0.2.0 → 0.2.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/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