react_on_rails 0.1.0 → 0.1.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.
- checksums.yaml +4 -4
- data/.gitignore +2 -1
- data/README.md +23 -6
- data/app/helpers/react_on_rails_helper.rb +2 -4
- data/lib/react_on_rails.rb +3 -0
- data/lib/react_on_rails/configuration.rb +21 -0
- data/lib/react_on_rails/react_renderer.rb +2 -4
- data/lib/react_on_rails/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c32d5d1549cefdb05c11593b8fc46357c3a2b51a
|
4
|
+
data.tar.gz: c9a61af04d0b81767c48e155a6cd8af8e9081cc4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ebc8347894681090d81c8e1580aebadaf36fc0465ac9635e054362584c737d22d8d659ec4bd8412bd914cd7adb5b1a3a8cdf880fa5ea6db8ff3a3550d39a21a2
|
7
|
+
data.tar.gz: ff1e4ab63b241615882224a88666f8c2dc04ea29133881649ba31f539e816a638851924b85c45003e2dfdfd73506336e428f1cdbfbcc36daff7905a7b3286bbf
|
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -1,7 +1,11 @@
|
|
1
|
-
#
|
1
|
+
# React On Rails
|
2
2
|
|
3
3
|
Published: https://rubygems.org/gems/react_on_rails
|
4
4
|
|
5
|
+
See [Action Plan for v1.0](https://github.com/shakacode/react_on_rails/issues/1)
|
6
|
+
|
7
|
+
Feedback and pull-requests encouraged! Thanks in advance!
|
8
|
+
|
5
9
|
Supports:
|
6
10
|
|
7
11
|
1. Rails
|
@@ -10,6 +14,7 @@ Supports:
|
|
10
14
|
4. Redux
|
11
15
|
5. Turbolinks
|
12
16
|
6. Server side rendering with fragment caching
|
17
|
+
7. react-router for client side rendering (and maybe server side eventually)
|
13
18
|
|
14
19
|
# Authors
|
15
20
|
The Shaka Code team!
|
@@ -21,7 +26,7 @@ The Shaka Code team!
|
|
21
26
|
And based on the work of the [react-rails gem](https://github.com/reactjs/react-rails)
|
22
27
|
|
23
28
|
# Key Info
|
24
|
-
Currently in
|
29
|
+
Currently being implemented in 3 production projects (not yet live).
|
25
30
|
|
26
31
|
1. https://github.com/justin808/react-webpack-rails-tutorial/
|
27
32
|
2. http://www.railsonmaui.com/blog/2014/10/03/integrating-webpack-and-the-es6-transpiler-into-an-existing-rails-project/
|
@@ -56,13 +61,25 @@ Contributions and pull requests welcome!
|
|
56
61
|
|
57
62
|
# Key Tips
|
58
63
|
1. See sample app in `spec/dummy` for how to set this up.
|
59
|
-
2. The file used for server rendering is hard coded as generated/server.js
|
60
|
-
(assets/javascripts/generated/server.js)
|
61
|
-
3.
|
62
|
-
|
64
|
+
2. The file used for server rendering is hard coded as `generated/server.js`
|
65
|
+
(assets/javascripts/generated/server.js).
|
66
|
+
3. If you're only doing client rendering, you still *MUST* create an empty version of this file. This
|
67
|
+
will soon change so that this is not necessary.
|
68
|
+
3. The default for rendering right now is `prerender: false`. **NOTE:** Server side rendering does
|
69
|
+
not work for some components, namely react-router, that use an async setup for server rendering.
|
70
|
+
You can configure the default for prerender in your config.
|
63
71
|
4. The API for objects exposed differs from the react-rails gem in that you expose a function that
|
64
72
|
returns a react component. We'll be changing that to take either a function or a React component.
|
65
73
|
|
74
|
+
# Example Configuration, config/react_on_rails.rb
|
75
|
+
```ruby
|
76
|
+
ReactOnRails.configure do |config|
|
77
|
+
config.bundle_js_file = "app/assets/javascripts/generated/server.js" # This is the default
|
78
|
+
config.prerender = true # default is false
|
79
|
+
end
|
80
|
+
```
|
81
|
+
|
82
|
+
|
66
83
|
## References
|
67
84
|
* [Making the helper for server side rendering work with JS created by Webpack] (https://github.com/reactjs/react-rails/issues/301#issuecomment-133098974)
|
68
85
|
* [Add Demonstration of Server Side Rendering](https://github.com/justin808/react-webpack-rails-tutorial/issues/2)
|
@@ -25,9 +25,8 @@ module ReactOnRailsHelper
|
|
25
25
|
# (re-hydrate the data). This enables react rendered on the client to see that the
|
26
26
|
# server has already rendered the HTML.
|
27
27
|
@react_component_index ||= 0
|
28
|
-
|
29
|
-
|
30
|
-
trace = options[:trace].nil? ? false : options[:trace]
|
28
|
+
prerender = options.fetch(:prerender) { ReactOnRails.configuration.prerender }
|
29
|
+
trace = options.fetch(:trace, false)
|
31
30
|
|
32
31
|
dataVariable = "__#{component_name.camelize(:lower)}Data#{@react_component_index}__"
|
33
32
|
reactComponent = component_name.camelize
|
@@ -49,7 +48,6 @@ module ReactOnRailsHelper
|
|
49
48
|
|
50
49
|
# Create the HTML rendering part
|
51
50
|
if prerender
|
52
|
-
|
53
51
|
render_js_expression = <<-JS
|
54
52
|
renderReactComponent(this.#{reactComponent}, #{props.to_json})
|
55
53
|
JS
|
data/lib/react_on_rails.rb
CHANGED
@@ -0,0 +1,21 @@
|
|
1
|
+
module ReactOnRails
|
2
|
+
def self.configure
|
3
|
+
yield(configuration)
|
4
|
+
end
|
5
|
+
|
6
|
+
def self.configuration
|
7
|
+
@configuration ||= Configuration.new(
|
8
|
+
bundle_js_file: "app/assets/javascripts/generated/server.js",
|
9
|
+
prerender: false
|
10
|
+
)
|
11
|
+
end
|
12
|
+
|
13
|
+
class Configuration
|
14
|
+
attr_accessor :bundle_js_file, :prerender
|
15
|
+
|
16
|
+
def initialize(bundle_js_file:, prerender:)
|
17
|
+
self.bundle_js_file = bundle_js_file
|
18
|
+
self.prerender = prerender
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -35,10 +35,8 @@ module ReactOnRails
|
|
35
35
|
private
|
36
36
|
|
37
37
|
def bundle_js_code
|
38
|
-
|
39
|
-
|
40
|
-
# TODO: Make this file name configurable
|
41
|
-
Rails.application.assets['generated/server.js'].to_s
|
38
|
+
js_file = Rails.root.join(ReactOnRails.configuration.bundle_js_file)
|
39
|
+
File.read(js_file)
|
42
40
|
end
|
43
41
|
end
|
44
42
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: react_on_rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Justin Gordon
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-09-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -97,6 +97,7 @@ files:
|
|
97
97
|
- Rakefile
|
98
98
|
- app/helpers/react_on_rails_helper.rb
|
99
99
|
- lib/react_on_rails.rb
|
100
|
+
- lib/react_on_rails/configuration.rb
|
100
101
|
- lib/react_on_rails/react_renderer.rb
|
101
102
|
- lib/react_on_rails/version.rb
|
102
103
|
- react_on_rails.gemspec
|
@@ -125,3 +126,4 @@ signing_key:
|
|
125
126
|
specification_version: 4
|
126
127
|
summary: Rails with react server rendering with webpack.
|
127
128
|
test_files: []
|
129
|
+
has_rdoc:
|