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