rails_build 2.4.4 → 2.4.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 85f445833fa2d2a73f3fdcc41602c12a29b0710c3efe1f22fb3ca2255f28d0b3
4
- data.tar.gz: c763470f51741a1082165bc9d4d67fe6528904bc5ac4598fad840a1b3025f702
3
+ metadata.gz: d11ce797010e3a72acc5ec8128e8ebaf87e11eedabda3f8a3d26b0ded5a50ca1
4
+ data.tar.gz: 88aef1d5d7f3c9b977cff618669ee54f2804057cbe5a179fbe70ab46da639f62
5
5
  SHA512:
6
- metadata.gz: 3c1776c7af9d7b84230b00d573503897a90109f01c77ff4e039dce651dd7f4bb01333b30efe773f3dca9bf7b5b6a014e8211683e0b13a52b4b79cc61f13fbee6
7
- data.tar.gz: c546c9901cfc78d879e6089e1a4ff59061e5b62f67706f9c712b035aff35e17e350d536323e8be2314b84333a21bc69b30667bf07edb4e43fe011504015c3315
6
+ metadata.gz: e30d7e8f5895d7ddb019ef1ac7d3e47edd9204850ee84fb42cecef442bfbc2bd3ca4be3b4ff17bf79dc3a9358094468cdf8597b43b3c8048bed0d14eb4d442a6
7
+ data.tar.gz: 4bfbdcaf7a3b32cce567648026477b6262150129abb3ed0e6657fa022b9edcbad1b819967a801d9577690f21ed7943a283796f99d5bb521fef98c120e54f1526
data/README.md CHANGED
@@ -163,6 +163,26 @@
163
163
  and/or to utilize the entire Rails ecosystem, it's docs and gems, to build
164
164
  sophisticated sites without needing to learn yet another framework.
165
165
 
166
+ # SPEED
167
+
168
+ `rails_build` is as fast as your rails app. optimizing the build means
169
+ optimizing your app so, the internet abounds with advice here, and all the
170
+ production stuff one might normally do, caching, etc, is applicable for
171
+ cranking things up. that being said, on a 'normal' laptop one should expect
172
+ to crank through 1000 urls in 10s of seconds. this is what is meant by,
173
+ _"good enough"_.
174
+
175
+ # ENV
176
+
177
+ at build time, the following environment variables will be available to your
178
+ app, such that i can _"know"_ that it is being built. they should be self
179
+ explanatory:
180
+
181
+ ```ruby
182
+ ENV['RAILS_BUILD'] # a uuid fo the build
183
+ ENV['RAILS_BUILD_TIME'] # a timestamp when the build was run
184
+
185
+ ```
166
186
 
167
187
  # RTFM
168
188
 
data/TODO.md ADDED
@@ -0,0 +1,11 @@
1
+ now
2
+ ---
3
+
4
+ - configurable cp cmd
5
+ - persistant http?
6
+
7
+ next
8
+ ----
9
+
10
+ done
11
+ ----
data/bin/rails_build CHANGED
@@ -209,8 +209,6 @@ module RailsBuild
209
209
  def mkdir!
210
210
  FileUtils.rm_rf(@directory)
211
211
  FileUtils.mkdir_p(@directory)
212
-
213
- log(:info, "build: #{ @directory }")
214
212
  end
215
213
 
216
214
  #
@@ -357,75 +355,43 @@ module RailsBuild
357
355
 
358
356
  if @asset_tmp
359
357
  FileUtils.rm_rf(@asset_dir)
360
- FileUtils.mv(@asset_tmp, @asset_dir)
358
+ FileUtils.mv(@asset_tmp, @asset_dir)
361
359
  end
362
360
  end
363
361
 
364
362
  #
365
363
  def parallel_build!
366
- size = @parallel
364
+ slices =
365
+ @urls.each_slice(@parallel).map.to_a
367
366
 
368
- stats = {
369
- :success => [],
370
- :missing => [],
371
- :failure => [],
372
- }
367
+ Parallel.each(slices, in_processes: @parallel) do |slice|
368
+ Parallel.each(slice, in_threads: 4) do |url|
369
+ uri = uri_for(url)
370
+ path = path_for(uri)
373
371
 
374
- times = []
372
+ rpath = relative_path(path, :from => @directory)
375
373
 
376
- Parallel.each(@urls, in_threads: 8) do |url|
377
- uri = uri_for(url)
378
- path = path_for(uri)
374
+ code = nil
375
+ body = nil
379
376
 
380
- rpath = relative_path(path, :from => @directory)
377
+ time =
378
+ timing do
379
+ code, body = http_get(uri)
380
+ write_path(path, body) if code == 200
381
+ end
381
382
 
382
- code = nil
383
- body = nil
383
+ msg = "#{ url } -> /#{ rpath } (time:#{ time }, code:#{ code })"
384
384
 
385
- time =
386
- timing do
387
- code, body = http_get(uri)
388
- write_path(path, body) if code == 200
385
+ case code
386
+ when 200
387
+ log(:info, msg)
388
+ else
389
+ log(:error, msg)
390
+ abort
389
391
  end
390
-
391
- times.push(time)
392
- ts = times.dup
393
- rps = (ts.size / ts.sum).round(4)
394
- msg = "#{ url } -> /#{ rpath } (time:#{ time }, rps:#{ rps }, code:#{ code })"
395
-
396
- case code
397
- when 200
398
- log(:info, msg)
399
- stats[:success].push(url)
400
- when 404
401
- log(:error, msg)
402
- stats[:missing].push(url)
403
- else
404
- log(:error, msg)
405
- stats[:failure].push(url)
406
392
  end
407
393
  end
408
394
 
409
- borked = 0
410
-
411
- if stats[:missing].size > 0
412
- borked += stats[:missing].size
413
- log(:error, "missing on #{ stats[:missing].size } url(s)")
414
- end
415
-
416
- if stats[:failure].size > 0
417
- borked += stats[:failure].size
418
- log(:error, "failure on #{ stats[:failure].size } url(s)")
419
- end
420
-
421
- if borked > 0
422
- exit(borked)
423
- end
424
-
425
- rps = (times.size / times.sum).round(4)
426
-
427
- log(:info, "downloaded #{ @urls.size } urls at ~#{ rps } rps")
428
-
429
395
  @urls
430
396
  end
431
397
 
@@ -446,8 +412,6 @@ module RailsBuild
446
412
 
447
413
  FileUtils.rm_rf(build)
448
414
  FileUtils.send(cp, @directory, build)
449
-
450
- #log(:info, "to preview run: ruby -run -ehttpd ./build/ -p4242")
451
415
  end
452
416
 
453
417
  def timing(&block)
@@ -707,6 +671,9 @@ module RailsBuild
707
671
  system("#{ version_command } >/dev/null 2>&1") ||
708
672
  abort("app fails to load via: #{ version_command }")
709
673
 
674
+ @cli.log(:info, "rails_build version: #{ RailsBuild.version }")
675
+ @cli.log(:info, "build: #{ @directory }")
676
+
710
677
  q = Queue.new
711
678
 
712
679
  cmd = start_command_for(port)
@@ -750,15 +717,15 @@ module RailsBuild
750
717
  RAILS_BUILD=#{ @uuid }
751
718
 
752
719
  RAILS_SERVE_STATIC_FILES=true
753
- RAILS_LOG_TO_STDOUT=true
720
+ RAILS_LOG_TO_STDOUT=false
754
721
  WEB_CONCURRENCY=#{ @parallel.to_s }
722
+ RAILS_MAX_THREADS=8
755
723
 
756
724
  rails server
757
725
 
758
726
  --environment=#{ @env }
759
727
  --port=#{ port }
760
728
  --binding=0.0.0.0
761
- --log-to-stdout
762
729
  ]
763
730
  )
764
731
  end
@@ -1,5 +1,5 @@
1
1
  module RailsBuild
2
- VERSION = '2.4.4' unless defined?(VERSION)
2
+ VERSION = '2.4.5' unless defined?(VERSION)
3
3
 
4
4
  class << self
5
5
  def version
data/rails_build.gemspec CHANGED
@@ -3,7 +3,7 @@
3
3
 
4
4
  Gem::Specification::new do |spec|
5
5
  spec.name = "rails_build"
6
- spec.version = "2.4.4"
6
+ spec.version = "2.4.5"
7
7
  spec.required_ruby_version = '>= 3.0'
8
8
  spec.platform = Gem::Platform::RUBY
9
9
  spec.summary = "a small, simple, bullet proof, and fast enough static site generator built on top of the rails you already know and love"
@@ -14,6 +14,7 @@ Gem::Specification::new do |spec|
14
14
  ["LICENSE",
15
15
  "README.md",
16
16
  "Rakefile",
17
+ "TODO.md",
17
18
  "bin",
18
19
  "bin/rails_build",
19
20
  "lib",
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails_build
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.4
4
+ version: 2.4.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ara T. Howard
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-12-25 00:00:00.000000000 Z
11
+ date: 2024-12-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: parallel
@@ -57,6 +57,7 @@ files:
57
57
  - LICENSE
58
58
  - README.md
59
59
  - Rakefile
60
+ - TODO.md
60
61
  - bin/rails_build
61
62
  - lib/rails_build.rb
62
63
  - lib/rails_build/_lib.rb