react-rails 1.8.2 → 1.9.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 +4 -4
- data/CHANGELOG.md +23 -0
- data/lib/react/jsx.rb +1 -0
- data/lib/react/jsx/sprockets_strategy.rb +53 -0
- data/lib/react/rails/railtie.rb +7 -13
- data/lib/react/rails/version.rb +1 -1
- data/lib/react/server_rendering/sprockets_renderer.rb +1 -0
- data/lib/react/server_rendering/yaml_manifest_container.rb +2 -2
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 908ecff764f2cb0ca4c4f3bfd190473b2aa25843
|
4
|
+
data.tar.gz: 6b3262ab4494e36f51185c6dbbfa23c6dfc5e936
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2884a67467eb7f64fb7e7cd3875d63cfe26398d1c0fac87391f726ba4bbd6a6a3498d550fbb465f49359537df5ace2ccc53acb07dca00da2eb468e3a2966e983
|
7
|
+
data.tar.gz: 5abf1e17ce029213a45697e5a7d7a51f16d3db7ced7971acc82e7ac5aa138e33d2e37b3d738542463d9c99d799aa7b98992d91db7123f20cc670b55e90b8dcb5
|
data/CHANGELOG.md
CHANGED
@@ -8,6 +8,29 @@
|
|
8
8
|
|
9
9
|
#### Bug Fixes
|
10
10
|
|
11
|
+
## 1.9.0 (October 6, 2016)
|
12
|
+
|
13
|
+
#### Breaking Changes
|
14
|
+
|
15
|
+
#### New Features
|
16
|
+
|
17
|
+
- Accept extra JS code in `code:` option for SprocketsRenderer #604
|
18
|
+
|
19
|
+
#### Bug Fixes
|
20
|
+
|
21
|
+
- Use `asset_prefix` for YamlContainer #598
|
22
|
+
- Fix requiring `.js` from `.es6.jsx` #591
|
23
|
+
|
24
|
+
## 1.8.2 (August 9, 2016)
|
25
|
+
|
26
|
+
#### New Features
|
27
|
+
|
28
|
+
- Update to React 15.3.0 #583
|
29
|
+
|
30
|
+
#### Bug Fixes
|
31
|
+
|
32
|
+
- Fix `//= require` on Sprockets 3.7+ #582
|
33
|
+
|
11
34
|
## 1.8.1 (July 29, 2016)
|
12
35
|
|
13
36
|
#### New Features
|
data/lib/react/jsx.rb
CHANGED
@@ -0,0 +1,53 @@
|
|
1
|
+
module React
|
2
|
+
module JSX
|
3
|
+
# Depending on the Sprockets version,
|
4
|
+
# attach JSX transformation the the Sprockets environment.
|
5
|
+
#
|
6
|
+
# You can override it with `config.sprockets_strategy`
|
7
|
+
# @example Specifying a Sprockets strategy
|
8
|
+
# app.config.react.sprockets_strategy = :register_engine
|
9
|
+
#
|
10
|
+
# @example Opting out of any Sprockets strategy
|
11
|
+
# app.config.react.sprockets_strategy = false
|
12
|
+
#
|
13
|
+
module SprocketsStrategy
|
14
|
+
module_function
|
15
|
+
|
16
|
+
# @param [Sprockets::Environment] the environment to attach JSX to
|
17
|
+
# @param [Symbol, Nil] A strategy name, or `nil` to detect a strategy
|
18
|
+
def attach_with_strategy(sprockets_env, strategy_or_nil)
|
19
|
+
strategy = strategy_or_nil || detect_strategy
|
20
|
+
self.public_send(strategy, sprockets_env)
|
21
|
+
end
|
22
|
+
|
23
|
+
# @return [Symbol] based on the environment, return a method name to call with the sprockets environment
|
24
|
+
def detect_strategy
|
25
|
+
sprockets_version = Gem::Version.new(Sprockets::VERSION)
|
26
|
+
if sprockets_version >= Gem::Version.new("4.x")
|
27
|
+
:register_processors
|
28
|
+
elsif sprockets_version >= Gem::Version.new("3.0.0")
|
29
|
+
:register_engine_with_mime_type
|
30
|
+
else
|
31
|
+
:register_engine
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def register_engine(sprockets_env)
|
36
|
+
sprockets_env.register_engine(".jsx", React::JSX::Template)
|
37
|
+
end
|
38
|
+
|
39
|
+
def register_engine_with_mime_type(sprockets_env)
|
40
|
+
sprockets_env.register_engine(".jsx", React::JSX::Processor, mime_type: "application/javascript", silence_deprecation: true)
|
41
|
+
end
|
42
|
+
|
43
|
+
def register_processors(sprockets_env)
|
44
|
+
sprockets_env.register_mime_type("application/jsx", extensions: [".jsx", ".js.jsx", ".es.jsx", ".es6.jsx"])
|
45
|
+
sprockets_env.register_mime_type("application/jsx+coffee", extensions: [".jsx.coffee", ".js.jsx.coffee"])
|
46
|
+
sprockets_env.register_transformer("application/jsx", "application/javascript", React::JSX::Processor)
|
47
|
+
sprockets_env.register_transformer("application/jsx+coffee", "application/jsx", Sprockets::CoffeeScriptProcessor)
|
48
|
+
sprockets_env.register_preprocessor("application/jsx", Sprockets::DirectiveProcessor.new(comments: ["//", ["/*", "*/"]]))
|
49
|
+
sprockets_env.register_preprocessor("application/jsx+coffee", Sprockets::DirectiveProcessor.new(comments: ["#", ["###", "###"]]))
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
data/lib/react/rails/railtie.rb
CHANGED
@@ -10,6 +10,7 @@ module React
|
|
10
10
|
config.react.jsx_transform_options = {}
|
11
11
|
config.react.jsx_transformer_class = nil # defaults to BabelTransformer
|
12
12
|
config.react.camelize_props = false # pass in an underscored hash but get a camelized hash
|
13
|
+
config.react.sprockets_strategy = nil # how to attach JSX to the asset pipeline (or `false` for none)
|
13
14
|
|
14
15
|
# Server rendering:
|
15
16
|
config.react.server_renderer_pool_size = 1 # increase if you're on JRuby
|
@@ -100,19 +101,12 @@ module React
|
|
100
101
|
# Sprockets 3.x expects this in a different place
|
101
102
|
sprockets_env = app.assets || defined?(Sprockets) && Sprockets
|
102
103
|
|
103
|
-
if
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
sprockets_env.register_preprocessor("application/jsx", Sprockets::DirectiveProcessor.new(comments: ["//", ["/*", "*/"]]))
|
110
|
-
sprockets_env.register_preprocessor("application/jsx+coffee", Sprockets::DirectiveProcessor.new(comments: ["#", ["###", "###"]]))
|
111
|
-
elsif Gem::Version.new(Sprockets::VERSION) >= Gem::Version.new("3.0.0")
|
112
|
-
sprockets_env.register_engine(".jsx", React::JSX::Processor, mime_type: "application/javascript")
|
113
|
-
else
|
114
|
-
sprockets_env.register_engine(".jsx", React::JSX::Template)
|
115
|
-
end
|
104
|
+
if app.config.react.sprockets_strategy == false
|
105
|
+
# pass, Sprockets opt-out
|
106
|
+
elsif sprockets_env.present?
|
107
|
+
React::JSX::SprocketsStrategy.attach_with_strategy(sprockets_env, app.config.react.sprockets_strategy)
|
108
|
+
else
|
109
|
+
# pass, Sprockets is not preset
|
116
110
|
end
|
117
111
|
end
|
118
112
|
end
|
data/lib/react/rails/version.rb
CHANGED
@@ -17,6 +17,7 @@ module React
|
|
17
17
|
@replay_console = options.fetch(:replay_console, true)
|
18
18
|
filenames = options.fetch(:files, ["react-server.js", "components.js"])
|
19
19
|
js_code = CONSOLE_POLYFILL.dup
|
20
|
+
js_code << options.fetch(:code, '')
|
20
21
|
|
21
22
|
filenames.each do |filename|
|
22
23
|
js_code << asset_container.find_asset(filename)
|
@@ -6,12 +6,12 @@ module React
|
|
6
6
|
# but sometimes, they're compiled to other directories (or other servers)
|
7
7
|
class YamlManifestContainer
|
8
8
|
def initialize
|
9
|
-
@assets = YAML.load_file(::Rails.root.join("public
|
9
|
+
@assets = YAML.load_file(::Rails.root.join("public", ::Rails.application.config.assets.prefix, "manifest.yml"))
|
10
10
|
end
|
11
11
|
|
12
12
|
def find_asset(logical_path)
|
13
13
|
asset_path = @assets[logical_path] || raise("No compiled asset for #{logical_path}, was it precompiled?")
|
14
|
-
asset_full_path = ::Rails.root.join("public",
|
14
|
+
asset_full_path = ::Rails.root.join("public", ::Rails.application.config.assets.prefix, asset_path)
|
15
15
|
File.read(asset_full_path)
|
16
16
|
end
|
17
17
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: react-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Paul O’Shannessy
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-10-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: appraisal
|
@@ -315,6 +315,7 @@ files:
|
|
315
315
|
- lib/react/jsx/babel_transformer.rb
|
316
316
|
- lib/react/jsx/jsx_transformer.rb
|
317
317
|
- lib/react/jsx/processor.rb
|
318
|
+
- lib/react/jsx/sprockets_strategy.rb
|
318
319
|
- lib/react/jsx/template.rb
|
319
320
|
- lib/react/rails.rb
|
320
321
|
- lib/react/rails/asset_variant.rb
|