react_on_rails 1.2.2 → 2.0.0.beta.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (123) hide show
  1. checksums.yaml +4 -4
  2. metadata +5 -126
  3. data/.babelrc +0 -3
  4. data/.coveralls.yml +0 -1
  5. data/.dockerignore +0 -2
  6. data/.eslintignore +0 -5
  7. data/.eslintrc +0 -48
  8. data/.gitignore +0 -26
  9. data/.jscsrc +0 -26
  10. data/.rspec +0 -2
  11. data/.rubocop.yml +0 -70
  12. data/.scss-lint.yml +0 -205
  13. data/.travis.yml +0 -41
  14. data/CHANGELOG.md +0 -42
  15. data/Dockerfile_tests +0 -12
  16. data/Gemfile +0 -38
  17. data/README.md +0 -363
  18. data/Rakefile +0 -5
  19. data/app/assets/javascripts/react_on_rails.js +0 -241
  20. data/app/helpers/react_on_rails_helper.rb +0 -224
  21. data/docker-compose.yml +0 -11
  22. data/docs/LICENSE +0 -21
  23. data/docs/additional_reading/heroku_deployment.md +0 -23
  24. data/docs/additional_reading/manual_installation.md +0 -142
  25. data/docs/additional_reading/node_dependencies_and_npm.md +0 -29
  26. data/docs/additional_reading/optional_configuration.md +0 -34
  27. data/docs/additional_reading/react-and-redux.md +0 -36
  28. data/docs/additional_reading/react_router.md +0 -45
  29. data/docs/additional_reading/server_rendering_tips.md +0 -16
  30. data/docs/additional_reading/tips.md +0 -10
  31. data/docs/additional_reading/webpack.md +0 -46
  32. data/docs/code_of_conduct.md +0 -13
  33. data/docs/coding-style/linters.md +0 -64
  34. data/docs/coding-style/style.md +0 -42
  35. data/docs/contributing.md +0 -62
  36. data/docs/generator_testing.md +0 -20
  37. data/docs/install_and_releasing.md +0 -24
  38. data/docs/sample_generated_js/README.md +0 -4
  39. data/docs/sample_generated_js/client-generated.js +0 -12
  40. data/docs/sample_generated_js/server-generated.js +0 -25
  41. data/lib/generators/USAGE +0 -99
  42. data/lib/generators/react_on_rails/base_generator.rb +0 -198
  43. data/lib/generators/react_on_rails/bootstrap_generator.rb +0 -91
  44. data/lib/generators/react_on_rails/dev_tests_generator.rb +0 -30
  45. data/lib/generators/react_on_rails/generator_errors.rb +0 -15
  46. data/lib/generators/react_on_rails/generator_helper.rb +0 -58
  47. data/lib/generators/react_on_rails/heroku_deployment_generator.rb +0 -30
  48. data/lib/generators/react_on_rails/install_generator.rb +0 -111
  49. data/lib/generators/react_on_rails/js_linters_generator.rb +0 -19
  50. data/lib/generators/react_on_rails/react_no_redux_generator.rb +0 -41
  51. data/lib/generators/react_on_rails/react_with_redux_generator.rb +0 -52
  52. data/lib/generators/react_on_rails/ruby_linters_generator.rb +0 -33
  53. data/lib/generators/react_on_rails/templates/base/base/Procfile.dev.tt +0 -4
  54. data/lib/generators/react_on_rails/templates/base/base/REACT_ON_RAILS.md +0 -16
  55. data/lib/generators/react_on_rails/templates/base/base/app/controllers/hello_world_controller.rb +0 -5
  56. data/lib/generators/react_on_rails/templates/base/base/app/views/hello_world/index.html.erb.tt +0 -5
  57. data/lib/generators/react_on_rails/templates/base/base/client/.babelrc +0 -3
  58. data/lib/generators/react_on_rails/templates/base/base/client/REACT_ON_RAILS_CLIENT_README.md +0 -3
  59. data/lib/generators/react_on_rails/templates/base/base/client/app/bundles/HelloWorld/startup/globals.jsx.tt +0 -5
  60. data/lib/generators/react_on_rails/templates/base/base/client/index.jade +0 -15
  61. data/lib/generators/react_on_rails/templates/base/base/client/npm-shrinkwrap.json +0 -2907
  62. data/lib/generators/react_on_rails/templates/base/base/client/package.json.tt +0 -98
  63. data/lib/generators/react_on_rails/templates/base/base/client/server.js +0 -64
  64. data/lib/generators/react_on_rails/templates/base/base/client/webpack.client.base.config.js.tt +0 -67
  65. data/lib/generators/react_on_rails/templates/base/base/client/webpack.client.hot.config.js.tt +0 -67
  66. data/lib/generators/react_on_rails/templates/base/base/client/webpack.client.rails.config.js +0 -41
  67. data/lib/generators/react_on_rails/templates/base/base/config/initializers/react_on_rails.rb +0 -28
  68. data/lib/generators/react_on_rails/templates/base/base/lib/tasks/assets.rake.tt +0 -26
  69. data/lib/generators/react_on_rails/templates/base/base/lib/tasks/linters.rake.tt +0 -88
  70. data/lib/generators/react_on_rails/templates/base/base/package.json +0 -31
  71. data/lib/generators/react_on_rails/templates/base/server_rendering/client/app/bundles/HelloWorld/startup/serverGlobals.jsx +0 -3
  72. data/lib/generators/react_on_rails/templates/base/server_rendering/client/webpack.server.rails.config.js +0 -40
  73. data/lib/generators/react_on_rails/templates/bootstrap/app/assets/stylesheets/_bootstrap-custom.scss +0 -63
  74. data/lib/generators/react_on_rails/templates/bootstrap/client/assets/stylesheets/_post-bootstrap.scss +0 -10
  75. data/lib/generators/react_on_rails/templates/bootstrap/client/assets/stylesheets/_pre-bootstrap.scss +0 -8
  76. data/lib/generators/react_on_rails/templates/bootstrap/client/assets/stylesheets/_react-on-rails-sass-helper.scss +0 -19
  77. data/lib/generators/react_on_rails/templates/bootstrap/client/bootstrap-sass.config.js +0 -89
  78. data/lib/generators/react_on_rails/templates/dev_tests/.rspec +0 -2
  79. data/lib/generators/react_on_rails/templates/dev_tests/spec/features/hello_world_spec.rb +0 -25
  80. data/lib/generators/react_on_rails/templates/dev_tests/spec/rails_helper.rb +0 -57
  81. data/lib/generators/react_on_rails/templates/dev_tests/spec/simplecov_helper.rb +0 -21
  82. data/lib/generators/react_on_rails/templates/dev_tests/spec/spec_helper.rb +0 -95
  83. data/lib/generators/react_on_rails/templates/heroku_deployment/.buildpacks +0 -2
  84. data/lib/generators/react_on_rails/templates/heroku_deployment/Procfile +0 -1
  85. data/lib/generators/react_on_rails/templates/heroku_deployment/config/puma.rb +0 -15
  86. data/lib/generators/react_on_rails/templates/js_linters/client/.eslintignore +0 -1
  87. data/lib/generators/react_on_rails/templates/js_linters/client/.eslintrc +0 -48
  88. data/lib/generators/react_on_rails/templates/js_linters/client/.jscsrc +0 -18
  89. data/lib/generators/react_on_rails/templates/no_redux/base/client/app/bundles/HelloWorld/components/HelloWorldWidget.jsx +0 -39
  90. data/lib/generators/react_on_rails/templates/no_redux/base/client/app/bundles/HelloWorld/containers/HelloWorld.jsx +0 -33
  91. data/lib/generators/react_on_rails/templates/no_redux/base/client/app/bundles/HelloWorld/startup/HelloWorldAppClient.jsx.tt +0 -12
  92. data/lib/generators/react_on_rails/templates/no_redux/server_rendering/client/app/bundles/HelloWorld/startup/HelloWorldAppServer.jsx +0 -11
  93. data/lib/generators/react_on_rails/templates/redux/base/client/app/bundles/HelloWorld/actions/helloWorldActionCreators.jsx +0 -8
  94. data/lib/generators/react_on_rails/templates/redux/base/client/app/bundles/HelloWorld/components/HelloWorldWidget.jsx +0 -48
  95. data/lib/generators/react_on_rails/templates/redux/base/client/app/bundles/HelloWorld/constants/helloWorldConstants.jsx +0 -8
  96. data/lib/generators/react_on_rails/templates/redux/base/client/app/bundles/HelloWorld/containers/HelloWorld.jsx +0 -43
  97. data/lib/generators/react_on_rails/templates/redux/base/client/app/bundles/HelloWorld/reducers/helloWorldReducer.jsx +0 -21
  98. data/lib/generators/react_on_rails/templates/redux/base/client/app/bundles/HelloWorld/reducers/index.jsx +0 -14
  99. data/lib/generators/react_on_rails/templates/redux/base/client/app/bundles/HelloWorld/startup/HelloWorldAppClient.jsx.tt +0 -21
  100. data/lib/generators/react_on_rails/templates/redux/base/client/app/bundles/HelloWorld/store/helloWorldStore.jsx +0 -35
  101. data/lib/generators/react_on_rails/templates/redux/base/client/app/lib/middlewares/loggerMiddleware.js +0 -20
  102. data/lib/generators/react_on_rails/templates/redux/server_rendering/client/app/bundles/HelloWorld/startup/HelloWorldAppServer.jsx +0 -21
  103. data/lib/generators/react_on_rails/templates/ruby_linters/.rubocop.yml +0 -26
  104. data/lib/generators/react_on_rails/templates/ruby_linters/.scss-lint.yml +0 -205
  105. data/lib/generators/react_on_rails/templates/ruby_linters/lib/tasks/brakeman.rake +0 -17
  106. data/lib/generators/react_on_rails/templates/ruby_linters/lib/tasks/ci.rake +0 -33
  107. data/lib/generators/react_on_rails/templates/ruby_linters/ruby-lint.yml +0 -20
  108. data/lib/react_on_rails.rb +0 -6
  109. data/lib/react_on_rails/configuration.rb +0 -53
  110. data/lib/react_on_rails/engine.rb +0 -7
  111. data/lib/react_on_rails/prerender_error.rb +0 -31
  112. data/lib/react_on_rails/server_rendering_pool.rb +0 -111
  113. data/lib/react_on_rails/version.rb +0 -3
  114. data/rakelib/docker.rake +0 -33
  115. data/rakelib/dummy_apps.rake +0 -29
  116. data/rakelib/example_type.rb +0 -160
  117. data/rakelib/examples.rake +0 -103
  118. data/rakelib/examples_config.yml +0 -19
  119. data/rakelib/lint.rake +0 -37
  120. data/rakelib/run_rspec.rake +0 -65
  121. data/rakelib/task_helpers.rb +0 -44
  122. data/react_on_rails.gemspec +0 -31
  123. data/ruby-lint.yml +0 -24
@@ -1,3 +0,0 @@
1
- module ReactOnRails
2
- VERSION = "1.2.2"
3
- end
@@ -1,33 +0,0 @@
1
- namespace :docker do
2
- desc "Run Rubocop linter from docker"
3
- task :rubocop do
4
- sh "docker-compose run lint rake lint:rubocop"
5
- end
6
-
7
- desc "Run ruby-lint linter from docker"
8
- task :ruby do
9
- sh "docker-compose run lint rake lint:ruby"
10
- end
11
-
12
- desc "Run scss-lint linter from docker"
13
- task :scss do
14
- sh "docker-compose run lint rake lint:scss"
15
- end
16
-
17
- desc "Run eslint linter from docker"
18
- task :eslint do
19
- sh "docker-compose run lint rake lint:eslint"
20
- end
21
-
22
- desc "Run jscs linter from docker"
23
- task :jscs do
24
- sh "docker-compose run lint rake lint:jscs"
25
- end
26
- desc "Run all linting from docker"
27
- task :lint do
28
- sh "docker-compose run lint rake lint"
29
- end
30
- end
31
-
32
- desc "Runs all linters from docker. Run `rake -D docker` to see all available lint options"
33
- task docker: ["docker:lint"]
@@ -1,29 +0,0 @@
1
- require_relative "task_helpers"
2
- include ReactOnRails::TaskHelpers
3
-
4
- namespace :dummy_apps do
5
- task :dummy_app do
6
- dummy_app_dir = File.join(gem_root, "spec/dummy")
7
- bundle_install_in(dummy_app_dir)
8
- dummy_app_client_dir = File.join(dummy_app_dir, "client")
9
- sh_in_dir(dummy_app_client_dir, ["npm install",
10
- "$(npm bin)/webpack --config webpack.server.js",
11
- "$(npm bin)/webpack --config webpack.client.js"])
12
- end
13
-
14
- task :dummy_react_013_app do
15
- dummy_app_dir = File.join(gem_root, "spec/dummy-react-013")
16
- bundle_install_in(dummy_app_dir)
17
- dummy_app_client_dir = File.join(dummy_app_dir, "client")
18
- sh_in_dir(dummy_app_client_dir, ["npm install",
19
- "$(npm bin)/webpack --config webpack.server.js",
20
- "$(npm bin)/webpack --config webpack.client.js"])
21
- end
22
-
23
- task dummy_apps: [:dummy_app, :dummy_react_013_app] do
24
- puts "Prepared all Dummy Apps"
25
- end
26
- end
27
-
28
- desc "Prepares all dummy apps by installing dependencies"
29
- task dummy_apps: ["dummy_apps:dummy_apps"]
@@ -1,160 +0,0 @@
1
- require "rake"
2
- require "pathname"
3
-
4
- require_relative "task_helpers"
5
-
6
- # Defines the ExampleType class, where each object represents a unique type of example
7
- # app that we can generate.
8
- module ReactOnRails
9
- module TaskHelpers
10
- class ExampleType
11
- def self.all
12
- @example_types ||= []
13
- end
14
-
15
- def self.namespace_name
16
- "examples"
17
- end
18
-
19
- attr_reader :name, :generator_options
20
-
21
- def initialize(name:, generator_options:)
22
- @name = name
23
- @generator_options = generator_options
24
- self.class.all << self
25
- end
26
-
27
- def name_pretty
28
- "#{@name} example app"
29
- end
30
-
31
- def server_rendering?
32
- generator_options.include?("--server-rendering")
33
- end
34
-
35
- def dir
36
- File.join(examples_dir, name)
37
- end
38
-
39
- def dir_exist?
40
- Dir.exist?(dir)
41
- end
42
-
43
- def client_dir
44
- File.join(dir, "client")
45
- end
46
-
47
- def source_package_json
48
- File.join(gem_root, "lib/generators/react_on_rails/templates/base/base/client/package.json.tt")
49
- end
50
-
51
- def node_modules_dir
52
- File.join(client_dir, "node_modules")
53
- end
54
-
55
- def webpack_bundles_dir
56
- File.join(dir, "app", "assets", "javascripts", "generated")
57
- end
58
-
59
- def webpack_bundles
60
- bundles = []
61
- bundles << File.join(webpack_bundles_dir, "app-bundle.js")
62
- bundles << File.join(webpack_bundles_dir, "server-bundle.js") if server_rendering?
63
- bundles << File.join(webpack_bundles_dir, "vendor-bundle.js")
64
- end
65
-
66
- def gemfile
67
- File.join(dir, "Gemfile")
68
- end
69
-
70
- def gemfile_lock
71
- "#{gemfile}.lock"
72
- end
73
-
74
- def package_json
75
- File.join(client_dir, "package.json")
76
- end
77
-
78
- # Gems we need to add to the Gemfile before bundle installing
79
- def required_gems
80
- relative_gem_root = Pathname(gem_root).relative_path_from(Pathname(dir))
81
- ["gem 'react_on_rails', path: '#{relative_gem_root}'"]
82
- end
83
-
84
- # Options we pass when running `rails new` from the command-line
85
- def rails_options
86
- "--skip-bundle --skip-spring --skip-git --skip-test-unit --skip-active-record"
87
- end
88
-
89
- # Methods for retrieving the name of a task specific to the example type
90
- %w(gen prepare clean clobber npm_install build_webpack_bundles).each do |task_type|
91
- method = "#{task_type}_task_name" # ex: `clean_task_name`
92
- task_name = "#{task_type}_#{name}" # ex: `clean_basic`
93
-
94
- define_method(method) { "#{self.class.namespace_name}:#{task_name}" }
95
- define_method("#{method}_short") { task_name }
96
- end
97
-
98
- def rspec_task_name_short
99
- "example_#{name}"
100
- end
101
-
102
- def rspec_task_name
103
- "run_rspec:#{rspec_task_name_short}"
104
- end
105
-
106
- def source_files
107
- FileList.new(all_files_in_dir(generators_source_dir))
108
- end
109
-
110
- # Note: we need to explicitly declare a file we know is supposed to be there
111
- # to indicate that the example is in need of being rebuilt in the case of its absence.
112
- def generated_files
113
- FileList.new(all_files_in_dir(dir)) do |fl|
114
- fl.include(gemfile) # explicitly declared file (dependency of Gemfile.lock)
115
- fl.include(package_json) # explicitly declared file (dependency of NPM Install)
116
- fl.exclude(%r{client(/node_modules(.+)?)?$}) # leave node_modules folder
117
- end
118
- end
119
-
120
- def generated_client_files
121
- generated_files.exclude { |f| !f.start_with?(client_dir) }
122
- end
123
-
124
- # generated files plus explicitly included files resulting from running
125
- # bundle install, npm install, and generating the webpack bundles
126
- def prepared_files
127
- generated_files
128
- .include(webpack_bundles)
129
- .include(node_modules_dir)
130
- .include(gemfile_lock)
131
- end
132
-
133
- def clean_files
134
- generated_files
135
- end
136
-
137
- # Assumes we are inside client folder
138
- def build_webpack_bundles_shell_commands
139
- webpack_command = File.join("$(npm bin)", "webpack")
140
- shell_commands = []
141
- shell_commands << "#{webpack_command} --config webpack.server.rails.config.js" if server_rendering?
142
- shell_commands << "#{webpack_command} --config webpack.client.rails.config.js"
143
- end
144
-
145
- # Assumes we are inside a rails app's folder and necessary gems have been installed
146
- def generator_shell_commands
147
- shell_commands = []
148
- shell_commands << "rails generate react_on_rails:install #{generator_options}"
149
- shell_commands << "rails generate react_on_rails:dev_tests #{generator_options}"
150
- end
151
-
152
- private
153
-
154
- # Defines globs that scoop up all files (including dotfiles) in given directory
155
- def all_files_in_dir(p_dir)
156
- [File.join(p_dir, "**", "*"), File.join(p_dir, "**", ".*")]
157
- end
158
- end
159
- end
160
- end
@@ -1,103 +0,0 @@
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
@@ -1,19 +0,0 @@
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
@@ -1,37 +0,0 @@
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"]
@@ -1,65 +0,0 @@
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