react_on_rails 2.0.0.beta.1 → 2.0.0.beta.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (119) hide show
  1. checksums.yaml +4 -4
  2. data/.coveralls.yml +1 -0
  3. data/.dockerignore +2 -0
  4. data/.eslintignore +7 -0
  5. data/.eslintrc +19 -0
  6. data/.gitignore +28 -0
  7. data/.jscsrc +27 -0
  8. data/.npmignore +20 -0
  9. data/.rspec +2 -0
  10. data/.rubocop.yml +70 -0
  11. data/.scss-lint.yml +205 -0
  12. data/.travis.yml +43 -0
  13. data/CHANGELOG.md +34 -0
  14. data/Dockerfile_tests +12 -0
  15. data/Gemfile +40 -0
  16. data/README.md +365 -0
  17. data/Rakefile +5 -0
  18. data/app/helpers/react_on_rails_helper.rb +215 -0
  19. data/docker-compose.yml +11 -0
  20. data/docs/LICENSE +21 -0
  21. data/docs/additional_reading/heroku_deployment.md +23 -0
  22. data/docs/additional_reading/manual_installation.md +118 -0
  23. data/docs/additional_reading/node_dependencies_and_npm.md +29 -0
  24. data/docs/additional_reading/optional_configuration.md +33 -0
  25. data/docs/additional_reading/react-and-redux.md +36 -0
  26. data/docs/additional_reading/react_router.md +45 -0
  27. data/docs/additional_reading/server_rendering_tips.md +11 -0
  28. data/docs/additional_reading/tips.md +10 -0
  29. data/docs/additional_reading/webpack.md +46 -0
  30. data/docs/code_of_conduct.md +13 -0
  31. data/docs/coding-style/linters.md +64 -0
  32. data/docs/coding-style/style.md +42 -0
  33. data/docs/contributing.md +157 -0
  34. data/docs/generator_testing.md +20 -0
  35. data/docs/releasing.md +29 -0
  36. data/lib/generators/USAGE +99 -0
  37. data/lib/generators/react_on_rails/base_generator.rb +191 -0
  38. data/lib/generators/react_on_rails/bootstrap_generator.rb +89 -0
  39. data/lib/generators/react_on_rails/dev_tests_generator.rb +39 -0
  40. data/lib/generators/react_on_rails/generator_helper.rb +50 -0
  41. data/lib/generators/react_on_rails/heroku_deployment_generator.rb +30 -0
  42. data/lib/generators/react_on_rails/install_generator.rb +99 -0
  43. data/lib/generators/react_on_rails/js_linters_generator.rb +19 -0
  44. data/lib/generators/react_on_rails/react_no_redux_generator.rb +40 -0
  45. data/lib/generators/react_on_rails/react_with_redux_generator.rb +51 -0
  46. data/lib/generators/react_on_rails/ruby_linters_generator.rb +33 -0
  47. data/lib/generators/react_on_rails/templates/base/base/Procfile.dev.tt +4 -0
  48. data/lib/generators/react_on_rails/templates/base/base/REACT_ON_RAILS.md +16 -0
  49. data/lib/generators/react_on_rails/templates/base/base/app/controllers/hello_world_controller.rb +5 -0
  50. data/lib/generators/react_on_rails/templates/base/base/app/views/hello_world/index.html.erb.tt +4 -0
  51. data/lib/generators/react_on_rails/templates/base/base/client/.babelrc +3 -0
  52. data/lib/generators/react_on_rails/templates/base/base/client/REACT_ON_RAILS_CLIENT_README.md +3 -0
  53. data/lib/generators/react_on_rails/templates/base/base/client/app/bundles/HelloWorld/startup/clientRegistration.jsx.tt +5 -0
  54. data/lib/generators/react_on_rails/templates/base/base/client/index.jade +15 -0
  55. data/lib/generators/react_on_rails/templates/base/base/client/package.json.tt +104 -0
  56. data/lib/generators/react_on_rails/templates/base/base/client/server.js +64 -0
  57. data/lib/generators/react_on_rails/templates/base/base/client/webpack.client.base.config.js.tt +62 -0
  58. data/lib/generators/react_on_rails/templates/base/base/client/webpack.client.hot.config.js.tt +69 -0
  59. data/lib/generators/react_on_rails/templates/base/base/client/webpack.client.rails.config.js +42 -0
  60. data/lib/generators/react_on_rails/templates/base/base/config/initializers/react_on_rails.rb +26 -0
  61. data/lib/generators/react_on_rails/templates/base/base/lib/tasks/assets.rake.tt +26 -0
  62. data/lib/generators/react_on_rails/templates/base/base/lib/tasks/linters.rake.tt +88 -0
  63. data/lib/generators/react_on_rails/templates/base/base/package.json +31 -0
  64. data/lib/generators/react_on_rails/templates/base/server_rendering/client/app/bundles/HelloWorld/startup/serverRegistration.jsx +4 -0
  65. data/lib/generators/react_on_rails/templates/base/server_rendering/client/webpack.server.rails.config.js +39 -0
  66. data/lib/generators/react_on_rails/templates/bootstrap/app/assets/stylesheets/_bootstrap-custom.scss +63 -0
  67. data/lib/generators/react_on_rails/templates/bootstrap/client/assets/stylesheets/_post-bootstrap.scss +10 -0
  68. data/lib/generators/react_on_rails/templates/bootstrap/client/assets/stylesheets/_pre-bootstrap.scss +8 -0
  69. data/lib/generators/react_on_rails/templates/bootstrap/client/assets/stylesheets/_react-on-rails-sass-helper.scss +19 -0
  70. data/lib/generators/react_on_rails/templates/bootstrap/client/bootstrap-sass.config.js +89 -0
  71. data/lib/generators/react_on_rails/templates/dev_tests/.rspec +2 -0
  72. data/lib/generators/react_on_rails/templates/dev_tests/spec/features/hello_world_spec.rb +25 -0
  73. data/lib/generators/react_on_rails/templates/dev_tests/spec/rails_helper.rb +57 -0
  74. data/lib/generators/react_on_rails/templates/dev_tests/spec/simplecov_helper.rb +21 -0
  75. data/lib/generators/react_on_rails/templates/dev_tests/spec/spec_helper.rb +95 -0
  76. data/lib/generators/react_on_rails/templates/heroku_deployment/.buildpacks +2 -0
  77. data/lib/generators/react_on_rails/templates/heroku_deployment/Procfile +1 -0
  78. data/lib/generators/react_on_rails/templates/heroku_deployment/config/puma.rb +15 -0
  79. data/lib/generators/react_on_rails/templates/js_linters/client/.eslintignore +1 -0
  80. data/lib/generators/react_on_rails/templates/js_linters/client/.eslintrc +48 -0
  81. data/lib/generators/react_on_rails/templates/js_linters/client/.jscsrc +18 -0
  82. data/lib/generators/react_on_rails/templates/no_redux/base/client/app/bundles/HelloWorld/components/HelloWorldWidget.jsx +39 -0
  83. data/lib/generators/react_on_rails/templates/no_redux/base/client/app/bundles/HelloWorld/containers/HelloWorld.jsx +33 -0
  84. data/lib/generators/react_on_rails/templates/no_redux/base/client/app/bundles/HelloWorld/startup/HelloWorldAppClient.jsx.tt +8 -0
  85. data/lib/generators/react_on_rails/templates/no_redux/server_rendering/client/app/bundles/HelloWorld/startup/HelloWorldAppServer.jsx +8 -0
  86. data/lib/generators/react_on_rails/templates/redux/base/client/app/bundles/HelloWorld/actions/helloWorldActionCreators.jsx +8 -0
  87. data/lib/generators/react_on_rails/templates/redux/base/client/app/bundles/HelloWorld/components/HelloWorldWidget.jsx +48 -0
  88. data/lib/generators/react_on_rails/templates/redux/base/client/app/bundles/HelloWorld/constants/helloWorldConstants.jsx +8 -0
  89. data/lib/generators/react_on_rails/templates/redux/base/client/app/bundles/HelloWorld/containers/HelloWorld.jsx +43 -0
  90. data/lib/generators/react_on_rails/templates/redux/base/client/app/bundles/HelloWorld/reducers/helloWorldReducer.jsx +19 -0
  91. data/lib/generators/react_on_rails/templates/redux/base/client/app/bundles/HelloWorld/reducers/index.jsx +14 -0
  92. data/lib/generators/react_on_rails/templates/redux/base/client/app/bundles/HelloWorld/startup/HelloWorldAppClient.jsx.tt +19 -0
  93. data/lib/generators/react_on_rails/templates/redux/base/client/app/bundles/HelloWorld/store/helloWorldStore.jsx +35 -0
  94. data/lib/generators/react_on_rails/templates/redux/base/client/app/lib/middlewares/loggerMiddleware.js +20 -0
  95. data/lib/generators/react_on_rails/templates/redux/server_rendering/client/app/bundles/HelloWorld/startup/HelloWorldAppServer.jsx +19 -0
  96. data/lib/generators/react_on_rails/templates/ruby_linters/.rubocop.yml +26 -0
  97. data/lib/generators/react_on_rails/templates/ruby_linters/.scss-lint.yml +205 -0
  98. data/lib/generators/react_on_rails/templates/ruby_linters/lib/tasks/brakeman.rake +17 -0
  99. data/lib/generators/react_on_rails/templates/ruby_linters/lib/tasks/ci.rake +33 -0
  100. data/lib/generators/react_on_rails/templates/ruby_linters/ruby-lint.yml +20 -0
  101. data/lib/react_on_rails.rb +6 -0
  102. data/lib/react_on_rails/configuration.rb +60 -0
  103. data/lib/react_on_rails/engine.rb +7 -0
  104. data/lib/react_on_rails/prerender_error.rb +31 -0
  105. data/lib/react_on_rails/server_rendering_pool.rb +110 -0
  106. data/lib/react_on_rails/version.rb +3 -0
  107. data/package.json +76 -0
  108. data/rakelib/docker.rake +33 -0
  109. data/rakelib/dummy_apps.rake +20 -0
  110. data/rakelib/example_type.rb +160 -0
  111. data/rakelib/examples.rake +103 -0
  112. data/rakelib/examples_config.yml +19 -0
  113. data/rakelib/lint.rake +37 -0
  114. data/rakelib/node_package.rake +11 -0
  115. data/rakelib/run_rspec.rake +65 -0
  116. data/rakelib/task_helpers.rb +44 -0
  117. data/react_on_rails.gemspec +31 -0
  118. data/ruby-lint.yml +24 -0
  119. metadata +119 -2
@@ -0,0 +1,103 @@
1
+ # Defines tasks related to generating example apps using the gem's generator.
2
+ # Allows us to create and test apps generated using a wide range of options.
3
+ #
4
+ # Also see example_type.rb
5
+
6
+ require "yaml"
7
+ require_relative "example_type"
8
+ require_relative "task_helpers"
9
+ include ReactOnRails::TaskHelpers
10
+
11
+ namespace :examples do
12
+ # Loads data from examples_config.yml and instantiates corresponding ExampleType objects
13
+ examples_config_file = File.expand_path("../examples_config.yml", __FILE__)
14
+ examples_config = symbolize_keys(YAML.load(File.read(examples_config_file)))
15
+ examples_config[:example_type_data].each { |example_type_data| ExampleType.new(symbolize_keys(example_type_data)) }
16
+
17
+ # Define tasks for each example type
18
+ ExampleType.all.each do |example_type|
19
+ # GENERATED FILES
20
+ example_type.generated_files.each do |f|
21
+ file f => example_type.source_files do
22
+ Rake::Task[example_type.gen_task_name].invoke
23
+ end
24
+ end
25
+
26
+ # GEMFILE.LOCK
27
+ file example_type.gemfile_lock => example_type.gemfile do
28
+ bundle_install_in(example_type.dir)
29
+ end
30
+
31
+ # WEBPACK BUNDLES
32
+ example_type.webpack_bundles.each do |f|
33
+ file f => example_type.generated_client_files do
34
+ Rake::Task[example_type.build_webpack_bundles_task_name].invoke
35
+ end
36
+ end
37
+
38
+ # BUILD WEBPACK BUNDLES
39
+ task example_type.build_webpack_bundles_task_name_short => example_type.npm_install_task_name do
40
+ sh_in_dir(example_type.client_dir, example_type.build_webpack_bundles_shell_commands)
41
+ end
42
+
43
+ # NPM INSTALL
44
+ task example_type.npm_install_task_name_short => example_type.package_json do
45
+ unless uptodate?(example_type.node_modules_dir, [example_type.source_package_json])
46
+ sh_in_dir(example_type.client_dir, "npm install")
47
+ end
48
+ end
49
+
50
+ # CLEAN
51
+ desc "Cleans #{example_type.name_pretty}"
52
+ task example_type.clean_task_name_short do
53
+ example_type.clean_files.each { |f| rm_rf(f) }
54
+ end
55
+
56
+ # CLOBBER
57
+ desc "Clobbers (deletes) #{example_type.name_pretty}"
58
+ task example_type.clobber_task_name_short do
59
+ rm_rf(example_type.dir)
60
+ end
61
+
62
+ # GENERATE
63
+ desc "Generates #{example_type.name_pretty}"
64
+ task example_type.gen_task_name_short => example_type.clean_task_name do
65
+ mkdir_p(example_type.dir)
66
+ sh_in_dir(examples_dir, "rails new #{example_type.name} #{example_type.rails_options}")
67
+ append_to_gemfile(example_type.gemfile, example_type.required_gems)
68
+ bundle_install_in(example_type.dir)
69
+ sh_in_dir(example_type.dir, example_type.generator_shell_commands)
70
+ end
71
+
72
+ # PREPARE
73
+ desc "Prepares #{example_type.name_pretty} (generates example, `npm install`s, and generates webpack bundles)"
74
+ multitask example_type.prepare_task_name_short => example_type.prepared_files
75
+ end
76
+
77
+ desc "Cleans all example apps"
78
+ multitask clean: ExampleType.all.map(&:clean_task_name)
79
+
80
+ desc "Clobbers (deletes) all example apps"
81
+ task :clobber do
82
+ rm_rf(examples_dir)
83
+ end
84
+
85
+ desc "Generates all example apps"
86
+ multitask gen_all: ExampleType.all.map(&:gen_task_name)
87
+
88
+ desc "Prepares all example apps"
89
+ multitask prepare_all: ExampleType.all.map(&:prepare_task_name)
90
+ end
91
+
92
+ desc "Prepares all example apps. Run `rake -D examples` to see all available options"
93
+ multitask examples: ["examples:prepare_all"]
94
+
95
+ private
96
+
97
+ # Appends each string in an array as a new line of text in the given Gemfile.
98
+ # Automatically adds line returns.
99
+ def append_to_gemfile(gemfile, lines)
100
+ old_text = File.read(gemfile)
101
+ new_text = lines.reduce(old_text) { |a, e| a << "#{e}\n" }
102
+ File.open(gemfile, "w") { |f| f.puts(new_text) }
103
+ end
@@ -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
@@ -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,11 @@
1
+ require_relative "task_helpers"
2
+ include ReactOnRails::TaskHelpers
3
+
4
+ namespace :node_package do
5
+ task :build do
6
+ sh 'npm run build'
7
+ end
8
+ end
9
+
10
+ desc "Prepares all node_package by building"
11
+ task node_package: ["node_package:build"]
@@ -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
+ task dummy: ["dummy_apps:dummy_app"] do
16
+ run_tests_in("spec/dummy", env_vars: "DRIVER=selenium_firefox")
17
+ end
18
+
19
+ # Dynamically define Rake tasks for each example app found in the examples directory
20
+ ExampleType.all.each do |example_type|
21
+ desc "Runs RSpec for #{example_type.name_pretty} only"
22
+ task example_type.rspec_task_name_short => example_type.prepare_task_name do
23
+ run_tests_in("#{File.basename(examples_dir)}/#{example_type.name}") # have to use relative path
24
+ end
25
+ end
26
+
27
+ desc "Runs Rspec for example apps only"
28
+ task examples: "examples:prepare_all" do
29
+ ExampleType.all.each { |example_type| Rake::Task[example_type.rspec_task_name].invoke }
30
+ end
31
+
32
+ desc "(HACK) Run RSpec on spec/empty_spec in order to have SimpleCov generate a coverage report from cache"
33
+ task :empty do
34
+ sh %(COVERAGE=true rspec spec/empty_spec.rb)
35
+ end
36
+
37
+ Coveralls::RakeTask.new
38
+
39
+ desc "run all tests"
40
+ task run_rspec: [:gem, :dummy, :examples, :empty, :js_tests, "coveralls:push"] do
41
+ puts "Completed all RSpec tests"
42
+ end
43
+ end
44
+
45
+ desc "js tests (same as 'npm run test')"
46
+ task :js_tests do
47
+ sh "npm run test"
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
+ File.join(gem_root, "spec/dummy")
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
@@ -0,0 +1,31 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'react_on_rails/version'
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = "react_on_rails"
8
+ s.version = ReactOnRails::VERSION
9
+ s.authors = ["Justin Gordon"]
10
+ s.email = ["justin@shakacode.com"]
11
+
12
+ s.summary = %q{Rails with react server rendering with webpack. }
13
+ s.description = %q{See README.md}
14
+ s.homepage = "https://github.com/shakacode/react_on_rails"
15
+ s.license = "MIT"
16
+
17
+ s.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features|examples|node_modules|node_package|coverage)/}) }
18
+ s.bindir = "exe"
19
+ s.executables = s.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
+ s.require_paths = ["lib"]
21
+
22
+ s.add_dependency "rails", ">= 3.2"
23
+ s.add_dependency "execjs", "~> 2.5"
24
+ s.add_dependency "connection_pool"
25
+
26
+ s.add_development_dependency "bundler", "~> 1.10"
27
+ s.add_development_dependency "rake", "~> 10.0"
28
+ s.add_development_dependency "rspec"
29
+ s.add_development_dependency "coveralls"
30
+ s.add_development_dependency "generator_spec"
31
+ end
@@ -0,0 +1,24 @@
1
+ # Not currently using ruby-lint
2
+ ---
3
+ presenter: syntastic
4
+
5
+ directories:
6
+ - app
7
+ - lib
8
+ - spec
9
+
10
+ ignore_paths:
11
+ - client
12
+ - node_modules
13
+ - coverage
14
+ - examples
15
+
16
+ analysis_classes:
17
+ # - argument_amount
18
+ - pedantics
19
+ - shadowing_variables
20
+ # Too many false positives for these
21
+ # - undefined_methods
22
+ # - undefined_variables
23
+ # - unused_variables
24
+ - useless_equality_checks
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: react_on_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0.beta.1
4
+ version: 2.0.0.beta.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Gordon
@@ -128,7 +128,124 @@ email:
128
128
  executables: []
129
129
  extensions: []
130
130
  extra_rdoc_files: []
131
- files: []
131
+ files:
132
+ - ".coveralls.yml"
133
+ - ".dockerignore"
134
+ - ".eslintignore"
135
+ - ".eslintrc"
136
+ - ".gitignore"
137
+ - ".jscsrc"
138
+ - ".npmignore"
139
+ - ".rspec"
140
+ - ".rubocop.yml"
141
+ - ".scss-lint.yml"
142
+ - ".travis.yml"
143
+ - CHANGELOG.md
144
+ - Dockerfile_tests
145
+ - Gemfile
146
+ - README.md
147
+ - Rakefile
148
+ - app/helpers/react_on_rails_helper.rb
149
+ - docker-compose.yml
150
+ - docs/LICENSE
151
+ - docs/additional_reading/heroku_deployment.md
152
+ - docs/additional_reading/manual_installation.md
153
+ - docs/additional_reading/node_dependencies_and_npm.md
154
+ - docs/additional_reading/optional_configuration.md
155
+ - docs/additional_reading/react-and-redux.md
156
+ - docs/additional_reading/react_router.md
157
+ - docs/additional_reading/server_rendering_tips.md
158
+ - docs/additional_reading/tips.md
159
+ - docs/additional_reading/webpack.md
160
+ - docs/code_of_conduct.md
161
+ - docs/coding-style/linters.md
162
+ - docs/coding-style/style.md
163
+ - docs/contributing.md
164
+ - docs/generator_testing.md
165
+ - docs/releasing.md
166
+ - lib/generators/USAGE
167
+ - lib/generators/react_on_rails/base_generator.rb
168
+ - lib/generators/react_on_rails/bootstrap_generator.rb
169
+ - lib/generators/react_on_rails/dev_tests_generator.rb
170
+ - lib/generators/react_on_rails/generator_helper.rb
171
+ - lib/generators/react_on_rails/heroku_deployment_generator.rb
172
+ - lib/generators/react_on_rails/install_generator.rb
173
+ - lib/generators/react_on_rails/js_linters_generator.rb
174
+ - lib/generators/react_on_rails/react_no_redux_generator.rb
175
+ - lib/generators/react_on_rails/react_with_redux_generator.rb
176
+ - lib/generators/react_on_rails/ruby_linters_generator.rb
177
+ - lib/generators/react_on_rails/templates/base/base/Procfile.dev.tt
178
+ - lib/generators/react_on_rails/templates/base/base/REACT_ON_RAILS.md
179
+ - lib/generators/react_on_rails/templates/base/base/app/controllers/hello_world_controller.rb
180
+ - lib/generators/react_on_rails/templates/base/base/app/views/hello_world/index.html.erb.tt
181
+ - lib/generators/react_on_rails/templates/base/base/client/.babelrc
182
+ - lib/generators/react_on_rails/templates/base/base/client/REACT_ON_RAILS_CLIENT_README.md
183
+ - lib/generators/react_on_rails/templates/base/base/client/app/bundles/HelloWorld/startup/clientRegistration.jsx.tt
184
+ - lib/generators/react_on_rails/templates/base/base/client/index.jade
185
+ - lib/generators/react_on_rails/templates/base/base/client/package.json.tt
186
+ - lib/generators/react_on_rails/templates/base/base/client/server.js
187
+ - lib/generators/react_on_rails/templates/base/base/client/webpack.client.base.config.js.tt
188
+ - lib/generators/react_on_rails/templates/base/base/client/webpack.client.hot.config.js.tt
189
+ - lib/generators/react_on_rails/templates/base/base/client/webpack.client.rails.config.js
190
+ - lib/generators/react_on_rails/templates/base/base/config/initializers/react_on_rails.rb
191
+ - lib/generators/react_on_rails/templates/base/base/lib/tasks/assets.rake.tt
192
+ - lib/generators/react_on_rails/templates/base/base/lib/tasks/linters.rake.tt
193
+ - lib/generators/react_on_rails/templates/base/base/package.json
194
+ - lib/generators/react_on_rails/templates/base/server_rendering/client/app/bundles/HelloWorld/startup/serverRegistration.jsx
195
+ - lib/generators/react_on_rails/templates/base/server_rendering/client/webpack.server.rails.config.js
196
+ - lib/generators/react_on_rails/templates/bootstrap/app/assets/stylesheets/_bootstrap-custom.scss
197
+ - lib/generators/react_on_rails/templates/bootstrap/client/assets/stylesheets/_post-bootstrap.scss
198
+ - lib/generators/react_on_rails/templates/bootstrap/client/assets/stylesheets/_pre-bootstrap.scss
199
+ - lib/generators/react_on_rails/templates/bootstrap/client/assets/stylesheets/_react-on-rails-sass-helper.scss
200
+ - lib/generators/react_on_rails/templates/bootstrap/client/bootstrap-sass.config.js
201
+ - lib/generators/react_on_rails/templates/dev_tests/.rspec
202
+ - lib/generators/react_on_rails/templates/dev_tests/spec/features/hello_world_spec.rb
203
+ - lib/generators/react_on_rails/templates/dev_tests/spec/rails_helper.rb
204
+ - lib/generators/react_on_rails/templates/dev_tests/spec/simplecov_helper.rb
205
+ - lib/generators/react_on_rails/templates/dev_tests/spec/spec_helper.rb
206
+ - lib/generators/react_on_rails/templates/heroku_deployment/.buildpacks
207
+ - lib/generators/react_on_rails/templates/heroku_deployment/Procfile
208
+ - lib/generators/react_on_rails/templates/heroku_deployment/config/puma.rb
209
+ - lib/generators/react_on_rails/templates/js_linters/client/.eslintignore
210
+ - lib/generators/react_on_rails/templates/js_linters/client/.eslintrc
211
+ - lib/generators/react_on_rails/templates/js_linters/client/.jscsrc
212
+ - lib/generators/react_on_rails/templates/no_redux/base/client/app/bundles/HelloWorld/components/HelloWorldWidget.jsx
213
+ - lib/generators/react_on_rails/templates/no_redux/base/client/app/bundles/HelloWorld/containers/HelloWorld.jsx
214
+ - lib/generators/react_on_rails/templates/no_redux/base/client/app/bundles/HelloWorld/startup/HelloWorldAppClient.jsx.tt
215
+ - lib/generators/react_on_rails/templates/no_redux/server_rendering/client/app/bundles/HelloWorld/startup/HelloWorldAppServer.jsx
216
+ - lib/generators/react_on_rails/templates/redux/base/client/app/bundles/HelloWorld/actions/helloWorldActionCreators.jsx
217
+ - lib/generators/react_on_rails/templates/redux/base/client/app/bundles/HelloWorld/components/HelloWorldWidget.jsx
218
+ - lib/generators/react_on_rails/templates/redux/base/client/app/bundles/HelloWorld/constants/helloWorldConstants.jsx
219
+ - lib/generators/react_on_rails/templates/redux/base/client/app/bundles/HelloWorld/containers/HelloWorld.jsx
220
+ - lib/generators/react_on_rails/templates/redux/base/client/app/bundles/HelloWorld/reducers/helloWorldReducer.jsx
221
+ - lib/generators/react_on_rails/templates/redux/base/client/app/bundles/HelloWorld/reducers/index.jsx
222
+ - lib/generators/react_on_rails/templates/redux/base/client/app/bundles/HelloWorld/startup/HelloWorldAppClient.jsx.tt
223
+ - lib/generators/react_on_rails/templates/redux/base/client/app/bundles/HelloWorld/store/helloWorldStore.jsx
224
+ - lib/generators/react_on_rails/templates/redux/base/client/app/lib/middlewares/loggerMiddleware.js
225
+ - lib/generators/react_on_rails/templates/redux/server_rendering/client/app/bundles/HelloWorld/startup/HelloWorldAppServer.jsx
226
+ - lib/generators/react_on_rails/templates/ruby_linters/.rubocop.yml
227
+ - lib/generators/react_on_rails/templates/ruby_linters/.scss-lint.yml
228
+ - lib/generators/react_on_rails/templates/ruby_linters/lib/tasks/brakeman.rake
229
+ - lib/generators/react_on_rails/templates/ruby_linters/lib/tasks/ci.rake
230
+ - lib/generators/react_on_rails/templates/ruby_linters/ruby-lint.yml
231
+ - lib/react_on_rails.rb
232
+ - lib/react_on_rails/configuration.rb
233
+ - lib/react_on_rails/engine.rb
234
+ - lib/react_on_rails/prerender_error.rb
235
+ - lib/react_on_rails/server_rendering_pool.rb
236
+ - lib/react_on_rails/version.rb
237
+ - package.json
238
+ - rakelib/docker.rake
239
+ - rakelib/dummy_apps.rake
240
+ - rakelib/example_type.rb
241
+ - rakelib/examples.rake
242
+ - rakelib/examples_config.yml
243
+ - rakelib/lint.rake
244
+ - rakelib/node_package.rake
245
+ - rakelib/run_rspec.rake
246
+ - rakelib/task_helpers.rb
247
+ - react_on_rails.gemspec
248
+ - ruby-lint.yml
132
249
  homepage: https://github.com/shakacode/react_on_rails
133
250
  licenses:
134
251
  - MIT