webpack-pipeline 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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