react_on_rails 1.1.1 → 1.2.0.rc1
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 +1 -0
- data/.rubocop.yml +1 -0
- data/.travis.yml +2 -8
- data/Dockerfile_tests +1 -1
- data/Gemfile +68 -2
- data/README.md +21 -15
- data/Rakefile +3 -109
- data/app/assets/javascripts/react_on_rails.js +10 -0
- data/docker-compose.yml +0 -6
- data/docs/additional_reading/webpack.md +46 -0
- data/docs/generator_testing.md +20 -0
- data/lib/generators/react_on_rails/base_generator.rb +49 -9
- data/lib/generators/react_on_rails/bootstrap_generator.rb +14 -29
- data/lib/generators/react_on_rails/dev_tests_generator.rb +30 -0
- data/lib/generators/react_on_rails/install_generator.rb +14 -3
- data/lib/generators/react_on_rails/templates/base/base/app/views/hello_world/index.html.erb.tt +2 -3
- data/lib/generators/react_on_rails/templates/base/base/client/package.json.tt +26 -23
- data/lib/generators/react_on_rails/templates/base/base/client/{webpack.client.hot.config.js → webpack.client.hot.config.js.tt} +3 -1
- data/lib/generators/react_on_rails/templates/base/base/lib/tasks/{assets.rake → assets.rake.tt} +2 -0
- data/lib/generators/react_on_rails/templates/base/server_rendering/client/webpack.server.rails.config.js +1 -1
- data/lib/generators/react_on_rails/templates/dev_tests/.rspec +2 -0
- data/lib/generators/react_on_rails/templates/dev_tests/spec/features/hello_world_spec.rb +25 -0
- data/lib/generators/react_on_rails/templates/dev_tests/spec/rails_helper.rb +57 -0
- data/lib/generators/react_on_rails/templates/dev_tests/spec/simplecov_helper.rb +21 -0
- data/lib/generators/react_on_rails/templates/dev_tests/spec/spec_helper.rb +95 -0
- data/lib/react_on_rails/version.rb +1 -1
- data/rakelib/docker.rake +33 -0
- data/rakelib/dummy_apps.rake +29 -0
- data/rakelib/example_type.rb +160 -0
- data/rakelib/examples.rake +103 -0
- data/rakelib/examples_config.yml +19 -0
- data/rakelib/lint.rake +37 -0
- data/rakelib/run_rspec.rake +65 -0
- data/rakelib/task_helpers.rb +44 -0
- data/ruby-lint.yml +1 -0
- metadata +22 -9
- data/Dockerfile_ci +0 -12
- data/docs/generator_testing_script.md +0 -49
- data/lib/generators/react_on_rails/templates/client/README.md +0 -97
@@ -0,0 +1,19 @@
|
|
1
|
+
example_type_data:
|
2
|
+
-
|
3
|
+
name: basic
|
4
|
+
generator_options: ""
|
5
|
+
-
|
6
|
+
name: basic-server-rendering
|
7
|
+
generator_options: --server-rendering
|
8
|
+
-
|
9
|
+
name: redux
|
10
|
+
generator_options: --redux --server-rendering
|
11
|
+
-
|
12
|
+
name: redux-server-rendering
|
13
|
+
generator_options: --redux --server-rendering
|
14
|
+
-
|
15
|
+
name: heroku-deployment
|
16
|
+
generator_options: --heroku-deployment
|
17
|
+
-
|
18
|
+
name: skip-bootstrap
|
19
|
+
generator_options: --skip-bootstrap
|
data/rakelib/lint.rake
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
require_relative "task_helpers"
|
2
|
+
include ReactOnRails::TaskHelpers
|
3
|
+
|
4
|
+
namespace :lint do
|
5
|
+
desc "Run Rubocop as shell"
|
6
|
+
task :rubocop do
|
7
|
+
sh_in_dir(gem_root, "rubocop .")
|
8
|
+
end
|
9
|
+
|
10
|
+
desc "Run ruby-lint as shell"
|
11
|
+
task :ruby do
|
12
|
+
sh_in_dir(gem_root, "ruby-lint app spec lib")
|
13
|
+
end
|
14
|
+
|
15
|
+
desc "Run scss-lint as shell"
|
16
|
+
task :scss do
|
17
|
+
sh_in_dir(gem_root, "scss-lint spec/dummy/app/assets/stylesheets/")
|
18
|
+
end
|
19
|
+
|
20
|
+
desc "Run eslint as shell"
|
21
|
+
task :eslint do
|
22
|
+
sh_in_dir(gem_root, "eslint . --ext .jsx and .js")
|
23
|
+
end
|
24
|
+
|
25
|
+
desc "Run jscs from shell"
|
26
|
+
task :jscs do
|
27
|
+
sh_in_dir(gem_root, "jscs -e -v .")
|
28
|
+
end
|
29
|
+
|
30
|
+
desc "Run all eslint, jscs, rubocop linters. Skip ruby-lint and scss"
|
31
|
+
task lint: [:eslint, :jscs, :rubocop] do
|
32
|
+
puts "Completed all linting"
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
desc "Runs all linters. Run `rake -D lint` to see all available lint options"
|
37
|
+
task lint: ["lint:lint"]
|
@@ -0,0 +1,65 @@
|
|
1
|
+
require "coveralls/rake/task"
|
2
|
+
require "pathname"
|
3
|
+
|
4
|
+
require_relative "task_helpers"
|
5
|
+
require_relative "example_type"
|
6
|
+
|
7
|
+
include ReactOnRails::TaskHelpers
|
8
|
+
|
9
|
+
namespace :run_rspec do
|
10
|
+
desc "Run RSpec for top level only"
|
11
|
+
task :gem do
|
12
|
+
run_tests_in("", rspec_args: "spec/react_on_rails")
|
13
|
+
end
|
14
|
+
|
15
|
+
desc "Run RSpec for spec/dummy only"
|
16
|
+
task dummy: ["dummy_apps:dummy_app"] do
|
17
|
+
run_tests_in("spec/dummy", env_vars: "DRIVER=selenium_firefox")
|
18
|
+
end
|
19
|
+
|
20
|
+
desc "Run RSpec for spec/dummy_react_013 only"
|
21
|
+
task dummy_react_013: ["dummy_apps:dummy_react_013_app"] do
|
22
|
+
run_tests_in("spec/dummy-react-013", env_vars: "DRIVER=selenium_firefox")
|
23
|
+
end
|
24
|
+
|
25
|
+
# Dynamically define Rake tasks for each example app found in the examples directory
|
26
|
+
ExampleType.all.each do |example_type|
|
27
|
+
desc "Runs RSpec for #{example_type.name_pretty} only"
|
28
|
+
task example_type.rspec_task_name_short => example_type.prepare_task_name do
|
29
|
+
run_tests_in("#{File.basename(examples_dir)}/#{example_type.name}") # have to use relative path
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
desc "Runs Rspec for example apps only"
|
34
|
+
task examples: "examples:prepare_all" do
|
35
|
+
ExampleType.all.each { |example_type| Rake::Task[example_type.rspec_task_name].invoke }
|
36
|
+
end
|
37
|
+
|
38
|
+
desc "(HACK) Run RSpec on spec/empty_spec in order to have SimpleCov generate a coverage report from cache"
|
39
|
+
task :empty do
|
40
|
+
sh %(COVERAGE=true rspec spec/empty_spec.rb)
|
41
|
+
end
|
42
|
+
|
43
|
+
Coveralls::RakeTask.new
|
44
|
+
|
45
|
+
task run_rspec: [:gem, :dummy, :dummy_react_013, :examples, :empty, "coveralls:push"] do
|
46
|
+
puts "Completed all RSpec tests"
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
desc "Runs all tests. Run `rake -D run_rspec` to see all available test options"
|
51
|
+
task run_rspec: ["run_rspec:run_rspec"]
|
52
|
+
|
53
|
+
private
|
54
|
+
|
55
|
+
# Runs rspec in the given directory (if string is passed, assumed to be relative
|
56
|
+
# to root of the gem.
|
57
|
+
# TEST_ENV_COMMAND_NAME is used to make SimpleCov.command_name unique in order to
|
58
|
+
# prevent a name collision. Defaults to the given directory's name.
|
59
|
+
def run_tests_in(dir, options = {})
|
60
|
+
dir = Pathname.new(File.join(gem_root, dir)) if dir.is_a?(String)
|
61
|
+
command_name = options.fetch(:command_name, dir.basename)
|
62
|
+
rspec_args = options.fetch(:rspec_args, "")
|
63
|
+
env_vars = %(#{options.fetch(env_vars, '')} COVERAGE=true TEST_ENV_COMMAND_NAME="#{command_name}")
|
64
|
+
sh_in_dir(dir, "#{env_vars} bundle exec rspec #{rspec_args}")
|
65
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
module ReactOnRails
|
2
|
+
module TaskHelpers
|
3
|
+
# Returns the root folder of the react_on_rails gem
|
4
|
+
def gem_root
|
5
|
+
File.expand_path("../../.", __FILE__)
|
6
|
+
end
|
7
|
+
|
8
|
+
# Returns the folder where examples are located
|
9
|
+
def examples_dir
|
10
|
+
File.join(gem_root, "examples")
|
11
|
+
end
|
12
|
+
|
13
|
+
def dummy_app_dirs
|
14
|
+
%w(spec/dummy spec/dummy-react-013).map { |rel_dir| File.join(gem_root, rel_dir) }
|
15
|
+
end
|
16
|
+
|
17
|
+
# Executes a string or an array of strings in a shell in the given directory
|
18
|
+
def sh_in_dir(dir, shell_commands)
|
19
|
+
shell_commands = [shell_commands] if shell_commands.is_a?(String)
|
20
|
+
shell_commands.each { |shell_command| sh %(cd #{dir} && #{shell_command.strip}) }
|
21
|
+
end
|
22
|
+
|
23
|
+
def bundle_install_in(dir)
|
24
|
+
sh_in_dir(dir, "bundle install")
|
25
|
+
end
|
26
|
+
|
27
|
+
# Runs bundle exec using that directory's Gemfile
|
28
|
+
def bundle_exec(dir:, args:, env_vars: "")
|
29
|
+
sh_in_dir(dir, "#{env_vars} #{args}")
|
30
|
+
end
|
31
|
+
|
32
|
+
def generators_source_dir
|
33
|
+
File.join(gem_root, "lib/generators/react_on_rails")
|
34
|
+
end
|
35
|
+
|
36
|
+
def symbolize_keys(hash)
|
37
|
+
hash.each_with_object({}) do |(key, value), new_hash|
|
38
|
+
new_key = key.is_a?(String) ? key.to_sym : key
|
39
|
+
new_value = value.is_a?(Hash) ? symbolize_keys(value) : value
|
40
|
+
new_hash[new_key] = new_value
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
data/ruby-lint.yml
CHANGED
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: 1.
|
4
|
+
version: 1.2.0.rc1
|
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-12-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -140,7 +140,6 @@ files:
|
|
140
140
|
- ".rubocop.yml"
|
141
141
|
- ".scss-lint.yml"
|
142
142
|
- ".travis.yml"
|
143
|
-
- Dockerfile_ci
|
144
143
|
- Dockerfile_tests
|
145
144
|
- Gemfile
|
146
145
|
- README.md
|
@@ -157,17 +156,19 @@ files:
|
|
157
156
|
- docs/additional_reading/react_router.md
|
158
157
|
- docs/additional_reading/server_rendering_tips.md
|
159
158
|
- docs/additional_reading/tips.md
|
159
|
+
- docs/additional_reading/webpack.md
|
160
160
|
- docs/code_of_conduct.md
|
161
161
|
- docs/coding-style/linters.md
|
162
162
|
- docs/coding-style/style.md
|
163
163
|
- docs/contributing.md
|
164
|
-
- docs/
|
164
|
+
- docs/generator_testing.md
|
165
165
|
- docs/install_and_releasing.md
|
166
166
|
- docs/sample_generated_js/README.md
|
167
167
|
- docs/sample_generated_js/client-generated.js
|
168
168
|
- docs/sample_generated_js/server-generated.js
|
169
169
|
- lib/generators/react_on_rails/base_generator.rb
|
170
170
|
- lib/generators/react_on_rails/bootstrap_generator.rb
|
171
|
+
- lib/generators/react_on_rails/dev_tests_generator.rb
|
171
172
|
- lib/generators/react_on_rails/generator_helper.rb
|
172
173
|
- lib/generators/react_on_rails/heroku_deployment_generator.rb
|
173
174
|
- lib/generators/react_on_rails/install_generator.rb
|
@@ -187,10 +188,10 @@ files:
|
|
187
188
|
- lib/generators/react_on_rails/templates/base/base/client/package.json.tt
|
188
189
|
- lib/generators/react_on_rails/templates/base/base/client/server.js
|
189
190
|
- lib/generators/react_on_rails/templates/base/base/client/webpack.client.base.config.js.tt
|
190
|
-
- lib/generators/react_on_rails/templates/base/base/client/webpack.client.hot.config.js
|
191
|
+
- lib/generators/react_on_rails/templates/base/base/client/webpack.client.hot.config.js.tt
|
191
192
|
- lib/generators/react_on_rails/templates/base/base/client/webpack.client.rails.config.js
|
192
193
|
- lib/generators/react_on_rails/templates/base/base/config/initializers/react_on_rails.rb
|
193
|
-
- lib/generators/react_on_rails/templates/base/base/lib/tasks/assets.rake
|
194
|
+
- lib/generators/react_on_rails/templates/base/base/lib/tasks/assets.rake.tt
|
194
195
|
- lib/generators/react_on_rails/templates/base/base/lib/tasks/linters.rake.tt
|
195
196
|
- lib/generators/react_on_rails/templates/base/base/package.json
|
196
197
|
- lib/generators/react_on_rails/templates/base/server_rendering/client/app/bundles/HelloWorld/startup/serverGlobals.jsx
|
@@ -200,7 +201,11 @@ files:
|
|
200
201
|
- lib/generators/react_on_rails/templates/bootstrap/client/assets/stylesheets/_pre-bootstrap.scss
|
201
202
|
- lib/generators/react_on_rails/templates/bootstrap/client/assets/stylesheets/_react-on-rails-sass-helper.scss
|
202
203
|
- lib/generators/react_on_rails/templates/bootstrap/client/bootstrap-sass.config.js
|
203
|
-
- lib/generators/react_on_rails/templates/
|
204
|
+
- lib/generators/react_on_rails/templates/dev_tests/.rspec
|
205
|
+
- lib/generators/react_on_rails/templates/dev_tests/spec/features/hello_world_spec.rb
|
206
|
+
- lib/generators/react_on_rails/templates/dev_tests/spec/rails_helper.rb
|
207
|
+
- lib/generators/react_on_rails/templates/dev_tests/spec/simplecov_helper.rb
|
208
|
+
- lib/generators/react_on_rails/templates/dev_tests/spec/spec_helper.rb
|
204
209
|
- lib/generators/react_on_rails/templates/heroku_deployment/.buildpacks
|
205
210
|
- lib/generators/react_on_rails/templates/heroku_deployment/Procfile
|
206
211
|
- lib/generators/react_on_rails/templates/heroku_deployment/config/puma.rb
|
@@ -232,6 +237,14 @@ files:
|
|
232
237
|
- lib/react_on_rails/prerender_error.rb
|
233
238
|
- lib/react_on_rails/server_rendering_pool.rb
|
234
239
|
- lib/react_on_rails/version.rb
|
240
|
+
- rakelib/docker.rake
|
241
|
+
- rakelib/dummy_apps.rake
|
242
|
+
- rakelib/example_type.rb
|
243
|
+
- rakelib/examples.rake
|
244
|
+
- rakelib/examples_config.yml
|
245
|
+
- rakelib/lint.rake
|
246
|
+
- rakelib/run_rspec.rake
|
247
|
+
- rakelib/task_helpers.rb
|
235
248
|
- react_on_rails.gemspec
|
236
249
|
- ruby-lint.yml
|
237
250
|
homepage: https://github.com/shakacode/react_on_rails
|
@@ -249,9 +262,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
249
262
|
version: '0'
|
250
263
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
251
264
|
requirements:
|
252
|
-
- - "
|
265
|
+
- - ">"
|
253
266
|
- !ruby/object:Gem::Version
|
254
|
-
version:
|
267
|
+
version: 1.3.1
|
255
268
|
requirements: []
|
256
269
|
rubyforge_project:
|
257
270
|
rubygems_version: 2.5.0
|
data/Dockerfile_ci
DELETED
@@ -1,12 +0,0 @@
|
|
1
|
-
FROM dylangrafmyre/docker-ci
|
2
|
-
|
3
|
-
WORKDIR /app/
|
4
|
-
|
5
|
-
COPY ["/lib/react_on_rails/version.rb", "/app/lib/react_on_rails/"]
|
6
|
-
COPY ["Gemfile", "Gemfile.lock", "react_on_rails.gemspec", "/app/"]
|
7
|
-
COPY ["/spec/dummy/Gemfile", "/spec/dummy/Gemfile.lock", "/app/spec/dummy/"]
|
8
|
-
RUN bundle install --gemfile=spec/dummy/Gemfile
|
9
|
-
|
10
|
-
ENV DISPLAY :99
|
11
|
-
ENTRYPOINT service xvfd start \
|
12
|
-
&& rake ci
|
@@ -1,49 +0,0 @@
|
|
1
|
-
Per running steps:
|
2
|
-
|
3
|
-
From directory of `react_on_rails`, with a test app named "react_on_rails_gen"
|
4
|
-
|
5
|
-
```bash
|
6
|
-
cd ..
|
7
|
-
rails new react_on_rails_gen
|
8
|
-
cd react_on_rails_gen
|
9
|
-
git init
|
10
|
-
git add .
|
11
|
-
git commit -m "Rails new plus react_on_rails"
|
12
|
-
```
|
13
|
-
|
14
|
-
Edit the Gemfile, adding these 2 lines:
|
15
|
-
|
16
|
-
```ruby
|
17
|
-
gem 'react_on_rails', path: '../react_on_rails'
|
18
|
-
```
|
19
|
-
|
20
|
-
Note the relative path to the react_on_rails gem.
|
21
|
-
|
22
|
-
```bash
|
23
|
-
bundle
|
24
|
-
git commit -am "added react_on_rails gem"
|
25
|
-
```
|
26
|
-
|
27
|
-
You can now mess around with the generator:
|
28
|
-
|
29
|
-
```bash
|
30
|
-
# See available options
|
31
|
-
rails generate react_on_rails:install --help
|
32
|
-
# Actual install, for example, with Redux
|
33
|
-
rails generate react_on_rails:install --redux
|
34
|
-
```
|
35
|
-
|
36
|
-
If you do actually run the generator, then you can see the changes that the generator made, ready for a commit.
|
37
|
-
|
38
|
-
Then run:
|
39
|
-
|
40
|
-
```bash
|
41
|
-
cd client
|
42
|
-
npm install
|
43
|
-
cd ..
|
44
|
-
foreman start -f Procfile.dev
|
45
|
-
```
|
46
|
-
|
47
|
-
Then visit `localhost:3000/hello_world` to see it.
|
48
|
-
|
49
|
-
That's it!
|
@@ -1,97 +0,0 @@
|
|
1
|
-
Example NPM Package
|
2
|
-
===========================
|
3
|
-
We've included an example package.json from https://github.com/shakacode/react-webpack-rails-tutorial which should get you started with your React project.
|
4
|
-
|
5
|
-
Starting the node.js server:
|
6
|
-
```
|
7
|
-
npm start
|
8
|
-
```
|
9
|
-
|
10
|
-
Building client javascript files for production:
|
11
|
-
```
|
12
|
-
npm run build:client
|
13
|
-
```
|
14
|
-
|
15
|
-
Building server javascript files for production:
|
16
|
-
```
|
17
|
-
npm run build:server
|
18
|
-
```
|
19
|
-
|
20
|
-
Building client javascript files for development:
|
21
|
-
```
|
22
|
-
npm run build:dev:client
|
23
|
-
```
|
24
|
-
|
25
|
-
Building server javascript files for development:
|
26
|
-
```
|
27
|
-
npm run build:dev:server
|
28
|
-
```
|
29
|
-
|
30
|
-
Running all linters:
|
31
|
-
```
|
32
|
-
npm run lint
|
33
|
-
```
|
34
|
-
|
35
|
-
Running eslint:
|
36
|
-
```
|
37
|
-
npm run eslint
|
38
|
-
```
|
39
|
-
|
40
|
-
Running jscs:
|
41
|
-
```
|
42
|
-
npm run jscs
|
43
|
-
```
|
44
|
-
|
45
|
-
dependencies vs devDependencies
|
46
|
-
===========================
|
47
|
-
Anything needed for heroku deployment needs to go in "dependencies", and anything not needed for heroku deployment should go in "devDependencies".
|
48
|
-
|
49
|
-
|
50
|
-
Updating Node Dependencies
|
51
|
-
===========================
|
52
|
-
|
53
|
-
```
|
54
|
-
npm install -g npm-check-updates
|
55
|
-
```
|
56
|
-
|
57
|
-
Then run this to update the dependencies (starting at the top level).
|
58
|
-
|
59
|
-
```
|
60
|
-
# Make sure you are in the top directory, then run:
|
61
|
-
cd client
|
62
|
-
rm npm-shrinkwrap.json
|
63
|
-
npm-check-updates -u
|
64
|
-
npm install
|
65
|
-
npm prune
|
66
|
-
npm shrinkwrap
|
67
|
-
```
|
68
|
-
|
69
|
-
Then confirm that the hot reload server and the rails server both work fine. You
|
70
|
-
may have to delete `node_modules` and `npm-shrinkwrap.json` and then run `npm
|
71
|
-
shrinkwrap`.
|
72
|
-
|
73
|
-
Note: `npm prune` is required before running `npm shrinkwrap` to remove dependencies that are no longer needed after doing updates.
|
74
|
-
|
75
|
-
|
76
|
-
Adding Node Modules
|
77
|
-
=====================================
|
78
|
-
Suppose you want to add a dependency to "module_name"....
|
79
|
-
|
80
|
-
Before you do so, consider:
|
81
|
-
|
82
|
-
1. Do we really need the module and the extra JS code?
|
83
|
-
2. Is the module well maintained?
|
84
|
-
|
85
|
-
```bash
|
86
|
-
cd client
|
87
|
-
npm install --save module_name@version
|
88
|
-
# or
|
89
|
-
# npm install --save_dev module_name@version
|
90
|
-
rm npm-shrinkwrap.json
|
91
|
-
npm shrinkwrap
|
92
|
-
```
|
93
|
-
|
94
|
-
Setting Up a Basic REST API
|
95
|
-
=====================================
|
96
|
-
See server.js in our tutorial at
|
97
|
-
https://github.com/shakacode/react-webpack-rails-tutorial/blob/master/client/server.js
|