padrino-pipeline 0.2.2 → 0.3.0

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.
Files changed (35) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +0 -2
  3. data/Gemfile +0 -1
  4. data/README.md +101 -13
  5. data/lib/padrino-pipeline.rb +8 -4
  6. data/lib/padrino-pipeline/compilers/asset_pack.rb +9 -0
  7. data/lib/padrino-pipeline/compilers/sprockets.rb +61 -0
  8. data/lib/padrino-pipeline/configuration.rb +27 -1
  9. data/lib/padrino-pipeline/ext/padrino-helpers/asset_tag_helper.rb +73 -4
  10. data/lib/padrino-pipeline/pipelines/asset_pack.rb +11 -10
  11. data/lib/padrino-pipeline/pipelines/sprockets.rb +5 -3
  12. data/lib/padrino-pipeline/tasks.rb +9 -0
  13. data/lib/padrino-pipeline/tasks/pipeline_tasks.rb +37 -0
  14. data/lib/padrino-pipeline/version.rb +1 -1
  15. data/padrino-pipeline.gemspec +3 -3
  16. data/test/fixtures/asset_pack_app/asset_pack_app.rb +11 -0
  17. data/test/fixtures/sprockets_app/assets/javascripts/application.js +2 -0
  18. data/test/fixtures/sprockets_app/assets/javascripts/coffee.js.coffee +2 -0
  19. data/test/fixtures/sprockets_app/assets/javascripts/second_js_file.js +1 -0
  20. data/test/fixtures/sprockets_app/assets/stylesheets/application.css +1 -0
  21. data/test/{extra → helpers}/helper.rb +9 -18
  22. data/test/{extra → helpers}/mini_shoulda.rb +0 -0
  23. data/test/pipelines/asset_pack/test_packages.rb +31 -0
  24. data/test/pipelines/sprockets/test_compiler.rb +131 -0
  25. data/test/{sprockets → pipelines/sprockets}/test_js.rb +4 -4
  26. data/test/test_asset_tag.rb +52 -0
  27. data/test/test_compiler.rb +18 -0
  28. data/test/{api/test_compression.rb → test_compression.rb} +5 -5
  29. data/test/{api/test_css.rb → test_css.rb} +4 -4
  30. data/test/{api/test_images.rb → test_images.rb} +4 -4
  31. data/test/{api/test_js.rb → test_js.rb} +4 -4
  32. data/test/{api/test_other.rb → test_other.rb} +4 -4
  33. metadata +35 -40
  34. data/test/asset_pack/test_packages.rb +0 -61
  35. data/test/sprockets/test_asset_tag.rb +0 -27
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 14f082abda1188fbc0576b04796503d7067fa9c6
4
- data.tar.gz: bc74e3d743a9fc243caeaf39b911d6b008463da0
3
+ metadata.gz: c780188a8a746db35ba46d78a7c8c940861c0fc3
4
+ data.tar.gz: 0a625506df07794e7f75b81ba6f63ab5cb98ceb9
5
5
  SHA512:
6
- metadata.gz: c923aab61e2b1c0a04143993cb9fe42114df3a2de17f8120ce4ab6c61354b0119dbeefab02674c6ee290463448d5372fa6abfd408dbab41d3dfc65d1a420dfbd
7
- data.tar.gz: 52eb92c79db4d701ba3d7313e6d9f4cc5f32fc5fd4e04adc7ecbb89da72b58bd80a6d8fdfe4497d003eea9003d3f4075ab12e94dcdb960b6c722ee7163b69539
6
+ metadata.gz: af6ff7d0500ed852640d8a5c7572776a2c21b5557181f304872bc0b83667a0ec02ebc7fe5b10bbc5812be59364567429a67f4a5bf55d08d761b94da7fdf6c73e
7
+ data.tar.gz: 4d1076133feb2a8a3727196eaf146d570cbbf2030ff48aba906cae12d9c9f07014c8f0340abbdd408cce2f336832047ea8258c998207edfda75ab9abf14ea755
data/.travis.yml CHANGED
@@ -4,10 +4,8 @@ install:
4
4
  - gem update --system
5
5
  - bundle update
6
6
  rvm:
7
- - 1.8.7
8
7
  - 1.9.3
9
8
  - 2.0.0
10
- - rbx-18mode
11
9
  - jruby-19mode-1.7.4
12
10
  branches:
13
11
  only:
data/Gemfile CHANGED
@@ -5,7 +5,6 @@ gem "rake"
5
5
  (RUBY_VERSION < "1.9") ? gem("nokogiri", "~> 1.5.10") : gem("nokogiri", "~> 1.6")
6
6
 
7
7
  group :test do
8
- gem "webrat", ">= 0.5.1"
9
8
  gem "rack-test", ">= 0.5.0"
10
9
  gem "minitest", "~> 4.0"
11
10
  end
data/README.md CHANGED
@@ -8,7 +8,7 @@ a unified way to use several different asset management systems.
8
8
 
9
9
 
10
10
  ##Supported Pipelines
11
- - [Sprockets](https://github.com/sstephenson/sprockets)
11
+ - [sprockets](https://github.com/sstephenson/sprockets)
12
12
  - [sinatra-assetpack](https://github.com/rstacruz/sinatra-assetpack)
13
13
 
14
14
  ##Simple Usage
@@ -62,25 +62,113 @@ module Example
62
62
  end
63
63
  ```
64
64
 
65
- The following options can be set
66
65
 
67
- ### Pipeline
68
- - #pipeline
66
+ ## Pipeline
67
+ ```ruby
68
+ module Example
69
+ class App < Padrino::Application
70
+ register Padrino::Pipeline
71
+ configure_assets do |config|
72
+ config.pipeline = Padrino::Pipeline::AssetPack
73
+ end
74
+ end
75
+ end
76
+ ```
77
+
78
+ `config.pipeline = Padrino::Pipeline::AssetPack`
79
+ `config.pipeline = Padrino::Pipeline::Sprockets`
69
80
 
70
- ### Assets URI(mounting location) String
71
- - #css_prefix
72
- - #js_prefix
81
+ ## Assets URI(mounting location) String
73
82
 
74
- ### Asset location(path to files) String/Array
75
- - #css_assets
76
- - #js_assets
83
+ ###css_prefix
84
+ ```ruby
85
+ module Example
86
+ class App < Padrino::Application
87
+ register Padrino::Pipeline
88
+ configure_assets do |config|
89
+ config.pipeline = Padrino::Pipeline::Sprockets
90
+ config.css_prefix = '/my_custom_location'
91
+ end
92
+ end
93
+ end
94
+ ```
95
+ `/my_custom_location` will be the location css assets are served
96
+ e.g. `/my_custom_location/application.css`
77
97
 
78
- ### Prefix prepend this prefix before all assets
79
- - #prefix
98
+ ###js_prefix
99
+ ```ruby
100
+ module Example
101
+ class App < Padrino::Application
102
+ register Padrino::Pipeline
103
+ configure_assets do |config|
104
+ config.pipeline = Padrino::Pipeline::Sprockets
105
+ config.js_prefix = '/js'
106
+ end
107
+ end
108
+ end
109
+ ```
110
+ `/js` will be the location css assets are served
111
+ e.g. `/js/application.js`
80
112
 
81
- ### Default option values
113
+ ## Asset location(path to files) String/Array
114
+ ###css_assets
115
+ ```ruby
116
+ module Example
117
+ class App < Padrino::Application
118
+ register Padrino::Pipeline
119
+ configure_assets do |config|
120
+ config.pipeline = Padrino::Pipeline::Sprockets
121
+ config.css_assets = '/path/to/stylesheets'
122
+ end
123
+ end
124
+ end
125
+ ```
126
+ `/path/to/stylesheets` will be served at the css_prefix(default: /assets/stylesheets)
127
+
128
+ ###js_assets
129
+ ```ruby
130
+ module Example
131
+ class App < Padrino::Application
132
+ register Padrino::Pipeline
133
+ configure_assets do |config|
134
+ config.pipeline = Padrino::Pipeline::Sprockets
135
+ config.js_assets = '/path/to/javascripts'
136
+ end
137
+ end
138
+ end
139
+ ```
140
+ `/path/to/javascripts` will be served at the js_prefix(default: /assets/javascripts)
141
+
142
+ ## Prefix prepend this prefix before all assets
143
+ ###prefix
144
+ ```ruby
145
+ module Example
146
+ class App < Padrino::Application
147
+ register Padrino::Pipeline
148
+ configure_assets do |config|
149
+ config.pipeline = Padrino::Pipeline::Sprockets
150
+ config.prefix = '/public'
151
+ end
152
+ end
153
+ end
154
+ ```
155
+ prefixes `/public` to all asset URLs. Above example will serve assets from:
156
+ - `/public/assets/stylesheets/application.css`
157
+ # => `http://localhost:3000/public/assets/stylesheets/application.css`
158
+ - `/public/assets/javascripts/application.js`
159
+ # => `http://localhost:3000/public/assets/javascripts/application.js`
160
+
161
+ ## Default option values
162
+ TODO
163
+
164
+ ## compile asset rake tasks
82
165
  TODO
83
166
 
167
+ ## Sprocket compiled assets
168
+ `javascript_include_tag` & `stylesheet_link_tag` have been patched to include the hex digest of compiled assets.
169
+ if the assets do not exist a fresh copy will be served via the normal asset URL.
170
+ e.g. `application-12abc456xyz.js` vs `application.js`
171
+
84
172
  ## Asset pack packages
85
173
  ```ruby
86
174
  module Example
@@ -1,5 +1,8 @@
1
1
  require 'padrino-pipeline/pipelines/sprockets'
2
2
  require 'padrino-pipeline/pipelines/asset_pack'
3
+ require 'padrino-pipeline/compilers/sprockets'
4
+ require 'padrino-pipeline/compilers/asset_pack'
5
+
3
6
  require 'padrino-pipeline/ext/padrino-helpers/asset_tag_helper'
4
7
  require 'padrino-pipeline/configuration'
5
8
 
@@ -7,11 +10,12 @@ module Padrino
7
10
  ##
8
11
  # Add public api docs here
9
12
  module Pipeline
10
-
13
+
11
14
  def configure_assets(&block)
12
- assets = Padrino::Pipeline::Configuration.new(self)
13
- yield assets if block_given?
14
- assets.pipeline.new(self, assets)
15
+ config = Padrino::Pipeline::Configuration.new(self)
16
+ yield config if block_given?
17
+ config.pipeline = config.pipeline.new(self, config)
18
+ set :pipeline, config
15
19
  end
16
20
 
17
21
  end
@@ -0,0 +1,9 @@
1
+ module Padrino
2
+ module Pipeline
3
+ module Compiler
4
+ class AssetPack
5
+
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,61 @@
1
+ module Padrino
2
+ module Pipeline
3
+ module Compiler
4
+ class Sprockets
5
+ def initialize(config)
6
+ @config = config
7
+ end
8
+
9
+ def compile(type)
10
+ create_directory(@config.compiled_output)
11
+ create_directory("#{@config.compiled_output}/#{@config.js_compiled_output}")
12
+ create_directory("#{@config.compiled_output}/#{@config.css_compiled_output}")
13
+ return unless @config.app
14
+ case type
15
+ when :js then compile_js
16
+ when :css then compile_css
17
+ else
18
+ throw RuntimeError, "Can not compile #{type} asset"
19
+ end
20
+ end
21
+
22
+ def js_output_path(file_name = '')
23
+ output_path(@config.js_compiled_output).join(file_name)
24
+ end
25
+
26
+ def css_output_path(file_name = '')
27
+ output_path(@config.css_compiled_output).join(file_name)
28
+ end
29
+
30
+ private
31
+ def assets
32
+ @config.app.assets
33
+ end
34
+
35
+ def output_path(directory_name)
36
+ output_path = Pathname.new(@config.compiled_output).join(directory_name)
37
+ end
38
+
39
+ def compile_css
40
+ compile_assets(:css, ['css', 'css.gz'])
41
+ end
42
+
43
+ def compile_js
44
+ compile_assets(:js, ['js', 'js.gz'])
45
+ end
46
+
47
+ def compile_assets(type, extensions = [])
48
+ asset = assets[@config.send("#{type.to_s}_compiled_asset")]
49
+ extensions.each do |ext|
50
+ output_path = self.send("#{type.to_s}_output_path", "application-#{asset.digest}.#{ext}")
51
+ asset.write_to output_path
52
+ end
53
+ end
54
+
55
+ def create_directory(path)
56
+ FileUtils.mkdir_p(path) unless File.exists?(path)
57
+ end
58
+ end
59
+ end
60
+ end
61
+ end
@@ -5,7 +5,9 @@ module Padrino
5
5
  attr_accessor :pipeline, :packages, :prefix
6
6
  attr_accessor :css_prefix, :js_prefix, :image_prefix
7
7
  attr_accessor :css_assets, :js_assets, :image_assets
8
- attr_accessor :enable_compression
8
+ attr_accessor :js_compiled_output, :css_compiled_output, :compiled_output
9
+ attr_accessor :js_compiled_asset, :css_compiled_asset
10
+ attr_accessor :enable_compression, :app
9
11
 
10
12
  def initialize(app)
11
13
  @app = app
@@ -17,6 +19,17 @@ module Padrino
17
19
  @image_assets = "#{app_root}/assets/images"
18
20
  @js_assets = "#{app_root}/assets/javascripts"
19
21
  @css_assets = "#{app_root}/assets/stylesheets"
22
+
23
+ @compiled_output = "#{app_root}/public"
24
+ @js_compiled_output = "javascripts"
25
+ @css_compiled_output = "stylesheets"
26
+
27
+ @js_compiled_asset = 'application.js'
28
+ @css_compiled_asset = 'application.css'
29
+ end
30
+
31
+ def compile(*args)
32
+ asset_compiler.compile(*args)
20
33
  end
21
34
 
22
35
  def app_root
@@ -38,7 +51,20 @@ module Padrino
38
51
  def serve_compressed?
39
52
  enable_compression || PADRINO_ENV == "production"
40
53
  end
54
+
55
+ def asset_compiler
56
+ @asset_compiler ||= match_compiler.new(self)
57
+ end
58
+
59
+ private
60
+ def pipeline_class
61
+ @pipeline.class.name
62
+ end
41
63
 
64
+ def match_compiler
65
+ pipeline_type = pipeline_class.split('::').last
66
+ "Padrino::Pipeline::Compiler::#{pipeline_type}".constantize
67
+ end
42
68
  end
43
69
  end
44
70
  end
@@ -1,11 +1,80 @@
1
+ require 'padrino-helpers'
2
+
1
3
  module Padrino
2
4
  module Helpers
3
5
  module AssetTagHelpers
4
6
 
5
- # alias :original_asset_path :asset_path
6
- # def asset_path(kind, source)
7
- # original_asset_path(kind, source)
8
- # end
7
+ def pipeline_asset_folder_name(kind)
8
+ pipeline = settings.pipeline
9
+ case kind
10
+ when :css then pipeline.css_prefix
11
+ when :js then pipeline.js_prefix
12
+ when :images then pipeline.image_prefix
13
+ else kind.to_s
14
+ end
15
+ end
16
+
17
+ alias_method :original_asset_folder_name, :asset_folder_name
18
+ alias_method :asset_folder_name, :pipeline_asset_folder_name
19
+
20
+ alias_method :original_javascript_include_tag, :javascript_include_tag
21
+ def javascript_include_tag(*sources)
22
+ options = sources.extract_options!.symbolize_keys
23
+ options.reverse_merge!(:type => 'text/javascript')
24
+ sources.flatten.map { |source|
25
+ content_tag(:script, nil, options.reverse_merge(:src => resolve_js_path(source)))
26
+ }.join("\n").html_safe
27
+ end
28
+
29
+ alias_method :original_stylesheet_link_tag, :stylesheet_link_tag
30
+ def stylesheet_link_tag(*sources)
31
+ options = sources.extract_options!.symbolize_keys
32
+ options.reverse_merge!(:media => 'screen', :rel => 'stylesheet', :type => 'text/css')
33
+ sources.flatten.map { |source|
34
+ tag(:link, options.reverse_merge(:href => asset_path(:css, resolve_css_path(source))))
35
+ }.join("\n").html_safe
36
+ end
37
+
38
+ private
39
+ def resolve_css_path(source)
40
+ resolve_path(:css, source)
41
+ end
42
+
43
+ def resolve_js_path(source)
44
+ resolve_path(:js, source)
45
+ end
46
+
47
+ def resolve_path(type, source)
48
+ digested_source = digested_source(source)
49
+ digested_source_path = digested_source_path(type, digested_source)
50
+ File.exists?(digested_source_path) ? asset_path(type, digested_source) : asset_path(type, source)
51
+ end
52
+
53
+ ##
54
+ # Get the full path of the digested_source
55
+ def digested_source_path(type, digested_source)
56
+ #hackzor
57
+ settings.pipeline.asset_compiler.send("#{type.to_s}_output_path", digested_source)
58
+ rescue
59
+ ''
60
+ end
61
+
62
+ ##
63
+ # Add the hex digest to the source path
64
+ def digested_source(source)
65
+ digest = asset_digest(source)
66
+ parts = source.split('.')
67
+ (parts[0...parts.count-1]).join('.') << "-#{digest}.#{parts.last}"
68
+ end
69
+
70
+ ##
71
+ # Get the hex digest for a particular asset
72
+ def asset_digest(source)
73
+ return '' unless defined? settings
74
+ return '' unless settings.respond_to?(:assets)
75
+ return '' unless settings.assets.respond_to?(:[])
76
+ settings.assets[source] && settings.assets[source].digest
77
+ end
9
78
 
10
79
  end #AssetTagHelpers
11
80
  end #Helpers
@@ -1,10 +1,9 @@
1
- require 'sinatra/assetpack' unless defined? Sinatra::AssetPack
2
-
3
1
  module Padrino
4
2
  module Pipeline
5
3
  class AssetPack
6
4
 
7
5
  def initialize(app, config)
6
+ require_libraries
8
7
  @app = app
9
8
  @config = config
10
9
  setup_enviroment
@@ -16,6 +15,10 @@ module Padrino
16
15
  end
17
16
 
18
17
  private
18
+ def require_libraries
19
+ require 'sinatra/assetpack'
20
+ end
21
+
19
22
  def setup_enviroment
20
23
  @app.set :serve_assets, true
21
24
  @app.register Sinatra::AssetPack
@@ -29,20 +32,18 @@ module Padrino
29
32
 
30
33
  @app.assets {
31
34
  def mount_asset(prefix, assets)
32
- if assets.respond_to?(:each)
33
- assets.each {|asset| serve prefix, :from => asset}
34
- else
35
- serve prefix, :from => assets
35
+ [*assets].flatten.each do |asset|
36
+ serve(prefix, :from => asset) if File.exists? asset
36
37
  end
37
38
  end
38
39
 
39
- mount_asset js_prefix, js_assets
40
- mount_asset css_prefix, css_assets
41
- mount_asset image_prefix, image_assets
40
+ mount_asset(js_prefix, js_assets)
41
+ mount_asset(css_prefix, css_assets)
42
+ mount_asset(image_prefix, image_assets)
42
43
 
43
44
  packages.each { |package| send(package.shift, *package) }
44
45
  if compression_enabled
45
- js_compression :uglify
46
+ js_compression :jsmin
46
47
  css_compression :sass
47
48
  end
48
49
  }
@@ -1,11 +1,9 @@
1
- require 'sprockets'
2
- require 'uglifier'
3
-
4
1
  module Padrino
5
2
  module Pipeline
6
3
  class Sprockets
7
4
 
8
5
  def initialize(app, config)
6
+ require_libraries
9
7
  @app = app
10
8
  @config = config
11
9
  setup_enviroment
@@ -13,6 +11,10 @@ module Padrino
13
11
  end
14
12
 
15
13
  private
14
+ def require_libraries
15
+ %w[sprockets uglifier].each { |package| require package }
16
+ end
17
+
16
18
  def paths
17
19
  js_assets = @config.js_assets.kind_of?(Array) ? @config.js_assets : [@config.js_assets]
18
20
  css_assets = @config.css_assets.kind_of?(Array) ? @config.css_assets : [@config.css_assets]
@@ -0,0 +1,9 @@
1
+ begin
2
+ require 'padrino-core/tasks'
3
+ ##
4
+ # Allows tasks to be added to the client Padrino application
5
+ if defined? Padrino::Tasks
6
+ Padrino::Tasks.files.concat(Dir["#{File.dirname(__FILE__)}/tasks/**/*.rb"])
7
+ end
8
+ rescue LoadError
9
+ end
@@ -0,0 +1,37 @@
1
+ namespace :pipeline do
2
+ def load_apps
3
+ require File.expand_path('config/boot.rb', Rake.application.original_dir)
4
+ end
5
+
6
+ def send_to_pipeline(method, *args)
7
+ Padrino.mounted_apps.each do |mounted_app|
8
+ app = mounted_app.app_obj
9
+ app.pipeline.send(method, *args) if app.pipeline?
10
+ end
11
+ end
12
+
13
+ desc "Compile javascript assets"
14
+ task :compile_js do
15
+ load_apps
16
+ send_to_pipeline(:compile, :js)
17
+ end
18
+
19
+ desc "Compile CSS assets"
20
+ task :compile_css do
21
+ load_apps
22
+ send_to_pipeline(:compile, :css)
23
+ end
24
+
25
+ desc "Clean javascipt assets"
26
+ task :clean_js do
27
+ load_apps
28
+ send_to_pipeline(:clean, :js)
29
+ end
30
+
31
+ desc "Clean CSS assets"
32
+ task :clean_css do
33
+ load_apps
34
+ send_to_pipeline(:clean, :css)
35
+ end
36
+
37
+ end
@@ -1,5 +1,5 @@
1
1
  module Padrino
2
2
  module Pipeline
3
- VERSION = '0.2.2'
3
+ VERSION = '0.3.0'
4
4
  end
5
5
  end
@@ -2,6 +2,7 @@
2
2
  # encoding: utf-8
3
3
 
4
4
  require File.expand_path("../lib/padrino-pipeline/version.rb", __FILE__)
5
+ require File.expand_path("../lib/padrino-pipeline/tasks.rb", __FILE__)
5
6
 
6
7
  Gem::Specification.new do |s|
7
8
  s.name = "padrino-pipeline"
@@ -16,7 +17,7 @@ Gem::Specification.new do |s|
16
17
  s.date = Time.now.strftime("%Y-%m-%d")
17
18
 
18
19
  s.extra_rdoc_files = Dir["*.rdoc"]
19
- s.files = `git ls-files`.split("\n")
20
+ s.files = `git ls-files`.split("\n") | Dir.glob("{lib}/**/*")
20
21
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
21
22
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
22
23
  s.require_paths = ["lib"]
@@ -29,6 +30,5 @@ Gem::Specification.new do |s|
29
30
  s.add_dependency("sprockets", "~> 2.10.0")
30
31
  s.add_dependency("uglifier", "~> 2.1.0")
31
32
 
32
- s.add_dependency("sinatra-assetpack", "~> 0.2.0")
33
- s.add_dependency("padrino-core", "~> 0.11.0")
33
+ s.add_dependency("sinatra-assetpack", "~> 0.3.0")
34
34
  end
@@ -29,4 +29,15 @@ class AssetsAppAssetPackCustom < BaseApp
29
29
  end
30
30
  end
31
31
 
32
+ class CustomPackagesAppDev < BaseApp
33
+ configure_assets do |config|
34
+ config.pipeline = Padrino::Pipeline::AssetPack
35
+
36
+ config.packages << [:js, :application, '/assets/javascripts/application.js', ['/assets/javascripts/*']]
37
+ config.packages << [:css, :application, '/assets/stylesheets/application.css', ['/assets/stylesheets/*']]
38
+
39
+ end
40
+
41
+ end
42
+
32
43
  Padrino.load!
@@ -0,0 +1,2 @@
1
+ //= require second_js_file
2
+ //= require coffee
@@ -1 +1,3 @@
1
1
  cf = 'yes'
2
+ coffee_method ->
3
+ true;
@@ -1 +1,2 @@
1
1
  var in_second_file;
2
+ function in_second_file(){}
@@ -1 +1,2 @@
1
1
  //= require second_file
2
+ //= require sass
@@ -1,17 +1,13 @@
1
- require File.join(File.dirname(__FILE__), 'mini_shoulda')
2
- require File.join(File.dirname(__FILE__), '..' , 'fixtures', 'sprockets_app', 'sprockets_app')
3
-
1
+ $:.unshift File.expand_path(File.join(File.dirname(__FILE__), '..', '..'))
2
+ $:.unshift File.expand_path(File.join(File.dirname(__FILE__), '..', '..','lib'))
4
3
  require 'rack/test'
5
- require 'webrat'
6
4
  require 'padrino-helpers'
5
+ require File.expand_path(File.dirname(__FILE__) + '/mini_shoulda')
6
+ require File.expand_path(File.dirname(__FILE__) + '/../fixtures/sprockets_app/sprockets_app')
7
7
 
8
8
  class MiniTest::Spec
9
9
  include Rack::Test::Methods
10
- include Webrat::Methods
11
- include Webrat::Matchers
12
-
13
- Webrat.configure { |config| config.mode = :rack }
14
-
10
+
15
11
  def mock_app(base=Padrino::Application, &block)
16
12
  @app = Sinatra.new(base, &block)
17
13
  @app.set :logging, false
@@ -48,13 +44,8 @@ end
48
44
 
49
45
  Object.class_eval { include(MiniTest::Spec::SharedExamples) }
50
46
 
51
-
52
- module Webrat
53
- module Logging
54
- def logger # @private
55
- @logger = nil
56
- end
57
- end
47
+ # Asserts that a file matches the pattern
48
+ def assert_match_in_file(pattern, file)
49
+ assert File.exist?(file), "File '#{file}' does not exist!"
50
+ assert_match pattern, File.read(file)
58
51
  end
59
-
60
-
File without changes
@@ -0,0 +1,31 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../helpers/helper')
2
+ require File.expand_path(File.dirname(__FILE__) + '/../../fixtures/asset_pack_app/asset_pack_app')
3
+
4
+ describe :asset_pack_packages do
5
+ context :custom_package do
6
+ let(:app) { CustomPackagesAppDev }
7
+
8
+ it 'can serve a js asset pack' do
9
+ get '/assets/javascripts/app.js'
10
+ assert_equal 200, last_response.status
11
+ assert_match 'mainApp', last_response.body
12
+ end
13
+
14
+ it 'can serve a css asset pack' do
15
+ get '/assets/stylesheets/app.css'
16
+ assert_equal 200, last_response.status
17
+ assert_match 'body', last_response.body
18
+ end
19
+
20
+ it 'can get application.js' do
21
+ get '/assets/javascripts/application.js'
22
+ assert_equal 200, last_response.status
23
+ end
24
+
25
+ it 'can get application.css' do
26
+ get '/assets/stylesheets/application.css'
27
+ assert_equal 200, last_response.status
28
+ end
29
+
30
+ end
31
+ end
@@ -0,0 +1,131 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../helpers/helper')
2
+ require 'ostruct'
3
+
4
+ describe Padrino::Pipeline::Compiler::Sprockets do
5
+ before do
6
+ @asset_path = "#{fixture_path('sprockets_app')}/assets"
7
+ @public_path = "#{fixture_path('sprockets_app')}/public"
8
+ end
9
+
10
+ after do
11
+ FileUtils.rm_rf @public_path
12
+ end
13
+
14
+ it 'creates a directory to put compiled assets' do
15
+ config = OpenStruct.new(compiled_output: @public_path)
16
+ compiler = Padrino::Pipeline::Compiler::Sprockets.new(config)
17
+
18
+ compiler.compile(:js)
19
+ assert_equal true, File.exists?(@public_path)
20
+ end
21
+
22
+ it 'raises exception on incorrect compile type' do
23
+ skip
24
+ config = OpenStruct.new( compiled_output: @public_path)
25
+ compiler = Padrino::Pipeline::Compiler::Sprockets.new(config)
26
+
27
+ assert_throws(RuntimeError) { compiler.compile(:somehting) }
28
+ end
29
+
30
+ it 'creates the correct directory for javascripts' do
31
+ config_hash = { compiled_output: @public_path, js_compiled_output: 'javascripts' }
32
+ config = OpenStruct.new(config_hash)
33
+ compiler = Padrino::Pipeline::Compiler::Sprockets.new(config).compile(:js)
34
+ assert_equal true, File.exists?("#{@public_path}/javascripts")
35
+
36
+ config_hash = { compiled_output: @public_path, js_compiled_output: 'javascripts-compiled' }
37
+ config = OpenStruct.new(config_hash)
38
+ compiler = Padrino::Pipeline::Compiler::Sprockets.new(config).compile(:js)
39
+ assert_equal true, File.exists?("#{@public_path}/javascripts-compiled")
40
+ end
41
+
42
+ it 'creates the correct directory for stylesheets' do
43
+ config_hash = { compiled_output: @public_path, css_compiled_output: 'stylesheets' }
44
+ config = OpenStruct.new(config_hash)
45
+ compiler = Padrino::Pipeline::Compiler::Sprockets.new(config).compile(:css)
46
+ assert_equal true, File.exists?("#{@public_path}/stylesheets")
47
+
48
+ config_hash = { compiled_output: @public_path, css_compiled_output: 'stylesheets-compiled' }
49
+ config = OpenStruct.new(config_hash)
50
+ compiler = Padrino::Pipeline::Compiler::Sprockets.new(config).compile(:js)
51
+ assert_equal true, File.exists?("#{@public_path}/stylesheets-compiled")
52
+ end
53
+
54
+ it 'cleans '
55
+
56
+ describe 'Custom compiler settings' do
57
+ let(:app) { rack_app }
58
+ before do
59
+ asset_path, public_path = @asset_path, @public_path
60
+ mock_app do
61
+ register Padrino::Pipeline
62
+ register Padrino::Helpers
63
+
64
+ configure_assets do |assets|
65
+ assets.pipeline = Padrino::Pipeline::Sprockets
66
+ assets.js_assets = "#{asset_path}/javascripts"
67
+ assets.css_assets = "#{asset_path}/stylesheets"
68
+ assets.compiled_output = "#{public_path}"
69
+ end
70
+
71
+ get('/js') { render :erb, "<%= javascript_include_tag 'application.js' %>" }
72
+ get('/css') { render :erb, "<%= stylesheet_link_tag 'application.css' %>" }
73
+ end
74
+ end
75
+
76
+ after { FileUtils.rm_rf "#{@public_path}/javascripts" }
77
+
78
+ context 'asset_tags' do
79
+ it 'should return javascript with the correct digest' do
80
+ @app.pipeline.compile :js
81
+
82
+ digest = @app.assets['application.js'].digest
83
+ get '/js'
84
+ assert_match "/assets/javascripts/application-#{digest}.js", last_response.body
85
+ end
86
+
87
+ it 'should return stylesheet with the correct digest' do
88
+ @app.pipeline.compile :css
89
+ digest = @app.assets['application.css'].digest
90
+ get '/css'
91
+ assert_match "/assets/stylesheets/application-#{digest}.css", last_response.body
92
+ end
93
+ end
94
+
95
+ context 'javascripts' do
96
+ it 'should compile application.js and application.js.gz' do
97
+ @app.pipeline.compile :js
98
+
99
+ digest = @app.assets['application.js'].digest
100
+ assert_equal true, File.exists?("#{@public_path}/javascripts/application-#{digest}.js")
101
+ assert_equal true, File.exists?("#{@public_path}/javascripts/application-#{digest}.js.gz")
102
+ end
103
+
104
+ it 'should compile files included in the manifest' do
105
+ @app.pipeline.compile :js
106
+
107
+ digest = @app.assets['application.js'].digest
108
+ assert_match_in_file 'function in_second_file()', "#{@public_path}/javascripts/application-#{digest}.js"
109
+ assert_match_in_file 'coffee_method', "#{@public_path}/javascripts/application-#{digest}.js"
110
+ end
111
+ end
112
+
113
+ context 'stylesheets' do
114
+ it 'should compile application.css and application.css.gz' do
115
+ @app.pipeline.compile :css
116
+
117
+ digest = @app.assets['application.css'].digest
118
+ assert_equal true, File.exists?("#{@public_path}/stylesheets/application-#{digest}.css")
119
+ assert_equal true, File.exists?("#{@public_path}/stylesheets/application-#{digest}.css.gz")
120
+ end
121
+
122
+ it 'should compile files included in the manifest' do
123
+ @app.pipeline.compile :css
124
+
125
+ digest = @app.assets['application.css'].digest
126
+ assert_match_in_file '.home', "#{@public_path}/stylesheets/application-#{digest}.css"
127
+ assert_match_in_file '.div', "#{@public_path}/stylesheets/application-#{digest}.css"
128
+ end
129
+ end
130
+ end
131
+ end
@@ -1,8 +1,8 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../extra/helper')
2
- require File.expand_path(File.dirname(__FILE__) + '/../fixtures/sprockets_app/sprockets_app')
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../helpers/helper')
2
+ require File.expand_path(File.dirname(__FILE__) + '/../../fixtures/sprockets_app/sprockets_app')
3
3
 
4
4
 
5
- describe 'Javascripts' do
5
+ describe :sprockets_javascript do
6
6
  let(:app) { AssetsAppSprockets }
7
7
  context 'for //= require' do
8
8
  it 'picks up require statements' do
@@ -11,4 +11,4 @@ describe 'Javascripts' do
11
11
  end
12
12
  end
13
13
 
14
- end#describe
14
+ end
@@ -0,0 +1,52 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/helpers/helper')
2
+
3
+ shared_examples_for :pipeline do
4
+ describe :asset_tags do
5
+
6
+ context 'asset tags for #js #css #image' do
7
+ let(:app) { rack_app }
8
+ before :each do
9
+ assets_location = "#{fixture_path('sprockets_app')}/assets/javascripts"
10
+ public_path = "#{fixture_path('sprockets_app')}/public"
11
+ pipeline = @pipeline
12
+ mock_app do
13
+ register Padrino::Pipeline
14
+ register Padrino::Helpers
15
+ configure_assets do |assets|
16
+ assets.pipeline = pipeline
17
+ assets.js_assets = [assets_location]
18
+ end
19
+ get('/js') { render :erb, "<%= javascript_include_tag 'app.js' %>" }
20
+ get('/css') { render :erb, "<%= stylesheet_link_tag 'app.css' %>" }
21
+ get('/image') { render :erb, "<%= image_tag 'image.png' %>" }
22
+ end
23
+ end
24
+
25
+ it 'can use the default javascript_include_tag to resolve JS asset' do
26
+ get '/js'
27
+ assert_match '/assets/javascripts/app.js', last_response.body
28
+ end
29
+
30
+ it 'can use the default stylesheet_link_tag to resolve css asset' do
31
+ get '/css'
32
+ assert_match '/assets/stylesheets/app.css', last_response.body
33
+ end
34
+
35
+ it 'can use the default image_tag to resolve img asset' do
36
+ get '/image'
37
+ assert_match '/assets/images/image.png', last_response.body
38
+ end
39
+
40
+ end
41
+ end
42
+ end
43
+
44
+ describe Padrino::Pipeline::Sprockets do
45
+ before { @pipeline = Padrino::Pipeline::Sprockets }
46
+ it_behaves_like :pipeline
47
+ end
48
+
49
+ describe Padrino::Pipeline::AssetPack do
50
+ before { @pipeline = Padrino::Pipeline::AssetPack}
51
+ it_behaves_like :pipeline
52
+ end
@@ -0,0 +1,18 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/helpers/helper')
2
+
3
+ describe :configuration do
4
+ it 'can find the correct compiler' do
5
+ class SomeApp < Padrino::Application; end
6
+ config = Padrino::Pipeline::Configuration.new(SomeApp)
7
+
8
+ config.pipeline = Padrino::Pipeline::Sprockets.new(SomeApp, config)
9
+ assert_equal Padrino::Pipeline::Compiler::Sprockets, config.send(:match_compiler)
10
+
11
+ config.pipeline = Padrino::Pipeline::AssetPack.new(SomeApp, config)
12
+ assert_equal Padrino::Pipeline::Compiler::AssetPack, config.send(:match_compiler)
13
+
14
+ # config.pipeline = nil
15
+ # assert_equal nil, config.send(:match_compiler)
16
+ end
17
+
18
+ end
@@ -1,7 +1,7 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../extra/helper')
1
+ require File.expand_path(File.dirname(__FILE__) + '/helpers/helper')
2
2
 
3
- shared_examples_for 'A Pipeline' do
4
- describe 'compression' do
3
+ shared_examples_for :pipeline do
4
+ describe :asset_compression do
5
5
  let(:app) { rack_app }
6
6
  before do
7
7
  assets_location = "#{fixture_path('asset_pack_app')}/assets/"
@@ -31,10 +31,10 @@ end
31
31
 
32
32
  describe Padrino::Pipeline::Sprockets do
33
33
  before { @pipeline = Padrino::Pipeline::Sprockets }
34
- it_behaves_like 'A Pipeline'
34
+ it_behaves_like :pipeline
35
35
  end
36
36
 
37
37
  describe Padrino::Pipeline::AssetPack do
38
38
  before { @pipeline = Padrino::Pipeline::AssetPack}
39
- it_behaves_like 'A Pipeline'
39
+ it_behaves_like :pipeline
40
40
  end
@@ -1,6 +1,6 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../extra/helper')
1
+ require File.expand_path(File.dirname(__FILE__) + '/helpers/helper')
2
2
 
3
- shared_examples_for 'A Pipeline' do
3
+ shared_examples_for :pipeline do
4
4
  describe 'default options' do
5
5
  let(:app) { rack_app }
6
6
  before do
@@ -93,12 +93,12 @@ end
93
93
 
94
94
  describe Padrino::Pipeline::Sprockets do
95
95
  before { @pipeline = Padrino::Pipeline::Sprockets }
96
- it_behaves_like 'A Pipeline'
96
+ it_behaves_like :pipeline
97
97
  end
98
98
 
99
99
  describe Padrino::Pipeline::AssetPack do
100
100
  before { @pipeline = Padrino::Pipeline::AssetPack}
101
- it_behaves_like 'A Pipeline'
101
+ it_behaves_like :pipeline
102
102
  end
103
103
 
104
104
 
@@ -1,6 +1,6 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../extra/helper')
1
+ require File.expand_path(File.dirname(__FILE__) + '/helpers/helper')
2
2
 
3
- shared_examples_for 'A Pipeline' do
3
+ shared_examples_for :pipeline do
4
4
  describe 'default options' do
5
5
  let(:app) { rack_app }
6
6
  before do
@@ -102,12 +102,12 @@ end
102
102
 
103
103
  describe Padrino::Pipeline::Sprockets do
104
104
  before { @pipeline = Padrino::Pipeline::Sprockets }
105
- it_behaves_like 'A Pipeline'
105
+ it_behaves_like :pipeline
106
106
  end
107
107
 
108
108
  describe Padrino::Pipeline::AssetPack do
109
109
  before { @pipeline = Padrino::Pipeline::AssetPack}
110
- it_behaves_like 'A Pipeline'
110
+ it_behaves_like :pipeline
111
111
  end
112
112
 
113
113
 
@@ -1,6 +1,6 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../extra/helper')
1
+ require File.expand_path(File.dirname(__FILE__) + '/helpers/helper')
2
2
 
3
- shared_examples_for 'A Pipeline' do
3
+ shared_examples_for :pipeline do
4
4
  describe 'default options' do
5
5
  let(:app) { rack_app }
6
6
  before do
@@ -100,12 +100,12 @@ end
100
100
 
101
101
  describe Padrino::Pipeline::Sprockets do
102
102
  before { @pipeline = Padrino::Pipeline::Sprockets }
103
- it_behaves_like 'A Pipeline'
103
+ it_behaves_like :pipeline
104
104
  end
105
105
 
106
106
  describe Padrino::Pipeline::AssetPack do
107
107
  before { @pipeline = Padrino::Pipeline::AssetPack}
108
- it_behaves_like 'A Pipeline'
108
+ it_behaves_like :pipeline
109
109
  end
110
110
 
111
111
 
@@ -1,6 +1,6 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../extra/helper')
1
+ require File.expand_path(File.dirname(__FILE__) + '/helpers/helper')
2
2
 
3
- shared_examples_for 'A Pipeline' do
3
+ shared_examples_for :pipeline do
4
4
  describe 'non-default options' do
5
5
  let(:app) { rack_app }
6
6
  before do
@@ -38,10 +38,10 @@ end
38
38
 
39
39
  describe Padrino::Pipeline::Sprockets do
40
40
  before { @pipeline = Padrino::Pipeline::Sprockets }
41
- it_behaves_like 'A Pipeline'
41
+ it_behaves_like :pipeline
42
42
  end
43
43
 
44
44
  describe Padrino::Pipeline::AssetPack do
45
45
  before { @pipeline = Padrino::Pipeline::AssetPack}
46
- it_behaves_like 'A Pipeline'
46
+ it_behaves_like :pipeline
47
47
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: padrino-pipeline
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sumeet Singh
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-06-18 00:00:00.000000000 Z
11
+ date: 2013-08-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: padrino-core
@@ -100,28 +100,14 @@ dependencies:
100
100
  requirements:
101
101
  - - ~>
102
102
  - !ruby/object:Gem::Version
103
- version: 0.2.0
103
+ version: 0.3.0
104
104
  type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - ~>
109
109
  - !ruby/object:Gem::Version
110
- version: 0.2.0
111
- - !ruby/object:Gem::Dependency
112
- name: padrino-core
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - ~>
116
- - !ruby/object:Gem::Version
117
- version: 0.11.0
118
- type: :runtime
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - ~>
123
- - !ruby/object:Gem::Version
124
- version: 0.11.0
110
+ version: 0.3.0
125
111
  description: The Padrino asset management system allowing frictionless serving of
126
112
  assets
127
113
  email: ortuna@gmail.com
@@ -136,20 +122,16 @@ files:
136
122
  - README.md
137
123
  - Rakefile
138
124
  - lib/padrino-pipeline.rb
125
+ - lib/padrino-pipeline/compilers/asset_pack.rb
126
+ - lib/padrino-pipeline/compilers/sprockets.rb
139
127
  - lib/padrino-pipeline/configuration.rb
140
128
  - lib/padrino-pipeline/ext/padrino-helpers/asset_tag_helper.rb
141
129
  - lib/padrino-pipeline/pipelines/asset_pack.rb
142
130
  - lib/padrino-pipeline/pipelines/sprockets.rb
131
+ - lib/padrino-pipeline/tasks.rb
132
+ - lib/padrino-pipeline/tasks/pipeline_tasks.rb
143
133
  - lib/padrino-pipeline/version.rb
144
134
  - padrino-pipeline.gemspec
145
- - test/api/test_compression.rb
146
- - test/api/test_css.rb
147
- - test/api/test_images.rb
148
- - test/api/test_js.rb
149
- - test/api/test_other.rb
150
- - test/asset_pack/test_packages.rb
151
- - test/extra/helper.rb
152
- - test/extra/mini_shoulda.rb
153
135
  - test/fixtures/asset_pack_app/asset_pack_app.rb
154
136
  - test/fixtures/asset_pack_app/assets/css/meow.css
155
137
  - test/fixtures/asset_pack_app/assets/javascripts/app.js
@@ -160,6 +142,7 @@ files:
160
142
  - test/fixtures/asset_pack_app/assets/stylesheets/default.scss
161
143
  - test/fixtures/sprockets_app/assets/images/glass.png
162
144
  - test/fixtures/sprockets_app/assets/javascripts/app.js
145
+ - test/fixtures/sprockets_app/assets/javascripts/application.js
163
146
  - test/fixtures/sprockets_app/assets/javascripts/coffee.js.coffee
164
147
  - test/fixtures/sprockets_app/assets/javascripts/second_js_file.js
165
148
  - test/fixtures/sprockets_app/assets/javascripts/unrequired.js
@@ -168,8 +151,18 @@ files:
168
151
  - test/fixtures/sprockets_app/assets/stylesheets/sass.scss
169
152
  - test/fixtures/sprockets_app/assets/stylesheets/second_file.css
170
153
  - test/fixtures/sprockets_app/sprockets_app.rb
171
- - test/sprockets/test_asset_tag.rb
172
- - test/sprockets/test_js.rb
154
+ - test/helpers/helper.rb
155
+ - test/helpers/mini_shoulda.rb
156
+ - test/pipelines/asset_pack/test_packages.rb
157
+ - test/pipelines/sprockets/test_compiler.rb
158
+ - test/pipelines/sprockets/test_js.rb
159
+ - test/test_asset_tag.rb
160
+ - test/test_compiler.rb
161
+ - test/test_compression.rb
162
+ - test/test_css.rb
163
+ - test/test_images.rb
164
+ - test/test_js.rb
165
+ - test/test_other.rb
173
166
  homepage: http://www.padrinorb.com
174
167
  licenses: []
175
168
  metadata: {}
@@ -190,19 +183,11 @@ required_rubygems_version: !ruby/object:Gem::Requirement
190
183
  version: 1.3.6
191
184
  requirements: []
192
185
  rubyforge_project: padrino-pipeline
193
- rubygems_version: 2.0.2
186
+ rubygems_version: 2.0.3
194
187
  signing_key:
195
188
  specification_version: 4
196
189
  summary: The Padrino asset management system
197
190
  test_files:
198
- - test/api/test_compression.rb
199
- - test/api/test_css.rb
200
- - test/api/test_images.rb
201
- - test/api/test_js.rb
202
- - test/api/test_other.rb
203
- - test/asset_pack/test_packages.rb
204
- - test/extra/helper.rb
205
- - test/extra/mini_shoulda.rb
206
191
  - test/fixtures/asset_pack_app/asset_pack_app.rb
207
192
  - test/fixtures/asset_pack_app/assets/css/meow.css
208
193
  - test/fixtures/asset_pack_app/assets/javascripts/app.js
@@ -213,6 +198,7 @@ test_files:
213
198
  - test/fixtures/asset_pack_app/assets/stylesheets/default.scss
214
199
  - test/fixtures/sprockets_app/assets/images/glass.png
215
200
  - test/fixtures/sprockets_app/assets/javascripts/app.js
201
+ - test/fixtures/sprockets_app/assets/javascripts/application.js
216
202
  - test/fixtures/sprockets_app/assets/javascripts/coffee.js.coffee
217
203
  - test/fixtures/sprockets_app/assets/javascripts/second_js_file.js
218
204
  - test/fixtures/sprockets_app/assets/javascripts/unrequired.js
@@ -221,6 +207,15 @@ test_files:
221
207
  - test/fixtures/sprockets_app/assets/stylesheets/sass.scss
222
208
  - test/fixtures/sprockets_app/assets/stylesheets/second_file.css
223
209
  - test/fixtures/sprockets_app/sprockets_app.rb
224
- - test/sprockets/test_asset_tag.rb
225
- - test/sprockets/test_js.rb
226
- has_rdoc:
210
+ - test/helpers/helper.rb
211
+ - test/helpers/mini_shoulda.rb
212
+ - test/pipelines/asset_pack/test_packages.rb
213
+ - test/pipelines/sprockets/test_compiler.rb
214
+ - test/pipelines/sprockets/test_js.rb
215
+ - test/test_asset_tag.rb
216
+ - test/test_compiler.rb
217
+ - test/test_compression.rb
218
+ - test/test_css.rb
219
+ - test/test_images.rb
220
+ - test/test_js.rb
221
+ - test/test_other.rb
@@ -1,61 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../extra/helper')
2
- require File.expand_path(File.dirname(__FILE__) + '/../fixtures/asset_pack_app/asset_pack_app')
3
-
4
- describe 'AssetPack Packages' do
5
- let(:app) { rack_app }
6
-
7
- context 'for javascripts' do
8
- it 'can serve an asset pack' do
9
- mock_app do
10
- register Padrino::Pipeline
11
- configure_assets do |config|
12
- config.pipeline = Padrino::Pipeline::AssetPack
13
- config.packages << [:js, :application, '/assets/javascripts/application.js', ['/assets/javascripts/*.js']]
14
- end
15
- end
16
- get '/assets/javascripts/application.js'
17
- assert_equal 200, last_response.status
18
- end
19
-
20
- it 'can serve an asset pack from a non-standard location' do
21
- mock_app do
22
- register Padrino::Pipeline
23
- configure_assets do |config|
24
- config.pipeline = Padrino::Pipeline::AssetPack
25
- config.js_prefix = '/meow/javascripts'
26
- config.packages << [:js, :application, '/meow/javascripts/application.js', ['/assets/javascripts/*.js']]
27
- end
28
- end
29
- get '/meow/javascripts/application.js'
30
- assert_equal 200, last_response.status
31
- end
32
- end
33
-
34
- context 'for stylesheets' do
35
- it 'can serve an asset pack' do
36
- mock_app do
37
- register Padrino::Pipeline
38
- configure_assets do |config|
39
- config.pipeline = Padrino::Pipeline::AssetPack
40
- config.packages << [:css, :application, '/assets/stylesheets/application.css', ['/assets/stylesheets/*.css']]
41
- end
42
- end
43
- get '/assets/stylesheets/application.css'
44
- assert_equal 200, last_response.status
45
- end
46
-
47
- it 'can serve an asset pack from a non-standard location' do
48
- mock_app do
49
- register Padrino::Pipeline
50
- configure_assets do |config|
51
- config.pipeline = Padrino::Pipeline::AssetPack
52
- config.js_prefix = '/meow/stylesheets'
53
- config.packages << [:css, :application, '/meow/stylesheets/application.css', ['/assets/stylesheets/*.css']]
54
- end
55
- end
56
- get '/meow/stylesheets/application.css'
57
- assert_equal 200, last_response.status
58
- end
59
- end
60
-
61
- end
@@ -1,27 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../extra/helper')
2
-
3
- describe 'Asset tags' do
4
-
5
- context 'javascript_include_tag' do
6
- let(:app) { rack_app }
7
-
8
- it 'can use the default javascript_include_tag to resolve JS asset' do
9
- skip
10
- assets_location = "#{fixture_path('sprockets_app')}/assets/javascripts"
11
- mock_app do
12
- register Padrino::Pipeline
13
- register Padrino::Helpers
14
- configure_assets do |assets|
15
- assets.pipeline = Padrino::Pipeline::Sprockets
16
- assets.js_assets = [assets_location]
17
- end
18
- get('/') { render :erb, "<%= javascript_include_tag 'app.js' %>" }
19
- end
20
-
21
- get '/'
22
- assert_equal '/assets/javascripts/app.js', last_response.body
23
- end
24
-
25
- end
26
- end
27
-