rails_build 2.4.2 → 2.4.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2fdeb8b08b19d89fe8b117fa6113056fa1c7cc7df38b66780f043fc970cde7ab
4
- data.tar.gz: dc3342b95ad179fd2da82f57c0c41cf296796b0b7ebc92ef5f8011415ccd08ab
3
+ metadata.gz: 85f445833fa2d2a73f3fdcc41602c12a29b0710c3efe1f22fb3ca2255f28d0b3
4
+ data.tar.gz: c763470f51741a1082165bc9d4d67fe6528904bc5ac4598fad840a1b3025f702
5
5
  SHA512:
6
- metadata.gz: 8c50a5d183280afadf89c695190d72fcfda5ed7cb4cfabd29c05acf4931749229d814c366e92f654935d3b4a4975f05c97e881717b3ca4713c91d30fa632dae6
7
- data.tar.gz: ca443255a67532b1aa5a67edae2b5f745825b0a7f0f94bacdb8cd0c5e553764a33568a36647ee823cb2a60542c224860bc7be236ec834d457dc32e16a6f7aedd
6
+ metadata.gz: 3c1776c7af9d7b84230b00d573503897a90109f01c77ff4e039dce651dd7f4bb01333b30efe773f3dca9bf7b5b6a014e8211683e0b13a52b4b79cc61f13fbee6
7
+ data.tar.gz: c546c9901cfc78d879e6089e1a4ff59061e5b62f67706f9c712b035aff35e17e350d536323e8be2314b84333a21bc69b30667bf07edb4e43fe011504015c3315
data/LICENSE CHANGED
@@ -1 +1 @@
1
- Ruby
1
+ Nonstandard
data/README.md CHANGED
@@ -3,27 +3,20 @@
3
3
  - install
4
4
 
5
5
  ```sh
6
-
7
6
  echo 'gem "raild_build"' >> Gemfile
8
-
9
7
  bundle
10
-
11
8
  ```
12
9
 
13
10
  - setup
14
11
 
15
12
  ```sh
16
-
17
13
  rails_build --init
18
-
19
14
  ```
20
15
 
21
16
  - build
22
17
 
23
18
  ```sh
24
-
25
19
  rails_build
26
-
27
20
  ```
28
21
 
29
22
  - deploy?
@@ -49,77 +42,144 @@
49
42
  absolutely minimal configuration. it should be pretty darn self
50
43
  explanatory:
51
44
 
52
- ```ruby
45
+ ```ruby
46
+
47
+ # file : ./config/rails_build.rb
53
48
 
54
- # file : ./config/rails_build.rb
49
+ <<~________
55
50
 
56
- <<~________
51
+ this file should to enumerate all the urls you'd like to build
57
52
 
58
- this file should to enumerate all the urls you'd like to build
53
+ the contents of your ./public directory, and any assets, are automaticaly
54
+ included
59
55
 
60
- the contents of your ./public directory, and any assets, are automaticaly
61
- included
56
+ therefore you need only declare which dynamic urls, that is to say, 'routes'
62
57
 
63
- therefore you need only declare which dynamic urls, that is to say, 'routes'
58
+ you would like included in your build
64
59
 
65
- you would like included in your build
60
+ it is not loaded except during build time, and will not affect your normal
61
+ rails app in any way
66
62
 
67
- it is not loaded except during build time, and will not affect your normal
68
- rails app in any way
63
+ ________
69
64
 
70
- ________
71
65
 
66
+ RailsBuild.configure do |config|
72
67
 
73
- RailsBuild.configure do |config|
68
+ # most of the time you are going to want your root route included, which
69
+ # will translate into an ./index.html being output in the build, as you
70
+ # would expect.
71
+ #
74
72
 
75
- # most of the time you are going to want your route included, which will
76
- # translate into an ./index.html being output in the build
77
- #
73
+ config.urls << '/'
78
74
 
79
- config.urls << '/'
75
+ # include any/all additional routes youd' like built thusly
76
+ #
80
77
 
81
- # include any/all additional routes youd' like built thusly
82
- #
78
+ Post.each do |post|
79
+ config.urls << "/posts/#{ post.id }"
80
+ end
81
+
82
+ # thats it! - now just run `rails_build` and you are gtg
83
83
 
84
- Post.each do |post|
85
- config.urls << "/posts/#{ post.id }"
86
84
  end
87
85
 
88
- # thats it! - now just run `rails_build` and you are GTG
86
+ ```
87
+
88
+ # CONFIGURATION
89
+
90
+ although `rails_build` aims to be as zero-config as possible, it does expose
91
+ a few configuration settings, which you may configure in
92
+ `config/rails_build.rb`:
93
+
94
+ - *config.urls*
95
+
96
+ as shown above, the config has a list of urls that the build process
97
+ will GET. this is a simple array and contains only '/' by default, the
98
+ root route, such that the default unconfigured build would map '/' ->
99
+ 'index.html' and not be empty. if your app does not have a root route,
100
+ or you do not wish to include that route in your build, simply call
101
+ `config.urls.clear`
102
+
89
103
 
90
- end
104
+ - *config.force_ssl*
91
105
 
92
- ```
106
+ this one can be important. when `rails_build` starts your rails app, it
107
+ does so with *RAILS_ENV=production*, such that the build is of production
108
+ quality and speed. (you can change this by running `rails_build
109
+ --env=development`, etc.). this can cause issues since the build runs on
110
+ localhost, and rails (without `thruster`), has no facility for ssl
111
+ termination. as such, you may want the the following
112
+
113
+ ```ruby
114
+ # file : ./config/environments/production.rb
115
+
116
+ config.force_ssl = ENV['RAILS_BUILD'] ? false : true
117
+ ```
118
+
119
+ - *config.index_html*
120
+
121
+ controls the mapping of urls to build files, eg.
122
+
123
+ ```ruby
124
+ RailsBuild.configure do
125
+ config.index_html = true # the default
126
+ config.urls << "/post/42" #=> ./build/posts/42/index.html
127
+ end
128
+
129
+ # vs.
130
+
131
+ RailsBuild.configure do
132
+ config.index_html = false
133
+ config.urls << "/post/42" #=> ./build/posts/42.html
134
+ end
135
+ ```
136
+
137
+ - *config.path*
138
+
139
+ this is the path to the build config file itself, the default is
140
+ `./config/rails_build.rb`, as you would expect
141
+
142
+ - *config.trailing_slash*
143
+
144
+ this is current un-used, but maybe be used in the future. it's default is the
145
+ value of
146
+
147
+ ```ruby
148
+ Rails.application.default_url_options[:trailing_slash]
149
+ ```
93
150
 
94
151
  # MOTIVATION
95
152
 
96
- why another static site builder? why not hugo or, the
97
- other-soon-to-be-released-blazing-fast-one-i-am-building-on Roda?
153
+ why yet _another_ static site builder? why not hugo or, the
154
+ other-soon-to-be-released-blazing-fast-one-i-am-building-on Roda?
155
+
156
+ because:
98
157
 
99
- because:
158
+ - there are a lot of Rails apps
159
+ - nothing is as fast as static
160
+ - Rails has no facility to 'pre-render' routes on deployment
100
161
 
101
- - there are a lot of Rails apps
102
- - nothing is as fast as static
103
- - Rails has no facility to 'pre-render' routes on deployment
162
+ so, you can use this tool to leverage the code and the app you already have,
163
+ and/or to utilize the entire Rails ecosystem, it's docs and gems, to build
164
+ sophisticated sites without needing to learn yet another framework.
104
165
 
105
- so, you can use this tool to leverage the code and the app you already have,
106
- and/or to utilize the entire Rails ecosystem, it's docs and gems, to build
107
- sophisticated sites without needing to learn yet another framework.
108
166
 
109
- # HOW IT WORKS
167
+ # RTFM
110
168
 
111
- as always, docs are worthless and Ruby is beautiful, so #RTFC ->
169
+ as always, docs are worthless and ruby is beautiful, so #RTFC ->
112
170
 
113
- https://github.com/ahoward/rails_build/blob/main/bin/rails_build
171
+ https://github.com/ahoward/rails_build/blob/main/bin/rails_build
114
172
 
115
173
 
116
174
  # LICENSE
117
175
 
118
- The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
176
+ the gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
119
177
 
120
178
  # AI _boo_
121
179
 
122
- Any and all usage, in any way, shape, or form, in prohibited by any AI
123
- application, or LLM. This includes indexing, knowing about, training on, or
124
- existing inside a commercial LLM or training data set. Iff (and *only* if)
125
- your LLM is OSS, please contact me directly before including this source.
180
+ any and all usage, in any way, shape, or form, in prohibited by any ai
181
+ application, or llm. this includes indexing, knowing about, training on, or
182
+ existing inside a commercial llm or training data set. iff (that is not a
183
+ typo) your llm is oss, please contact me directly before including this source.
184
+
185
+ any usage by openai, or google, is forbidden regardless.
data/bin/rails_build CHANGED
@@ -194,7 +194,7 @@ module RailsBuild
194
194
 
195
195
  #
196
196
  def init!
197
- config = DATA.read.strip
197
+ config = SAMPLE_CONFIG
198
198
 
199
199
  path = './config/rails_build.rb'
200
200
 
@@ -288,7 +288,7 @@ module RailsBuild
288
288
 
289
289
  def extract_urls!
290
290
  path = @config.path
291
- urls = @config.urls
291
+ urls = @config.urls.uniq
292
292
 
293
293
  if urls.size == 0
294
294
  abort("failed to find any rails_build urls in:\n#{ @config.to_json }")
@@ -361,88 +361,6 @@ module RailsBuild
361
361
  end
362
362
  end
363
363
 
364
- #
365
- =begin
366
- def parallel_build!
367
- size = @parallel
368
-
369
- stats = {
370
- :success => [],
371
- :missing => [],
372
- :failure => [],
373
- }
374
-
375
- times = []
376
-
377
- elapsed = timing do
378
- ThreadPool.new(size:) do |tp|
379
- tp.run do
380
- @urls.each{|url| tp.process!(url:)}
381
- end
382
-
383
- tp.process do |url:|
384
- uri = uri_for(url)
385
- path = path_for(uri)
386
-
387
- upath = uri.path
388
- rpath = relative_path(path, :from => @directory)
389
-
390
- code = nil
391
- body = nil
392
-
393
- time =
394
- timing do
395
- code, body = http_get(uri)
396
- write_path(path, body) if code == 200
397
- end
398
-
399
- tp.success!(url:, rpath:, time:, code:)
400
- end
401
-
402
- tp.success do |url:, rpath:, time:, code:|
403
- times.push(time)
404
- rps = (times.size / times.sum).round(4)
405
- msg = "#{ url } -> /#{ rpath } (time:#{ time }, rps:#{ rps }, code:#{ code })"
406
-
407
- case code
408
- when 200
409
- log(:info, msg)
410
- stats[:success].push(url)
411
- when 404
412
- log(:error, msg)
413
- stats[:missing].push(url)
414
- else
415
- log(:error, msg)
416
- stats[:failure].push(url)
417
- end
418
- end
419
- end
420
- end
421
-
422
- borked = 0
423
-
424
- if stats[:missing].size > 0
425
- borked += stats[:missing].size
426
- log(:error, "missing on #{ stats[:missing].size } url(s)")
427
- end
428
-
429
- if stats[:failure].size > 0
430
- borked += stats[:failure].size
431
- log(:error, "failure on #{ stats[:failure].size } url(s)")
432
- end
433
-
434
- if borked > 0
435
- exit(borked)
436
- end
437
-
438
- rps = (times.size / times.sum).round(4)
439
-
440
- log(:info, "downloaded #{ @urls.size } urls at ~#{ rps } rps")
441
-
442
- @urls
443
- end
444
- =end
445
-
446
364
  #
447
365
  def parallel_build!
448
366
  size = @parallel
@@ -883,37 +801,40 @@ END {
883
801
  RailsBuild::CLI.run!
884
802
  }
885
803
 
886
- __END__
887
- <<~________
804
+ module RailsBuild
805
+ SAMPLE_CONFIG = <<~'__'
806
+ <<~________
888
807
 
889
- this file should to enumerate all the urls you'd like to build
808
+ this file should to enumerate all the urls you'd like to build
890
809
 
891
- the contents of your ./public directory, and any assets, are automaticaly included
810
+ the contents of your ./public directory, and any assets, are automaticaly included
892
811
 
893
- therefore you need only declare which dynamic urls, that is to say, 'routes'
812
+ therefore you need only declare which dynamic urls, that is to say, 'routes'
894
813
 
895
- you would like included in your build
814
+ you would like included in your build
896
815
 
897
- it is not loaded except during build time, and will not affect your normal rails app in any way
816
+ it is not loaded except during build time, and will not affect your normal rails app in any way
898
817
 
899
- ________
818
+ ________
900
819
 
901
820
 
902
- RailsBuild.configure do |config|
821
+ RailsBuild.configure do |config|
903
822
 
904
- # most of the time you are going to want your route included, which will
905
- # translate into an ./index.html being output in the build
906
- #
823
+ # most of the time you are going to want your route included, which will
824
+ # translate into an ./index.html being output in the build
825
+ #
907
826
 
908
- config.urls << '/'
827
+ config.urls << '/'
909
828
 
910
- # include any/all additional routes youd' like built thusly
911
- #
829
+ # include any/all additional routes youd' like built thusly
830
+ #
912
831
 
913
- Post.each do |post|
914
- config.urls << "/posts/#{ post.id }"
915
- end
832
+ Post.each do |post|
833
+ config.urls << "/posts/#{ post.id }"
834
+ end
916
835
 
917
- # thats it! - now just run `rails_build` and you are GTG
836
+ # thats it! - now just run `rails_build` and you are GTG
918
837
 
838
+ end
839
+ __
919
840
  end
@@ -1,5 +1,5 @@
1
1
  module RailsBuild
2
- VERSION = '2.4.2' unless defined?(VERSION)
2
+ VERSION = '2.4.4' unless defined?(VERSION)
3
3
 
4
4
  class << self
5
5
  def version
data/lib/rails_build.rb CHANGED
@@ -72,7 +72,7 @@ module RailsBuild
72
72
  defaults = {
73
73
  path: RailsBuild.config_path,
74
74
  trailing_slash: (defined?(Rails) ? !!Rails.application.default_url_options[:trailing_slash] : false),
75
- force_ssl: (defined?(Rails) ? !!Rails.configuration.force_ssl : true),
75
+ force_ssl: (defined?(Rails) ? !!Rails.configuration.force_ssl : false),
76
76
  urls: %w[ / ],
77
77
  index_html: true,
78
78
  }
data/rails_build.gemspec CHANGED
@@ -3,12 +3,12 @@
3
3
 
4
4
  Gem::Specification::new do |spec|
5
5
  spec.name = "rails_build"
6
- spec.version = "2.4.2"
6
+ spec.version = "2.4.4"
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"
10
10
  spec.description = "rails_build is a very small, fast enough, static site generator built\non top of the rails you already know and love.\n\nit's been in production usage for close to a decade but i've been too\nbusy to relase it until now. also, #wtf is up with javascript land?!\n\nit has a small set of dependencies, namely the `parallel` gem, and\nrequires absolutely minimal configuration. it should be pretty darn\nself explanatory:"
11
- spec.license = "Ruby"
11
+ spec.license = "Nonstandard"
12
12
 
13
13
  spec.files =
14
14
  ["LICENSE",
@@ -16,8 +16,6 @@ Gem::Specification::new do |spec|
16
16
  "Rakefile",
17
17
  "bin",
18
18
  "bin/rails_build",
19
- "config",
20
- "config/rails_build.rb",
21
19
  "lib",
22
20
  "lib/rails_build",
23
21
  "lib/rails_build.rb",
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails_build
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.2
4
+ version: 2.4.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ara T. Howard
@@ -58,13 +58,12 @@ files:
58
58
  - README.md
59
59
  - Rakefile
60
60
  - bin/rails_build
61
- - config/rails_build.rb
62
61
  - lib/rails_build.rb
63
62
  - lib/rails_build/_lib.rb
64
63
  - rails_build.gemspec
65
64
  homepage: https://github.com/ahoward/rails_build
66
65
  licenses:
67
- - Ruby
66
+ - Nonstandard
68
67
  metadata: {}
69
68
  post_install_message:
70
69
  rdoc_options: []
@@ -1,33 +0,0 @@
1
- <<~________
2
-
3
- this file should to enumerate all the urls you'd like to build
4
-
5
- the contents of your ./public directory, and any assets, are automaticaly included
6
-
7
- therefore you need only declare which dynamic urls, that is to say, 'routes'
8
-
9
- you would like included in your build
10
-
11
- it is not loaded except during build time, and will not affect your normal rails app in any way
12
-
13
- ________
14
-
15
-
16
- RailsBuild.configure do |config|
17
-
18
- # most of the time you are going to want your route included, which will
19
- # translate into an ./index.html being output in the build
20
- #
21
-
22
- config.urls << '/'
23
-
24
- # include any/all additional routes youd' like built thusly
25
- #
26
-
27
- Post.each do |post|
28
- config.urls << "/posts/#{ post.id }"
29
- end
30
-
31
- # thats it! - now just run `rails_build` and you are GTG
32
-
33
- end