webpack-pipeline 0.1.0 → 0.2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5c866dbf35df1484d39f0ad0ce93e38277e0ad0d
4
- data.tar.gz: fb0f61d4f433690aa0304ae0e906ec24eb73d30b
3
+ metadata.gz: 02cd068ca244225d94f556f2440b0bdc6b6a0b17
4
+ data.tar.gz: ff97bccebe85372dffe4c3106a460f0c345e4e64
5
5
  SHA512:
6
- metadata.gz: 9496b1b2a8418de5ae97ae3905a21175a65f4074bdea740dda50fdc28fb6d1e4d14c77250c01a40349ff0c9a735d86cc02d7e4f74749ddcd06e4f5839bb8f950
7
- data.tar.gz: 873b1ee21b01f710fe376070ee2d9bd794831cb4d34ab7351566268f7d37342c38427812d79cce56cd3bc5dd014763c680c22e889abf44469371741a5257bde4
6
+ metadata.gz: 443912af6b76161bbc6952109dad10168835fc7d01d90e1aea955bfb21ffa5cd5cc4b291ea5fd9f178a334075e4793f5314eb8d234d572c68eceade5437bbde6
7
+ data.tar.gz: dfd6bc6d9a551a5cb5ef302f2881e08cfea9781345f2c8a7869e515d357bc07a98d343088afa84a4e16cd0068017eeba3e1ef8c25c9b07abfec464d7be3c65de
data/Gemfile CHANGED
@@ -2,11 +2,14 @@ source "http://rubygems.org"
2
2
  # Add dependencies required to use your gem here.
3
3
  # Example:
4
4
  gem 'activesupport', '>= 2.3.5'
5
+ gem 'actionview'
6
+ gem 'railties'
5
7
 
6
8
  # Add dependencies to develop your gem here.
7
9
  # Include everything needed to run rake, tests, features, etc.
8
10
  group :development do
9
- gem "rspec", "~> 2.8.0"
11
+ gem 'pry'
12
+ gem 'rspec', '~> 3.0'
10
13
  gem "rdoc", "~> 3.12"
11
14
  gem "bundler", "~> 1.0"
12
15
  gem "jeweler", "~> 2.0.1"
data/Gemfile.lock CHANGED
@@ -1,6 +1,19 @@
1
1
  GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
+ actionpack (4.2.1)
5
+ actionview (= 4.2.1)
6
+ activesupport (= 4.2.1)
7
+ rack (~> 1.6)
8
+ rack-test (~> 0.6.2)
9
+ rails-dom-testing (~> 1.0, >= 1.0.5)
10
+ rails-html-sanitizer (~> 1.0, >= 1.0.1)
11
+ actionview (4.2.1)
12
+ activesupport (= 4.2.1)
13
+ builder (~> 3.1)
14
+ erubis (~> 2.7.0)
15
+ rails-dom-testing (~> 1.0, >= 1.0.5)
16
+ rails-html-sanitizer (~> 1.0, >= 1.0.1)
4
17
  activesupport (4.2.1)
5
18
  i18n (~> 0.7)
6
19
  json (~> 1.7, >= 1.7.7)
@@ -9,10 +22,12 @@ GEM
9
22
  tzinfo (~> 1.1)
10
23
  addressable (2.3.8)
11
24
  builder (3.2.2)
25
+ coderay (1.1.0)
12
26
  descendants_tracker (0.0.4)
13
27
  thread_safe (~> 0.3, >= 0.3.1)
14
- diff-lcs (1.1.3)
28
+ diff-lcs (1.2.5)
15
29
  docile (1.1.5)
30
+ erubis (2.7.0)
16
31
  faraday (0.9.1)
17
32
  multipart-post (>= 1.2, < 3)
18
33
  git (1.2.9.1)
@@ -38,6 +53,9 @@ GEM
38
53
  rdoc
39
54
  json (1.8.2)
40
55
  jwt (1.4.1)
56
+ loofah (2.0.2)
57
+ nokogiri (>= 1.5.9)
58
+ method_source (0.8.2)
41
59
  mini_portile (0.6.2)
42
60
  minitest (5.6.1)
43
61
  multi_json (1.11.0)
@@ -51,20 +69,44 @@ GEM
51
69
  multi_json (~> 1.3)
52
70
  multi_xml (~> 0.5)
53
71
  rack (~> 1.2)
72
+ pry (0.10.1)
73
+ coderay (~> 1.1.0)
74
+ method_source (~> 0.8.1)
75
+ slop (~> 3.4)
54
76
  rack (1.6.1)
77
+ rack-test (0.6.3)
78
+ rack (>= 1.0)
79
+ rails-deprecated_sanitizer (1.0.3)
80
+ activesupport (>= 4.2.0.alpha)
81
+ rails-dom-testing (1.0.6)
82
+ activesupport (>= 4.2.0.beta, < 5.0)
83
+ nokogiri (~> 1.6.0)
84
+ rails-deprecated_sanitizer (>= 1.0.1)
85
+ rails-html-sanitizer (1.0.2)
86
+ loofah (~> 2.0)
87
+ railties (4.2.1)
88
+ actionpack (= 4.2.1)
89
+ activesupport (= 4.2.1)
90
+ rake (>= 0.8.7)
91
+ thor (>= 0.18.1, < 2.0)
55
92
  rake (10.4.2)
56
93
  rdoc (3.12.2)
57
94
  json (~> 1.4)
58
95
  roodi (2.1.0)
59
96
  ruby_parser
60
- rspec (2.8.0)
61
- rspec-core (~> 2.8.0)
62
- rspec-expectations (~> 2.8.0)
63
- rspec-mocks (~> 2.8.0)
64
- rspec-core (2.8.0)
65
- rspec-expectations (2.8.0)
66
- diff-lcs (~> 1.1.2)
67
- rspec-mocks (2.8.0)
97
+ rspec (3.2.0)
98
+ rspec-core (~> 3.2.0)
99
+ rspec-expectations (~> 3.2.0)
100
+ rspec-mocks (~> 3.2.0)
101
+ rspec-core (3.2.3)
102
+ rspec-support (~> 3.2.0)
103
+ rspec-expectations (3.2.1)
104
+ diff-lcs (>= 1.2.0, < 2.0)
105
+ rspec-support (~> 3.2.0)
106
+ rspec-mocks (3.2.1)
107
+ diff-lcs (>= 1.2.0, < 2.0)
108
+ rspec-support (~> 3.2.0)
109
+ rspec-support (3.2.2)
68
110
  ruby_parser (3.6.6)
69
111
  sexp_processor (~> 4.1)
70
112
  sexp_processor (4.5.1)
@@ -73,6 +115,8 @@ GEM
73
115
  json (~> 1.8)
74
116
  simplecov-html (~> 0.10.0)
75
117
  simplecov-html (0.10.0)
118
+ slop (3.6.0)
119
+ thor (0.19.1)
76
120
  thread_safe (0.3.5)
77
121
  tzinfo (1.2.2)
78
122
  thread_safe (~> 0.1)
@@ -81,10 +125,13 @@ PLATFORMS
81
125
  ruby
82
126
 
83
127
  DEPENDENCIES
128
+ actionview
84
129
  activesupport (>= 2.3.5)
85
130
  bundler (~> 1.0)
86
131
  jeweler (~> 2.0.1)
132
+ pry
133
+ railties
87
134
  rdoc (~> 3.12)
88
135
  roodi (~> 2.1.0)
89
- rspec (~> 2.8.0)
136
+ rspec (~> 3.0)
90
137
  simplecov
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.2.0
@@ -0,0 +1,15 @@
1
+ module Webpack
2
+ module AssetUrlHelper
3
+ extend ActiveSupport::Concern
4
+
5
+ included do
6
+ def compute_asset_path(source, options = {})
7
+ webpack.asset_url(source) || super(source, options)
8
+ end
9
+
10
+ def webpack
11
+ @webpack ||= Manifest.instance
12
+ end
13
+ end
14
+ end
15
+ end
@@ -3,7 +3,7 @@ module Webpack
3
3
  include ActiveSupport::Configurable
4
4
 
5
5
  config_accessor(:path) {
6
- Rails.root.join('public', 'assets', 'manifest.json')
6
+ File.join('public', 'assets', 'manifest.json')
7
7
  }
8
8
  end
9
9
  end
@@ -8,29 +8,19 @@ module Webpack
8
8
  @configuration ||= Configuration.new
9
9
  end
10
10
 
11
- class << self
12
- def configure
13
- yield configuration
14
- end
11
+ def self.configure
12
+ yield configuration
15
13
  end
16
14
 
17
- def javascripts
18
- @javascript = find_asset { |file_name| file_name.ends_with? 'js' }
19
- end
15
+ def asset_url(filename)
16
+ name = filename.split('.').first
17
+ ext = filename.split('.').last
18
+ chunk = [*data['assetsByChunkName'][name]]
20
19
 
21
- def stylesheets
22
- @stylesheets = find_asset { |file_name| file_name.ends_with? 'css' }
23
- end
24
-
25
- def find_asset(&block)
26
- chunks.inject({}) do |hash, chunk|
27
- filenames = [*data['assetsByChunkName'][chunk]]
28
- if finded = filenames.find(&block)
29
- hash.merge chunk => "#{host}#{finded}".strip
30
- else
31
- hash
32
- end
33
- end
20
+ asset_name = chunk.find { |asset|
21
+ asset.end_with? ext
22
+ }
23
+ "#{host}#{asset_name}" if asset_name
34
24
  end
35
25
 
36
26
  def host
@@ -2,9 +2,8 @@ module Webpack
2
2
  class Railtie < Rails::Railtie
3
3
  initializer 'load manifest class' do
4
4
  ActiveSupport.on_load :action_view do
5
- require 'webpack/view_helper'
6
- require 'pry'
7
- include ViewHelper
5
+ require 'webpack/asset_url_helper'
6
+ include AssetUrlHelper
8
7
  end
9
8
  end
10
9
  end
@@ -0,0 +1,37 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
+ require 'pry'
3
+
4
+ describe ActionView::Helpers::AssetUrlHelper do
5
+ describe 'asset_path' do
6
+ context 'when chunk present' do
7
+ let(:asset_helper) { helper.path_to_asset :test, { type: :javascript } }
8
+
9
+ it 'should not raise error' do
10
+ expect { asset_helper }.not_to raise_error
11
+ end
12
+ it 'it find js asset be chunk name' do
13
+ expect(asset_helper).to include('ea0d453146be2145f180.application.js')
14
+ end
15
+
16
+ it 'it find css asset be chunk name' do
17
+ expect(helper.path_to_asset :test, { type: :stylesheet }).to include('ea0d453146be2145f180.application.css')
18
+ end
19
+
20
+ it 'add path from publicPath manifest attribute' do
21
+ expect(asset_helper).to be_start_with('/assets/')
22
+ end
23
+ end
24
+
25
+ context 'when chunk not found in webpack manifest' do
26
+ it 'set extension by type arg' do
27
+ result = helper.path_to_asset(:not_in_manifest, type: :javascript)
28
+ expect(result).to be_end_with('.js')
29
+ end
30
+ it 'keep untouched absolute URLs' do
31
+ link = 'http://assets2.example.com/assets/application.css'
32
+ result = helper.path_to_asset(link)
33
+ expect(result).to eq(link)
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,10 @@
1
+ {
2
+ "publicPath": "/assets/",
3
+ "assetsByChunkName": {
4
+ "test": [
5
+ "ea0d453146be2145f180.application.js",
6
+ "ea0d453146be2145f180.application.css"
7
+ ]
8
+ },
9
+ "assets": {}
10
+ }
data/spec/manifest.rb ADDED
@@ -0,0 +1,13 @@
1
+ require File.expand_path(File.dirname(__FILE__) + 'spec_helper')
2
+
3
+ describe Webpack::Manifes do
4
+ subject { Webpack::Manifes.instanse }
5
+
6
+ describe 'config manifest path' do
7
+ it 'default to public/assets/manifest.json'
8
+ it 'changing by configuration'
9
+ end
10
+ it 'asset_url return nil if asset not found'
11
+ it 'take host from publicPath attribute'
12
+ it 'find asset by filename with extension'
13
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,3 +1,8 @@
1
+ ENV["RAILS_ENV"] = 'development'
2
+
3
+ require 'action_view'
4
+ require 'rails'
5
+
1
6
  require 'simplecov'
2
7
 
3
8
  module SimpleCov::Configuration
@@ -18,12 +23,18 @@ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
18
23
  $LOAD_PATH.unshift(File.dirname(__FILE__))
19
24
 
20
25
  require 'rspec'
21
- require 'webpack-rails'
26
+ require 'webpack-pipeline'
27
+ require 'webpack/manifest'
28
+ require 'webpack/asset_url_helper'
22
29
 
23
30
  # Requires supporting files with custom matchers and macros, etc,
24
31
  # in ./support/ and its subdirectories.
25
32
  Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
26
33
 
27
- RSpec.configure do |config|
28
-
34
+ RSpec.configure do |rspec|
35
+ rspec.before :suite do
36
+ Webpack::Manifest.configure do |config|
37
+ config.path = File.join('spec', 'fixtures', 'manifest.json')
38
+ end
39
+ end
29
40
  end
@@ -0,0 +1,9 @@
1
+ def helper
2
+ Helper.instance
3
+ end
4
+
5
+ class Helper
6
+ include Singleton
7
+ include ActionView::Helpers::AssetUrlHelper
8
+ include Webpack::AssetUrlHelper
9
+ end
@@ -0,0 +1,86 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+ # stub: webpack-pipeline 0.2.0 ruby lib
6
+
7
+ Gem::Specification.new do |s|
8
+ s.name = "webpack-pipeline"
9
+ s.version = "0.2.0"
10
+
11
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
+ s.require_paths = ["lib"]
13
+ s.authors = ["Stanislav German"]
14
+ s.date = "2015-05-13"
15
+ s.description = "it adds wiew helpers to integrate webpack with rails"
16
+ s.email = "s.german@rambler-co.ru"
17
+ s.extra_rdoc_files = [
18
+ "LICENSE.txt",
19
+ "README.rdoc"
20
+ ]
21
+ s.files = [
22
+ ".document",
23
+ ".rspec",
24
+ "Gemfile",
25
+ "Gemfile.lock",
26
+ "LICENSE.txt",
27
+ "README.rdoc",
28
+ "Rakefile",
29
+ "VERSION",
30
+ "lib/webpack-pipeline.rb",
31
+ "lib/webpack/asset_url_helper.rb",
32
+ "lib/webpack/configuration.rb",
33
+ "lib/webpack/manifest.rb",
34
+ "spec/asset_url_helper_spec.rb",
35
+ "spec/fixtures/manifest.json",
36
+ "spec/manifest.rb",
37
+ "spec/spec_helper.rb",
38
+ "spec/support/helpers.rb",
39
+ "webpack-pipeline.gemspec",
40
+ "webpack-rails.gemspec"
41
+ ]
42
+ s.homepage = "https://github.com/rambler-digital-solutions/webpack-rails"
43
+ s.licenses = ["MIT"]
44
+ s.rubygems_version = "2.4.6"
45
+ s.summary = "Webpack to Rails integration"
46
+
47
+ if s.respond_to? :specification_version then
48
+ s.specification_version = 4
49
+
50
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
51
+ s.add_runtime_dependency(%q<activesupport>, [">= 2.3.5"])
52
+ s.add_runtime_dependency(%q<actionview>, [">= 0"])
53
+ s.add_runtime_dependency(%q<railties>, [">= 0"])
54
+ s.add_development_dependency(%q<pry>, [">= 0"])
55
+ s.add_development_dependency(%q<rspec>, ["~> 3.0"])
56
+ s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
57
+ s.add_development_dependency(%q<bundler>, ["~> 1.0"])
58
+ s.add_development_dependency(%q<jeweler>, ["~> 2.0.1"])
59
+ s.add_development_dependency(%q<simplecov>, [">= 0"])
60
+ s.add_development_dependency(%q<roodi>, ["~> 2.1.0"])
61
+ else
62
+ s.add_dependency(%q<activesupport>, [">= 2.3.5"])
63
+ s.add_dependency(%q<actionview>, [">= 0"])
64
+ s.add_dependency(%q<railties>, [">= 0"])
65
+ s.add_dependency(%q<pry>, [">= 0"])
66
+ s.add_dependency(%q<rspec>, ["~> 3.0"])
67
+ s.add_dependency(%q<rdoc>, ["~> 3.12"])
68
+ s.add_dependency(%q<bundler>, ["~> 1.0"])
69
+ s.add_dependency(%q<jeweler>, ["~> 2.0.1"])
70
+ s.add_dependency(%q<simplecov>, [">= 0"])
71
+ s.add_dependency(%q<roodi>, ["~> 2.1.0"])
72
+ end
73
+ else
74
+ s.add_dependency(%q<activesupport>, [">= 2.3.5"])
75
+ s.add_dependency(%q<actionview>, [">= 0"])
76
+ s.add_dependency(%q<railties>, [">= 0"])
77
+ s.add_dependency(%q<pry>, [">= 0"])
78
+ s.add_dependency(%q<rspec>, ["~> 3.0"])
79
+ s.add_dependency(%q<rdoc>, ["~> 3.12"])
80
+ s.add_dependency(%q<bundler>, ["~> 1.0"])
81
+ s.add_dependency(%q<jeweler>, ["~> 2.0.1"])
82
+ s.add_dependency(%q<simplecov>, [">= 0"])
83
+ s.add_dependency(%q<roodi>, ["~> 2.1.0"])
84
+ end
85
+ end
86
+
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: webpack-pipeline
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stanislav German
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-12 00:00:00.000000000 Z
11
+ date: 2015-05-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -24,20 +24,62 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: 2.3.5
27
+ - !ruby/object:Gem::Dependency
28
+ name: actionview
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: railties
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: pry
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
27
69
  - !ruby/object:Gem::Dependency
28
70
  name: rspec
29
71
  requirement: !ruby/object:Gem::Requirement
30
72
  requirements:
31
73
  - - "~>"
32
74
  - !ruby/object:Gem::Version
33
- version: 2.8.0
75
+ version: '3.0'
34
76
  type: :development
35
77
  prerelease: false
36
78
  version_requirements: !ruby/object:Gem::Requirement
37
79
  requirements:
38
80
  - - "~>"
39
81
  - !ruby/object:Gem::Version
40
- version: 2.8.0
82
+ version: '3.0'
41
83
  - !ruby/object:Gem::Dependency
42
84
  name: rdoc
43
85
  requirement: !ruby/object:Gem::Requirement
@@ -124,13 +166,16 @@ files:
124
166
  - README.rdoc
125
167
  - Rakefile
126
168
  - VERSION
127
- - lib/webpack-rails.rb
169
+ - lib/webpack-pipeline.rb
170
+ - lib/webpack/asset_url_helper.rb
128
171
  - lib/webpack/configuration.rb
129
172
  - lib/webpack/manifest.rb
130
- - lib/webpack/railtie.rb
131
- - lib/webpack/view_helper.rb
173
+ - spec/asset_url_helper_spec.rb
174
+ - spec/fixtures/manifest.json
175
+ - spec/manifest.rb
132
176
  - spec/spec_helper.rb
133
- - spec/webpack-rails_spec.rb
177
+ - spec/support/helpers.rb
178
+ - webpack-pipeline.gemspec
134
179
  - webpack-rails.gemspec
135
180
  homepage: https://github.com/rambler-digital-solutions/webpack-rails
136
181
  licenses:
@@ -1,23 +0,0 @@
1
- require 'webpack/manifest'
2
-
3
- module Webpack
4
- module ViewHelper
5
- def webpack_javascript_tag(chunk)
6
- path = webpack.javascripts[chunk.to_s]
7
- fail ArgumentError, "cant find chunk #{chunk}" unless path
8
- javascript_include_tag path
9
- end
10
-
11
- def webpack_stylesheet_tag(chunk = nil)
12
- path = webpack.stylesheets[chunk.to_s]
13
- fail ArgumentError, "cant find chunk #{chunk}" unless path
14
- stylesheet_link_tag path
15
- end
16
-
17
- protected
18
-
19
- def webpack
20
- @webpack ||= Manifest.instance
21
- end
22
- end
23
- end
data/lib/webpack-rails.rb DELETED
@@ -1,5 +0,0 @@
1
- require 'webpack/railtie'
2
-
3
- module Webpack
4
- include ActiveSupport::Concern
5
- end
@@ -1,7 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
-
3
- describe "WebpackRails" do
4
- it "fails" do
5
- fail "hey buddy, you should probably rename this file and start specing for real"
6
- end
7
- end