react_on_rails 4.0.0.beta.1 → 4.0.0.beta.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.eslintignore +1 -0
- data/.gitignore +2 -1
- data/.jscsrc +1 -0
- data/.rubocop.yml +3 -0
- data/.travis.yml +1 -1
- data/CHANGELOG.md +12 -4
- data/Gemfile +0 -5
- data/README.md +10 -3
- data/Rakefile +3 -0
- data/app/helpers/react_on_rails_helper.rb +21 -18
- data/docs/additional_reading/manual_installation.md +2 -2
- data/docs/additional_reading/optional_configuration.md +1 -1
- data/docs/additional_reading/rspec_configuration.md +3 -1
- data/docs/additional_reading/turbolinks.md +4 -3
- data/docs/contributing.md +1 -1
- data/docs/tutorial-v2.md +1 -1
- data/lib/generators/react_on_rails/base_generator.rb +20 -16
- data/lib/generators/react_on_rails/bootstrap_generator.rb +1 -1
- data/lib/generators/react_on_rails/templates/base/base/Procfile.dev-hot.tt +1 -1
- data/lib/generators/react_on_rails/templates/base/base/Procfile.dev.tt +1 -1
- data/lib/generators/react_on_rails/templates/base/base/client/webpack.client.rails.config.js +1 -1
- data/lib/generators/react_on_rails/templates/base/base/config/initializers/react_on_rails.rb.tt +11 -1
- data/lib/generators/react_on_rails/templates/base/base/lib/tasks/assets.rake.tt +1 -1
- data/lib/generators/react_on_rails/templates/base/server_rendering/client/webpack.server.rails.config.js +1 -1
- data/lib/react_on_rails/configuration.rb +51 -11
- data/lib/react_on_rails/controller.rb +2 -2
- data/lib/react_on_rails/server_rendering_pool.rb +2 -2
- data/lib/react_on_rails/test_helper.rb +31 -25
- data/lib/react_on_rails/test_helper/ensure_assets_compiled.rb +84 -34
- data/lib/react_on_rails/test_helper/webpack_assets_compiler.rb +20 -12
- data/lib/react_on_rails/test_helper/webpack_assets_status_checker.rb +35 -32
- data/lib/react_on_rails/test_helper/webpack_process_checker.rb +17 -13
- data/lib/react_on_rails/utils.rb +5 -0
- data/lib/react_on_rails/version.rb +1 -1
- data/package.json +1 -2
- data/rakelib/node_package.rake +1 -8
- data/rakelib/run_rspec.rake +29 -10
- metadata +3 -3
@@ -1,15 +1,50 @@
|
|
1
1
|
module ReactOnRails
|
2
2
|
def self.configure
|
3
3
|
yield(configuration)
|
4
|
+
setup_config_values
|
4
5
|
end
|
5
6
|
|
6
|
-
|
7
|
-
|
8
|
-
|
7
|
+
DEFAULT_GENERATED_ASSETS_DIR = File.join(%w(app assets webpack)).freeze
|
8
|
+
|
9
|
+
def self.setup_config_values
|
10
|
+
if @configuration.webpack_generated_files.empty?
|
11
|
+
files = ["client-bundle.js"]
|
12
|
+
if @configuration.server_bundle_js_file.present?
|
13
|
+
files << @configuration.server_bundle_js_file
|
14
|
+
end
|
15
|
+
@configuration.webpack_generated_files = files
|
16
|
+
end
|
17
|
+
|
18
|
+
if @configuration.generated_assets_dirs.present?
|
19
|
+
puts "[DEPRECATION] ReactOnRails: Use config.generated_assets_dir rather than "\
|
20
|
+
"generated_assets_dirs"
|
21
|
+
if @configuration.generated_assets_dir.blank?
|
22
|
+
@configuration.generated_assets_dir = @configuration.generated_assets_dirs
|
23
|
+
else
|
24
|
+
puts "[DEPRECATION] ReactOnRails. You have both generated_assets_dirs and "\
|
25
|
+
"generated_assets_dir defined. Define ONLY generated_assets_dir"
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
if @configuration.generated_assets_dir.blank?
|
30
|
+
@configuration.generated_assets_dir = DEFAULT_GENERATED_ASSETS_DIR
|
31
|
+
puts "ReactOnRails: Set generated_assets_dir to default: #{DEFAULT_GENERATED_ASSETS_DIR}"
|
32
|
+
end
|
33
|
+
|
34
|
+
if @configuration.server_bundle_js_file.include?(File::SEPARATOR)
|
35
|
+
puts "[DEPRECATION] ReactOnRails: remove path from server_bundle_js_file in configuration. "\
|
36
|
+
"All generated files must go in #{@configuration.generated_assets_dir}"
|
37
|
+
@configuration.server_bundle_js_file = File.basename(@configuration.server_bundle_js_file)
|
38
|
+
end
|
39
|
+
end
|
9
40
|
|
10
41
|
def self.configuration
|
11
42
|
@configuration ||= Configuration.new(
|
12
|
-
generated_assets_dirs:
|
43
|
+
generated_assets_dirs: nil,
|
44
|
+
|
45
|
+
# generated_assets_dirs is deprecated
|
46
|
+
generated_assets_dir: "",
|
47
|
+
|
13
48
|
server_bundle_js_file: "",
|
14
49
|
prerender: false,
|
15
50
|
replay_console: true,
|
@@ -19,7 +54,9 @@ module ReactOnRails
|
|
19
54
|
development_mode: Rails.env.development?,
|
20
55
|
server_renderer_pool_size: 1,
|
21
56
|
server_renderer_timeout: 20,
|
22
|
-
skip_display_none: false
|
57
|
+
skip_display_none: false,
|
58
|
+
webpack_generated_files: []
|
59
|
+
)
|
23
60
|
end
|
24
61
|
|
25
62
|
class Configuration
|
@@ -27,18 +64,19 @@ module ReactOnRails
|
|
27
64
|
:trace, :development_mode,
|
28
65
|
:logging_on_server, :server_renderer_pool_size,
|
29
66
|
:server_renderer_timeout, :raise_on_prerender_error,
|
30
|
-
:skip_display_none, :generated_assets_dirs
|
67
|
+
:skip_display_none, :generated_assets_dirs, :generated_assets_dir,
|
68
|
+
:webpack_generated_files
|
31
69
|
|
32
70
|
def initialize(server_bundle_js_file: nil, prerender: nil, replay_console: nil,
|
33
71
|
trace: nil, development_mode: nil,
|
34
72
|
logging_on_server: nil, server_renderer_pool_size: nil,
|
35
73
|
server_renderer_timeout: nil, raise_on_prerender_error: nil,
|
36
|
-
skip_display_none: nil, generated_assets_dirs:
|
37
|
-
|
38
|
-
|
39
|
-
end
|
40
|
-
|
74
|
+
skip_display_none: nil, generated_assets_dirs: nil,
|
75
|
+
generated_assets_dir: nil, webpack_generated_files: nil)
|
76
|
+
self.server_bundle_js_file = server_bundle_js_file
|
41
77
|
self.generated_assets_dirs = generated_assets_dirs
|
78
|
+
self.generated_assets_dir = generated_assets_dir
|
79
|
+
|
42
80
|
self.prerender = prerender
|
43
81
|
self.replay_console = replay_console
|
44
82
|
self.logging_on_server = logging_on_server
|
@@ -54,6 +92,8 @@ module ReactOnRails
|
|
54
92
|
# Server rendering:
|
55
93
|
self.server_renderer_pool_size = self.development_mode ? 1 : server_renderer_pool_size
|
56
94
|
self.server_renderer_timeout = server_renderer_timeout # seconds
|
95
|
+
|
96
|
+
self.webpack_generated_files = webpack_generated_files
|
57
97
|
end
|
58
98
|
end
|
59
99
|
end
|
@@ -12,8 +12,8 @@ module ReactOnRails
|
|
12
12
|
def redux_store(store_name, props)
|
13
13
|
redux_store_data = { store_name: store_name,
|
14
14
|
props: props }
|
15
|
-
@
|
16
|
-
@
|
15
|
+
@registered_stores_defer_render ||= []
|
16
|
+
@registered_stores_defer_render << redux_store_data
|
17
17
|
end
|
18
18
|
end
|
19
19
|
end
|
@@ -13,7 +13,7 @@ module ReactOnRails
|
|
13
13
|
|
14
14
|
def self.reset_pool_if_server_bundle_was_modified
|
15
15
|
return unless ReactOnRails.configuration.development_mode
|
16
|
-
file_mtime = File.mtime(ReactOnRails.
|
16
|
+
file_mtime = File.mtime(ReactOnRails::Utils.default_server_bundle_js_file_path)
|
17
17
|
@server_bundle_timestamp ||= file_mtime
|
18
18
|
return if @server_bundle_timestamp == file_mtime
|
19
19
|
ReactOnRails::ServerRenderingPool.reset_pool
|
@@ -70,7 +70,7 @@ module ReactOnRails
|
|
70
70
|
end
|
71
71
|
|
72
72
|
def create_js_context
|
73
|
-
server_js_file = ReactOnRails.
|
73
|
+
server_js_file = ReactOnRails::Utils.default_server_bundle_js_file_path
|
74
74
|
if server_js_file.present? && File.exist?(server_js_file)
|
75
75
|
bundle_js_code = File.read(server_js_file)
|
76
76
|
base_js_code = <<-JS
|
@@ -13,9 +13,10 @@ module ReactOnRails
|
|
13
13
|
# RSpec.configure do |config|
|
14
14
|
# ReactOnRails::TestHelper.configure_rspec_to_compile_assets(config)
|
15
15
|
#
|
16
|
-
# You can pass an RSpec metatag as an
|
17
|
-
# if you want this helper to run on examples other than where `js: true`
|
18
|
-
# will compile webpack files at most
|
16
|
+
# You can pass an RSpec metatag as an list of parameter to this helper method
|
17
|
+
# if you want this helper to run on examples other than where `js: true` or
|
18
|
+
# `server_rendering: true` (default). The helper will compile webpack files at most
|
19
|
+
# once per test run.
|
19
20
|
#
|
20
21
|
# If you do not want to be slowed down by re-compiling webpack assets from scratch every test
|
21
22
|
# run, you can call `npm run build:client` (and `npm run build:server` if doing server
|
@@ -24,8 +25,17 @@ module ReactOnRails
|
|
24
25
|
# to be running.
|
25
26
|
#
|
26
27
|
# See docs/additional_reading/rspec_configuration.md for more info
|
27
|
-
|
28
|
-
|
28
|
+
#
|
29
|
+
# Params:
|
30
|
+
# config - config for rspec
|
31
|
+
# metatags - metatags to add the ensure_assets_compiled check.
|
32
|
+
# Default is :js, :server_rendering
|
33
|
+
def self.configure_rspec_to_compile_assets(config, *metatags)
|
34
|
+
metatags = [:js, :server_rendering] if metatags.empty?
|
35
|
+
|
36
|
+
metatags.each do |metatag|
|
37
|
+
config.before(:example, metatag) { ReactOnRails::TestHelper.ensure_assets_compiled }
|
38
|
+
end
|
29
39
|
end
|
30
40
|
|
31
41
|
# Main entry point to ensuring assets are compiled. See `configure_rspec_to_compile_assets` for
|
@@ -38,36 +48,32 @@ module ReactOnRails
|
|
38
48
|
# defaults to ReactOnRails::TestHelper::WebpackProcessChecker
|
39
49
|
# webpack_assets_compiler: provide one method: `def compile`
|
40
50
|
# defaults to ReactOnRails::TestHelper::WebpackAssetsCompiler
|
41
|
-
#
|
42
|
-
#
|
43
|
-
#
|
44
|
-
#
|
51
|
+
# client_dir and generated_assets_dir are passed into the default webpack_assets_status_checker if you
|
52
|
+
# don't provide one.
|
53
|
+
# webpack_generated_files List of files to check for up-to-date-status, defaulting to
|
54
|
+
# webpack_generated_files in your configuration
|
45
55
|
def self.ensure_assets_compiled(webpack_assets_status_checker: nil,
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
56
|
+
webpack_assets_compiler: nil,
|
57
|
+
webpack_process_checker: nil,
|
58
|
+
client_dir: nil,
|
59
|
+
generated_assets_dir: nil,
|
60
|
+
webpack_generated_files: nil)
|
51
61
|
|
52
62
|
if webpack_assets_status_checker.nil?
|
53
63
|
client_dir ||= Rails.root.join("client")
|
54
|
-
|
55
|
-
|
64
|
+
generated_assets_dir ||= ReactOnRails.configuration.generated_assets_dir
|
65
|
+
webpack_generated_files ||= ReactOnRails.configuration.webpack_generated_files
|
56
66
|
|
57
|
-
if server_bundle_js_file.present?
|
58
|
-
dir = File.dirname(server_bundle_js_file)
|
59
|
-
compiled_dirs ||= []
|
60
|
-
compiled_dirs << dir unless compiled_dirs.include?(dir)
|
61
|
-
end
|
62
67
|
webpack_assets_status_checker ||=
|
63
68
|
WebpackAssetsStatusChecker.new(client_dir: client_dir,
|
64
|
-
|
65
|
-
|
69
|
+
generated_assets_dir: generated_assets_dir,
|
70
|
+
webpack_generated_files: webpack_generated_files
|
71
|
+
)
|
66
72
|
|
67
73
|
unless @printed_once
|
68
74
|
puts
|
69
|
-
puts "====> React On Rails: Checking
|
70
|
-
|
75
|
+
puts "====> React On Rails: Checking #{webpack_assets_status_checker.generated_assets_dir} for "\
|
76
|
+
"outdated/missing bundles"
|
71
77
|
puts
|
72
78
|
@printed_once = true
|
73
79
|
end
|
@@ -1,6 +1,8 @@
|
|
1
1
|
module ReactOnRails
|
2
2
|
module TestHelper
|
3
3
|
class EnsureAssetsCompiled
|
4
|
+
SECONDS_TO_WAIT = 10
|
5
|
+
|
4
6
|
class << self
|
5
7
|
attr_accessor :has_been_run
|
6
8
|
@has_been_run = false
|
@@ -20,58 +22,106 @@ module ReactOnRails
|
|
20
22
|
@webpack_process_checker = webpack_process_checker
|
21
23
|
end
|
22
24
|
|
25
|
+
# rubocop:disable Metrics/AbcSize
|
26
|
+
# rubocop:disable Metrics/CyclomaticComplexity
|
27
|
+
# rubocop:disable Metrics/PerceivedComplexity
|
28
|
+
|
29
|
+
# Several Scenarios:
|
30
|
+
# 1. No webpack watch processes for static assets and files are mising or out of date.
|
31
|
+
# 2. Only webpack watch process for server bundle as we're the hot reloading setup.
|
32
|
+
# 3. For whatever reason, the watch processes are running, but some clean script removed
|
33
|
+
# the generated bundles.
|
23
34
|
def call
|
35
|
+
# Only check this ONCE during a test run
|
24
36
|
return if self.class.has_been_run
|
25
37
|
|
26
|
-
|
27
|
-
|
28
|
-
break if webpack_assets_status_checker.up_to_date?
|
38
|
+
# Be sure we don't do this again.
|
39
|
+
self.class.has_been_run = true
|
29
40
|
|
30
|
-
|
41
|
+
stale_gen_files = webpack_assets_status_checker.stale_generated_webpack_files
|
31
42
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
43
|
+
# All done if no stale files!
|
44
|
+
return if stale_gen_files.empty?
|
45
|
+
|
46
|
+
# Inform the developer that we're ensuring gen assets are ready.
|
47
|
+
puts_start_compile_check_message(stale_gen_files)
|
37
48
|
|
38
|
-
|
39
|
-
|
40
|
-
|
49
|
+
hot_running = webpack_process_checker.hot_running?
|
50
|
+
client_running = webpack_process_checker.client_running?
|
51
|
+
server_running = webpack_process_checker.server_running?
|
52
|
+
already_compiled_client_file = false
|
53
|
+
|
54
|
+
# Check if running "hot" and not running a process to statically compile the client files.
|
55
|
+
if hot_running && !client_running
|
56
|
+
puts "Appears you're running hot reloading and are not rebuilding client files "\
|
57
|
+
"automatically. We'll try rebuilding only your client files first."
|
58
|
+
webpack_assets_compiler.compile_client(stale_gen_files)
|
59
|
+
already_compiled_client_file = true
|
60
|
+
|
61
|
+
stale_gen_files = webpack_assets_status_checker.stale_generated_webpack_files
|
62
|
+
|
63
|
+
# Return if we're all done!
|
64
|
+
return if stale_gen_files.empty?
|
65
|
+
end
|
66
|
+
|
67
|
+
loop_count = 0
|
68
|
+
if (already_compiled_client_file && server_running) ||
|
69
|
+
(!already_compiled_client_file && client_running)
|
70
|
+
puts "Waiting #{SECONDS_TO_WAIT} for webpack watch processes to compile files"
|
71
|
+
loop do
|
72
|
+
sleep 1
|
73
|
+
stale_gen_files = webpack_assets_status_checker.stale_generated_webpack_files
|
74
|
+
loop_count += 1
|
75
|
+
break if loop_count == SECONDS_TO_WAIT || stale_gen_files.empty?
|
41
76
|
end
|
42
77
|
end
|
43
78
|
|
44
|
-
|
79
|
+
final_compilation_check(already_compiled_client_file, client_running, server_running, stale_gen_files)
|
45
80
|
end
|
46
81
|
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
puts "\n\nReact on Rails is ensuring your JavaScript generated files are up to date!"
|
51
|
-
end
|
82
|
+
# rubocop:enable Metrics/AbcSize
|
83
|
+
# rubocop:enable Metrics/CyclomaticComplexity
|
84
|
+
# rubocop:enable Metrics/PerceivedComplexity
|
52
85
|
|
53
|
-
def
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
else
|
60
|
-
puts <<-MSG
|
86
|
+
def final_compilation_check(already_compiled_client_file, client_running, server_running, stale_gen_files)
|
87
|
+
return unless stale_gen_files.present?
|
88
|
+
if client_running || server_running
|
89
|
+
puts <<-MSG
|
90
|
+
Arghhhhhh! We still have the following stale generated files after waiting for Webpack to compile:
|
91
|
+
#{stale_gen_files.join("\n")}
|
61
92
|
|
62
|
-
|
63
|
-
|
93
|
+
This can happen if you removed the generated files after they've been created by your webpack
|
94
|
+
watch processes, such by running a clean on your generated bundles before starting your tests.
|
95
|
+
MSG
|
96
|
+
end
|
64
97
|
|
65
|
-
|
98
|
+
puts <<-MSG
|
66
99
|
|
67
|
-
|
68
|
-
|
100
|
+
If you are frequently running tests, you can run webpack in watch mode for static assets to
|
101
|
+
speed up this process. See the official documentation:
|
102
|
+
https://github.com/shakacode/react_on_rails/blob/master/docs/additional_reading/rspec_configuration.md
|
103
|
+
MSG
|
69
104
|
|
70
|
-
|
71
|
-
|
72
|
-
|
105
|
+
if already_compiled_client_file
|
106
|
+
# So only do serer file
|
107
|
+
webpack_assets_compiler.compile_server(stale_gen_files)
|
108
|
+
else
|
109
|
+
webpack_assets_compiler.compile_as_necessary(stale_gen_files)
|
73
110
|
end
|
74
111
|
end
|
112
|
+
|
113
|
+
def puts_start_compile_check_message(stale_files)
|
114
|
+
server_msg = Utils.server_rendering_is_enabled? ? "and `build:server`" : ""
|
115
|
+
puts <<-MSG
|
116
|
+
|
117
|
+
Detected are the following stale generated files:
|
118
|
+
#{stale_files.join("\n")}
|
119
|
+
|
120
|
+
React on Rails will ensure your JavaScript generated files are up to date, using your
|
121
|
+
top level package.json `build:client` #{server_msg} commands.
|
122
|
+
|
123
|
+
MSG
|
124
|
+
end
|
75
125
|
end
|
76
126
|
end
|
77
127
|
end
|
@@ -3,23 +3,22 @@
|
|
3
3
|
module ReactOnRails
|
4
4
|
module TestHelper
|
5
5
|
class WebpackAssetsCompiler
|
6
|
-
def
|
7
|
-
|
8
|
-
|
6
|
+
def compile_as_necessary(stale_files)
|
7
|
+
compile_client(stale_files)
|
8
|
+
compile_server(stale_files)
|
9
|
+
end
|
10
|
+
|
11
|
+
def compile_client(stale_files)
|
12
|
+
compile_type(:client) if needs_client_compile?(stale_files)
|
13
|
+
end
|
14
|
+
|
15
|
+
def compile_server(stale_files)
|
16
|
+
compile_type(:server) if needs_server_compile?(stale_files)
|
9
17
|
end
|
10
18
|
|
11
19
|
private
|
12
20
|
|
13
21
|
def compile_type(type)
|
14
|
-
unless @printed_msg
|
15
|
-
puts <<-MSG
|
16
|
-
If you are frequently running tests, you can run webpack in watch mode to speed up this process.
|
17
|
-
See the official documentation:
|
18
|
-
https://github.com/shakacode/react_on_rails/blob/master/docs/additional_reading/rspec_configuration.md
|
19
|
-
MSG
|
20
|
-
@printed_msg = true
|
21
|
-
end
|
22
|
-
|
23
22
|
puts "\nBuilding Webpack #{type}-rendering assets..."
|
24
23
|
|
25
24
|
build_output = `cd client && npm run build:#{type}`
|
@@ -28,6 +27,15 @@ https://github.com/shakacode/react_on_rails/blob/master/docs/additional_reading/
|
|
28
27
|
|
29
28
|
puts "Completed building Webpack #{type}-rendering assets."
|
30
29
|
end
|
30
|
+
|
31
|
+
def needs_client_compile?(stale_files)
|
32
|
+
!stale_files.all? { |name| name.include?("server") }
|
33
|
+
end
|
34
|
+
|
35
|
+
def needs_server_compile?(stale_files)
|
36
|
+
return false unless Utils.server_rendering_is_enabled?
|
37
|
+
stale_files.any? { |name| name.include?("server") }
|
38
|
+
end
|
31
39
|
end
|
32
40
|
end
|
33
41
|
end
|
@@ -6,51 +6,54 @@ require "fileutils"
|
|
6
6
|
module ReactOnRails
|
7
7
|
module TestHelper
|
8
8
|
class WebpackAssetsStatusChecker
|
9
|
-
|
9
|
+
# client_dir is typically /client, where all client files go
|
10
|
+
attr_reader :client_dir, :generated_assets_dir
|
10
11
|
|
11
|
-
def initialize(
|
12
|
-
@
|
13
|
-
@client_dir =
|
14
|
-
@
|
15
|
-
@last_stale_files = ""
|
12
|
+
def initialize(generated_assets_dir:, client_dir:, webpack_generated_files:)
|
13
|
+
@generated_assets_dir = generated_assets_dir
|
14
|
+
@client_dir = client_dir
|
15
|
+
@webpack_generated_files = webpack_generated_files
|
16
16
|
end
|
17
17
|
|
18
|
-
def
|
19
|
-
|
20
|
-
all_compiled_assets.
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
return [] unless assets_exist?
|
27
|
-
result = []
|
28
|
-
all_compiled_assets.all? do |asset|
|
29
|
-
result += whats_not_up_to_date_worker(asset, client_files)
|
18
|
+
def stale_generated_webpack_files
|
19
|
+
most_recent_mtime = find_most_recent_mtime
|
20
|
+
all_compiled_assets.each_with_object([]) do |webpack_generated_file, stale_gen_list|
|
21
|
+
if !File.exist?(webpack_generated_file) ||
|
22
|
+
File.mtime(webpack_generated_file) < most_recent_mtime
|
23
|
+
stale_gen_list << webpack_generated_file
|
24
|
+
end
|
25
|
+
stale_gen_list
|
30
26
|
end
|
31
|
-
result.uniq
|
32
27
|
end
|
33
28
|
|
34
29
|
private
|
35
30
|
|
36
|
-
def
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
old_list.each do |old|
|
41
|
-
if File.exist?(old)
|
42
|
-
not_up_to_date << old unless new_time > File.mtime(old)
|
43
|
-
end
|
31
|
+
def find_most_recent_mtime
|
32
|
+
client_files.reduce(1.year.ago) do |newest_time, file|
|
33
|
+
mt = File.mtime(file)
|
34
|
+
mt > newest_time ? mt : newest_time
|
44
35
|
end
|
45
|
-
not_up_to_date
|
46
36
|
end
|
47
37
|
|
48
38
|
def all_compiled_assets
|
49
|
-
|
50
|
-
|
51
|
-
|
39
|
+
@all_compiled_assets ||= begin
|
40
|
+
webpack_generated_files = @webpack_generated_files.map do |file|
|
41
|
+
File.join(@generated_assets_dir, file)
|
42
|
+
end
|
43
|
+
if webpack_generated_files.present?
|
44
|
+
webpack_generated_files
|
45
|
+
else
|
46
|
+
file_list = make_file_list(make_globs(generated_assets_dir)).to_ary
|
47
|
+
puts "V" * 80
|
48
|
+
puts "Please define config.webpack_generated_files (array) so the test helper knows "\
|
49
|
+
"which files are required."
|
50
|
+
puts "Detected the possible following files to check for webpack compilation in "\
|
51
|
+
"#{generated_assets_dir}"
|
52
|
+
puts file_list.join("\n")
|
53
|
+
puts "^" * 80
|
54
|
+
file_list
|
55
|
+
end
|
52
56
|
end
|
53
|
-
file_list
|
54
57
|
end
|
55
58
|
|
56
59
|
def client_files
|