react_on_rails 2.0.2 → 2.1.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/.eslintignore +4 -0
- data/.gitignore +2 -1
- data/.npmignore +2 -0
- data/.rubocop.yml +2 -3
- data/CHANGELOG.md +50 -19
- data/README.md +37 -4
- data/app/helpers/react_on_rails_helper.rb +6 -6
- data/docs/additional_reading/rspec_configuration.md +10 -0
- data/docs/additional_reading/turbolinks.md +39 -0
- data/docs/additional_reading/updating-dependencies.md +33 -0
- data/docs/coding-style/style.md +0 -1
- data/docs/contributing.md +2 -1
- data/docs/doctrine.md +78 -0
- data/docs/recommended-project-structure.md +22 -0
- data/docs/releasing.md +59 -27
- data/lib/generators/react_on_rails/dev_tests_generator.rb +1 -1
- data/lib/generators/react_on_rails/generator_messages.rb +1 -1
- data/lib/generators/react_on_rails/install_generator.rb +1 -11
- data/lib/generators/react_on_rails/templates/base/base/client/package.json.tt +29 -28
- data/lib/generators/react_on_rails/templates/base/base/client/server.js +14 -6
- data/lib/generators/react_on_rails/templates/base/base/client/webpack.client.base.config.js +4 -2
- data/lib/generators/react_on_rails/templates/base/base/client/webpack.client.hot.config.js.tt +2 -2
- data/lib/generators/react_on_rails/templates/base/base/config/initializers/react_on_rails.rb +2 -0
- data/lib/generators/react_on_rails/templates/dev_tests/spec/simplecov_helper.rb +1 -1
- data/lib/generators/react_on_rails/templates/no_redux/base/client/app/bundles/HelloWorld/startup/HelloWorldAppClient.jsx.tt +3 -5
- data/lib/generators/react_on_rails/templates/no_redux/server_rendering/client/app/bundles/HelloWorld/startup/HelloWorldAppServer.jsx +3 -5
- data/lib/generators/react_on_rails/templates/redux/base/client/app/bundles/HelloWorld/store/helloWorldStore.jsx +4 -3
- data/lib/react_on_rails.rb +11 -0
- data/lib/react_on_rails/configuration.rb +15 -13
- data/lib/react_on_rails/engine.rb +0 -2
- data/lib/react_on_rails/ensure_assets_compiled.rb +31 -0
- data/lib/react_on_rails/git_utils.rb +12 -0
- data/lib/react_on_rails/utils.rb +7 -0
- data/lib/react_on_rails/version.rb +1 -1
- data/lib/react_on_rails/version_checker.rb +0 -3
- data/lib/react_on_rails/version_syntax_converter.rb +3 -5
- data/npm-shrinkwrap.json +4253 -0
- data/package.json +20 -16
- data/rakelib/example_type.rb +5 -6
- data/rakelib/examples.rake +1 -0
- data/rakelib/lint.rake +2 -2
- data/rakelib/release.rake +70 -0
- data/rakelib/run_rspec.rake +17 -8
- data/rakelib/task_helpers.rb +3 -3
- data/react_on_rails.gemspec +2 -2
- data/script/release +1 -1
- metadata +14 -4
data/package.json
CHANGED
@@ -1,38 +1,40 @@
|
|
1
1
|
{
|
2
2
|
"name": "react-on-rails",
|
3
|
-
"version": "2.0
|
3
|
+
"version": "2.1.0",
|
4
4
|
"description": "react-on-rails JavaScript for react_on_rails Ruby gem",
|
5
5
|
"main": "node_package/lib/ReactOnRails.js",
|
6
6
|
"directories": {
|
7
7
|
"doc": "docs"
|
8
8
|
},
|
9
|
-
"dependencies": {
|
9
|
+
"dependencies": {
|
10
|
+
"babel-types": "^6.4.5"
|
11
|
+
},
|
10
12
|
"devDependencies": {
|
11
|
-
"babel": "^6.3.
|
12
|
-
"babel-cli": "^6.
|
13
|
-
"babel-core": "^6.
|
13
|
+
"babel": "^6.3.26",
|
14
|
+
"babel-cli": "^6.4.5",
|
15
|
+
"babel-core": "^6.4.5",
|
14
16
|
"babel-eslint": "^5.0.0-beta6",
|
15
|
-
"babel-loader": "^6.2.
|
16
|
-
"babel-plugin-transform-runtime": "^6.3
|
17
|
+
"babel-loader": "^6.2.1",
|
18
|
+
"babel-plugin-transform-runtime": "^6.4.3",
|
17
19
|
"babel-preset-es2015": "^6.3.13",
|
18
20
|
"babel-preset-react": "^6.3.13",
|
19
21
|
"babel-preset-stage-0": "^6.3.13",
|
20
|
-
"babel-runtime": "^6.3.
|
22
|
+
"babel-runtime": "^6.3.19",
|
21
23
|
"babel-tape-runner": "^2.0.0",
|
22
24
|
"babelify": "^7.2.0",
|
23
25
|
"blue-tape": "^0.1.11",
|
24
26
|
"eslint": "^1.10.3",
|
25
|
-
"eslint-config-airbnb": "^
|
26
|
-
"eslint-config-shakacode": "0.0
|
27
|
+
"eslint-config-airbnb": "^4.0.0",
|
28
|
+
"eslint-config-shakacode": "1.0.0",
|
27
29
|
"eslint-plugin-babel": "^3.0.0",
|
28
|
-
"eslint-plugin-react": "^3.
|
29
|
-
"jscs": "^2.
|
30
|
-
"react": "^0.14.
|
31
|
-
"react-dom": "^0.14.
|
30
|
+
"eslint-plugin-react": "^3.16.1",
|
31
|
+
"jscs": "^2.8.0",
|
32
|
+
"react": "^0.14.6",
|
33
|
+
"react-dom": "^0.14.6",
|
32
34
|
"react-transform-hmr": "^1.0.1",
|
33
35
|
"tap-spec": "^4.1.1",
|
34
36
|
"tape": "^4.4.0",
|
35
|
-
"webpack": "^1.12.
|
37
|
+
"webpack": "^1.12.12"
|
36
38
|
},
|
37
39
|
"peerDependencies": {
|
38
40
|
"react": ">= 0.14",
|
@@ -47,7 +49,9 @@
|
|
47
49
|
"symlink-node-package": "node_package/scripts/symlink-node-package",
|
48
50
|
"prepublish": "npm run build",
|
49
51
|
"build": "node_package/scripts/build",
|
50
|
-
"
|
52
|
+
"eslint": "eslint . --ext .jsx and .js",
|
53
|
+
"jscs": "jscs . -e -v",
|
54
|
+
"lint": "npm run eslint && npm run jscs",
|
51
55
|
"lint:fix": "node_package/scripts/lint-fix",
|
52
56
|
"check": "npm run lint && npm run test",
|
53
57
|
"prerelease": "npm run check && npm run clean && npm run build",
|
data/rakelib/example_type.rb
CHANGED
@@ -18,7 +18,7 @@ module ReactOnRails
|
|
18
18
|
|
19
19
|
attr_reader :name, :generator_options
|
20
20
|
|
21
|
-
def initialize(name
|
21
|
+
def initialize(name: nil, generator_options: nil)
|
22
22
|
@name = name
|
23
23
|
@generator_options = generator_options
|
24
24
|
self.class.all << self
|
@@ -86,13 +86,12 @@ module ReactOnRails
|
|
86
86
|
"--skip-bundle --skip-spring --skip-git --skip-test-unit --skip-active-record"
|
87
87
|
end
|
88
88
|
|
89
|
-
# Methods for retrieving the name of a task specific to the example type
|
90
89
|
%w(gen prepare clean clobber npm_install build_webpack_bundles).each do |task_type|
|
91
|
-
|
92
|
-
|
90
|
+
method_name_normal = "#{task_type}_task_name" # ex: `clean_task_name`
|
91
|
+
method_name_short = "#{method_name_normal}_short" # ex: `clean_task_name_short`
|
93
92
|
|
94
|
-
define_method(
|
95
|
-
define_method("#{
|
93
|
+
define_method(method_name_normal) { "#{self.class.namespace_name}:#{task_type}_#{name}" }
|
94
|
+
define_method(method_name_short) { "#{task_type}_#{name}" }
|
96
95
|
end
|
97
96
|
|
98
97
|
def rspec_task_name_short
|
data/rakelib/examples.rake
CHANGED
@@ -64,6 +64,7 @@ namespace :examples do
|
|
64
64
|
task example_type.gen_task_name_short => example_type.clean_task_name do
|
65
65
|
mkdir_p(example_type.dir)
|
66
66
|
sh_in_dir(examples_dir, "rails new #{example_type.name} #{example_type.rails_options}")
|
67
|
+
sh_in_dir(example_type.dir, "touch .gitignore")
|
67
68
|
append_to_gemfile(example_type.gemfile, example_type.required_gems)
|
68
69
|
bundle_install_in(example_type.dir)
|
69
70
|
sh_in_dir(example_type.dir, example_type.generator_shell_commands)
|
data/rakelib/lint.rake
CHANGED
@@ -20,12 +20,12 @@ namespace :lint do
|
|
20
20
|
|
21
21
|
desc "Run eslint as shell"
|
22
22
|
task :eslint do
|
23
|
-
sh_in_dir(gem_root, "
|
23
|
+
sh_in_dir(gem_root, "npm run eslint")
|
24
24
|
end
|
25
25
|
|
26
26
|
desc "Run jscs from shell"
|
27
27
|
task :jscs do
|
28
|
-
sh_in_dir(gem_root, "
|
28
|
+
sh_in_dir(gem_root, "npm run jscs")
|
29
29
|
end
|
30
30
|
|
31
31
|
desc "Run all eslint, jscs, rubocop linters. Skip ruby-lint and scss"
|
@@ -0,0 +1,70 @@
|
|
1
|
+
require_relative "task_helpers"
|
2
|
+
include ReactOnRails::TaskHelpers
|
3
|
+
require_relative File.join(gem_root, "lib", "react_on_rails", "version_syntax_converter")
|
4
|
+
require_relative File.join(gem_root, "lib", "react_on_rails", "git_utils")
|
5
|
+
require_relative File.join(gem_root, "lib", "react_on_rails", "utils")
|
6
|
+
|
7
|
+
desc("Releases both the gem and node package using the given version.
|
8
|
+
|
9
|
+
IMPORTANT: the gem version must be in valid rubygem format (no dashes).
|
10
|
+
It will be automatically converted to a valid npm semver by the rake task
|
11
|
+
for the node package version. This only makes a difference for pre-release
|
12
|
+
versions such as `3.0.0.beta.1` (npm version would be `3.0.0-beta.1`).
|
13
|
+
|
14
|
+
This task will also globally install gem-release (ruby gem) and
|
15
|
+
release-it (node package) unless you specify skip installing tools.
|
16
|
+
|
17
|
+
1st argument: The new version in rubygem format (no dashes). Pass no argument to
|
18
|
+
automatically perform a patch version bump.
|
19
|
+
2nd argument: Perform a dry run by passing 'true' as a second argument.
|
20
|
+
3rd argument: Skip installing tools by passing 'false' as a third argument (default is true).
|
21
|
+
|
22
|
+
Example: `rake release[2.1.0,false,false]`")
|
23
|
+
|
24
|
+
task :release, [:gem_version, :dry_run, :tools_install] do |_t, args|
|
25
|
+
class MessageHandler
|
26
|
+
def add_error(error)
|
27
|
+
fail error
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
# Check if there are uncommited changes
|
32
|
+
ReactOnRails::GitUtils.uncommitted_changes?(MessageHandler.new)
|
33
|
+
args_hash = args.to_hash
|
34
|
+
|
35
|
+
is_dry_run = ReactOnRails::Utils.object_to_boolean(args_hash[:dry_run])
|
36
|
+
should_install_tools = ReactOnRails::Utils.object_to_boolean(args_hash.fetch(:tools_install, true))
|
37
|
+
|
38
|
+
gem_version = args_hash.fetch(:gem_version, "")
|
39
|
+
|
40
|
+
npm_version = if gem_version.strip.empty?
|
41
|
+
""
|
42
|
+
else
|
43
|
+
VersionSyntaxConverter.new.rubygem_to_npm(gem_version)
|
44
|
+
end
|
45
|
+
|
46
|
+
# Having the examples prevents publishing
|
47
|
+
Rake::Task["examples:clobber"].invoke
|
48
|
+
|
49
|
+
# See https://github.com/svenfuchs/gem-release
|
50
|
+
sh_in_dir(gem_root, "gem install gem-release") if should_install_tools
|
51
|
+
sh_in_dir(gem_root, "gem bump --no-commit #{gem_version.strip.empty? ? '' : %(--version #{gem_version})}")
|
52
|
+
|
53
|
+
# Update dummy app's Gemfile.lock
|
54
|
+
bundle_install_in(dummy_app_dir)
|
55
|
+
|
56
|
+
# Stage changes so far
|
57
|
+
sh_in_dir(gem_root, "git add .")
|
58
|
+
|
59
|
+
# See https://www.npmjs.com/package/release-it
|
60
|
+
sh %(npm install release-it -g) if should_install_tools
|
61
|
+
|
62
|
+
# Will bump the npm version, commit, tag the commit, push to repo, and release on npm
|
63
|
+
release_it_command = "release-it --non-interactive --npm.publish"
|
64
|
+
release_it_command << " --dry-run --verbose" if is_dry_run
|
65
|
+
release_it_command << " #{npm_version}" unless npm_version.strip.empty?
|
66
|
+
sh_in_dir(gem_root, release_it_command)
|
67
|
+
|
68
|
+
# Release the new gem version
|
69
|
+
sh_in_dir(gem_root, "gem release") unless is_dry_run
|
70
|
+
end
|
data/rakelib/run_rspec.rake
CHANGED
@@ -9,18 +9,18 @@ include ReactOnRails::TaskHelpers
|
|
9
9
|
namespace :run_rspec do
|
10
10
|
desc "Run RSpec for top level only"
|
11
11
|
task :gem do
|
12
|
-
run_tests_in("", rspec_args: "spec
|
12
|
+
run_tests_in("", rspec_args: File.join("spec", "react_on_rails"))
|
13
13
|
end
|
14
14
|
|
15
15
|
task dummy: ["dummy_apps:dummy_app"] do
|
16
|
-
run_tests_in("spec
|
16
|
+
run_tests_in(File.join("spec", "dummy"), env_vars: "DRIVER=selenium_firefox")
|
17
17
|
end
|
18
18
|
|
19
19
|
# Dynamically define Rake tasks for each example app found in the examples directory
|
20
20
|
ExampleType.all.each do |example_type|
|
21
21
|
desc "Runs RSpec for #{example_type.name_pretty} only"
|
22
22
|
task example_type.rspec_task_name_short => example_type.prepare_task_name do
|
23
|
-
run_tests_in(
|
23
|
+
run_tests_in(File.join(examples_dir, example_type.name)) # have to use relative path
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
@@ -52,14 +52,23 @@ task run_rspec: ["run_rspec:run_rspec"]
|
|
52
52
|
|
53
53
|
private
|
54
54
|
|
55
|
-
# Runs rspec in the given directory
|
56
|
-
# to root of the gem.
|
55
|
+
# Runs rspec in the given directory.
|
56
|
+
# If string is passed and it's not absolute, it's converted relative to root of the gem.
|
57
57
|
# TEST_ENV_COMMAND_NAME is used to make SimpleCov.command_name unique in order to
|
58
58
|
# prevent a name collision. Defaults to the given directory's name.
|
59
59
|
def run_tests_in(dir, options = {})
|
60
|
-
|
61
|
-
|
60
|
+
if dir.is_a?(String)
|
61
|
+
path = if dir.start_with?(File::SEPARATOR)
|
62
|
+
Pathname.new(dir)
|
63
|
+
else
|
64
|
+
Pathname.new(File.join(gem_root, dir))
|
65
|
+
end
|
66
|
+
else
|
67
|
+
path = dir
|
68
|
+
end
|
69
|
+
|
70
|
+
command_name = options.fetch(:command_name, path.basename)
|
62
71
|
rspec_args = options.fetch(:rspec_args, "")
|
63
72
|
env_vars = %(#{options.fetch(env_vars, '')} COVERAGE=true TEST_ENV_COMMAND_NAME="#{command_name}")
|
64
|
-
sh_in_dir(
|
73
|
+
sh_in_dir(path.realpath, "#{env_vars} bundle exec rspec #{rspec_args}")
|
65
74
|
end
|
data/rakelib/task_helpers.rb
CHANGED
@@ -7,10 +7,10 @@ module ReactOnRails
|
|
7
7
|
|
8
8
|
# Returns the folder where examples are located
|
9
9
|
def examples_dir
|
10
|
-
File.join(gem_root, "examples")
|
10
|
+
File.join(gem_root, "gen-examples", "examples")
|
11
11
|
end
|
12
12
|
|
13
|
-
def
|
13
|
+
def dummy_app_dir
|
14
14
|
File.join(gem_root, "spec/dummy")
|
15
15
|
end
|
16
16
|
|
@@ -25,7 +25,7 @@ module ReactOnRails
|
|
25
25
|
end
|
26
26
|
|
27
27
|
# Runs bundle exec using that directory's Gemfile
|
28
|
-
def bundle_exec(dir
|
28
|
+
def bundle_exec(dir: nil, args: nil, env_vars: "")
|
29
29
|
sh_in_dir(dir, "#{env_vars} #{args}")
|
30
30
|
end
|
31
31
|
|
data/react_on_rails.gemspec
CHANGED
@@ -14,14 +14,14 @@ Gem::Specification.new do |s|
|
|
14
14
|
s.homepage = "https://github.com/shakacode/react_on_rails"
|
15
15
|
s.license = "MIT"
|
16
16
|
|
17
|
-
s.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features|examples|node_modules|node_package|coverage)/}) }
|
17
|
+
s.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features|gen-examples|tmp|node_modules|node_package|coverage)/}) }
|
18
18
|
s.bindir = "exe"
|
19
19
|
s.executables = s.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
20
20
|
s.require_paths = ["lib"]
|
21
21
|
|
22
22
|
s.add_dependency "connection_pool"
|
23
23
|
s.add_dependency "execjs", "~> 2.5"
|
24
|
-
s.add_dependency "rainbow", "~> 2.
|
24
|
+
s.add_dependency "rainbow", "~> 2.1"
|
25
25
|
s.add_dependency "rails", ">= 3.2"
|
26
26
|
|
27
27
|
s.add_development_dependency "bundler", "~> 1.10"
|
data/script/release
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: 2.0
|
4
|
+
version: 2.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Justin Gordon
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-01-
|
11
|
+
date: 2016-01-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: connection_pool
|
@@ -44,14 +44,14 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '2.
|
47
|
+
version: '2.1'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '2.
|
54
|
+
version: '2.1'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rails
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -294,15 +294,20 @@ files:
|
|
294
294
|
- docs/additional_reading/optional_configuration.md
|
295
295
|
- docs/additional_reading/react-and-redux.md
|
296
296
|
- docs/additional_reading/react_router.md
|
297
|
+
- docs/additional_reading/rspec_configuration.md
|
297
298
|
- docs/additional_reading/server_rendering_tips.md
|
298
299
|
- docs/additional_reading/tips.md
|
300
|
+
- docs/additional_reading/turbolinks.md
|
301
|
+
- docs/additional_reading/updating-dependencies.md
|
299
302
|
- docs/additional_reading/webpack.md
|
300
303
|
- docs/code_of_conduct.md
|
301
304
|
- docs/coding-style/linters.md
|
302
305
|
- docs/coding-style/style.md
|
303
306
|
- docs/contributing.md
|
307
|
+
- docs/doctrine.md
|
304
308
|
- docs/generator_testing.md
|
305
309
|
- docs/rails3.md
|
310
|
+
- docs/recommended-project-structure.md
|
306
311
|
- docs/releasing.md
|
307
312
|
- docs/tutorial-v2.md
|
308
313
|
- lib/generators/USAGE
|
@@ -374,11 +379,15 @@ files:
|
|
374
379
|
- lib/react_on_rails.rb
|
375
380
|
- lib/react_on_rails/configuration.rb
|
376
381
|
- lib/react_on_rails/engine.rb
|
382
|
+
- lib/react_on_rails/ensure_assets_compiled.rb
|
383
|
+
- lib/react_on_rails/git_utils.rb
|
377
384
|
- lib/react_on_rails/prerender_error.rb
|
378
385
|
- lib/react_on_rails/server_rendering_pool.rb
|
386
|
+
- lib/react_on_rails/utils.rb
|
379
387
|
- lib/react_on_rails/version.rb
|
380
388
|
- lib/react_on_rails/version_checker.rb
|
381
389
|
- lib/react_on_rails/version_syntax_converter.rb
|
390
|
+
- npm-shrinkwrap.json
|
382
391
|
- package.json
|
383
392
|
- rakelib/docker.rake
|
384
393
|
- rakelib/dummy_apps.rake
|
@@ -387,6 +396,7 @@ files:
|
|
387
396
|
- rakelib/examples_config.yml
|
388
397
|
- rakelib/lint.rake
|
389
398
|
- rakelib/node_package.rake
|
399
|
+
- rakelib/release.rake
|
390
400
|
- rakelib/run_rspec.rake
|
391
401
|
- rakelib/task_helpers.rb
|
392
402
|
- react_on_rails.gemspec
|