sitepress-rails 1.0.0 → 2.0.0.beta4

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.
Files changed (32) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +7 -0
  3. data/README.md +1 -1
  4. data/bin/rails +13 -0
  5. data/lib/sitepress/build_paths/directory_index_path.rb +12 -0
  6. data/lib/sitepress/build_paths/index_path.rb +20 -0
  7. data/lib/sitepress/build_paths/root_path.rb +40 -0
  8. data/lib/sitepress/compiler.rb +68 -0
  9. data/lib/sitepress/engine.rb +44 -12
  10. data/lib/sitepress/rails.rb +12 -10
  11. data/lib/sitepress/rails_configuration.rb +8 -6
  12. data/lib/sitepress/renderers/controller.rb +51 -0
  13. data/lib/sitepress/renderers/server.rb +25 -0
  14. data/{app → rails/app}/controllers/concerns/sitepress/site_pages.rb +49 -8
  15. data/{app → rails/app}/controllers/sitepress/site_controller.rb +1 -1
  16. data/{config → rails/config}/routes.rb +5 -0
  17. data/sitepress-rails.gemspec +32 -0
  18. data/spec/dummy/log/test.log +2440 -79076
  19. data/spec/sitepress-rails_spec.rb +1 -30
  20. data/spec/sitepress/compiler_spec.rb +19 -0
  21. data/spec/sitepress/sitepress_site_controller_spec.rb +47 -6
  22. metadata +108 -71
  23. data/app/helpers/sitepress/application_helper.rb +0 -4
  24. data/lib/sitepress/extensions/index_request_path.rb +0 -24
  25. data/lib/sitepress/extensions/partials_remover.rb +0 -19
  26. data/lib/sitepress/extensions/rails_request_paths.rb +0 -20
  27. data/spec/dummy/db/production.sqlite3 +0 -0
  28. data/spec/dummy/db/test.sqlite3 +0 -0
  29. data/spec/dummy/log/production.log +0 -1360
  30. data/spec/sitepress/extensions/index_request_path_spec.rb +0 -15
  31. data/spec/sitepress/extensions/partials_remover_spec.rb +0 -12
  32. data/spec/sitepress/extensions/rails_request_paths_spec.rb +0 -9
@@ -8,10 +8,6 @@ describe "Sitepress.configuration" do
8
8
  before do
9
9
  app.config.eager_load = cache_classes # WTF?
10
10
  end
11
- it "has site" do
12
- app.initialize!
13
- expect(subject.site.root_path).to eql(app.root.join("app/content"))
14
- end
15
11
  it "has Rails.application as parent engine" do
16
12
  app.initialize!
17
13
  expect(subject.parent_engine).to eql(app)
@@ -43,29 +39,4 @@ describe "Sitepress.configuration" do
43
39
  end
44
40
  end
45
41
  end
46
- context "Sitepress::Middleware::RequestCache" do
47
- it "is in Rails middleware stack" do
48
- expect(Rails.configuration.middleware).to include(Sitepress::Middleware::RequestCache)
49
- end
50
- end
51
- context "Rails.configuration.paths" do
52
- subject { Rails.configuration.paths[path].to_a }
53
- context "views" do
54
- let(:path) { "app/views" }
55
- it { should include(app.root.join("app/content").to_s) }
56
- end
57
- context "helpers" do
58
- let(:path) { "app/helpers" }
59
- it { should include(app.root.join("app/content/helpers").to_s) }
60
- end
61
- context "assets" do
62
- let(:path) { "app/assets" }
63
- it { should include(app.root.join("app/content/assets").to_s) }
64
- end
65
- end
66
- context "#partals" do
67
- it "excludes partials" do
68
- expect(subject.site.resources.size).to eql(2)
69
- end
70
- end
71
- end
42
+ end
@@ -0,0 +1,19 @@
1
+ require "spec_helper"
2
+ require "tmpdir"
3
+ require "fileutils"
4
+
5
+ describe Sitepress::Compiler do
6
+ let(:site) { Sitepress.site }
7
+ let(:target) { Pathname.new(Dir::tmpdir).join("build") }
8
+ # Write compiler output to /dev/null so our test output remains clean.
9
+ let(:stdout) { File.open(File::NULL, "w") }
10
+ subject { Sitepress::Compiler.new(site: site, stdout: stdout) }
11
+ describe "#compile" do
12
+ before { FileUtils.mkdir_p(target) }
13
+ after { FileUtils.rm_rf(target) }
14
+ it "writes files to target" do
15
+ subject.compile(target_path: target)
16
+ expect(Dir.glob(target.join("**")).size).to eql(2) # 2 items in the site... mkay?
17
+ end
18
+ end
19
+ end
@@ -10,10 +10,12 @@ describe Sitepress::SiteController, type: :controller do
10
10
  end
11
11
  end
12
12
 
13
+ let(:site) { Sitepress.configuration.site }
14
+
13
15
  context "templated page" do
14
16
  render_views
15
17
  before { get_resource "/time" }
16
- let(:resource) { Sitepress.site.get("/time") }
18
+ let(:resource) { site.get("/time") }
17
19
  it "is status 200" do
18
20
  expect(response.status).to eql(200)
19
21
  end
@@ -24,7 +26,7 @@ describe Sitepress::SiteController, type: :controller do
24
26
  expect(response.body).to include("<title>Test layout</title>")
25
27
  end
26
28
  it "responds with content type" do
27
- expect(response.content_type).to eql("text/html")
29
+ expect(response.content_type).to include("text/html")
28
30
  end
29
31
  context "helper methods" do
30
32
  subject { @controller }
@@ -32,7 +34,7 @@ describe Sitepress::SiteController, type: :controller do
32
34
  expect(subject.send(:current_page).asset.path).to eql(resource.asset.path)
33
35
  end
34
36
  it "#site" do
35
- expect(subject.send(:site)).to eql(Sitepress.site)
37
+ expect(subject.send(:site)).to eql(site)
36
38
  end
37
39
  end
38
40
  end
@@ -46,11 +48,11 @@ describe Sitepress::SiteController, type: :controller do
46
48
  it "renders body" do
47
49
  expect(response.body).to include("<h1>Hi!</h1>")
48
50
  end
49
- it "renders layout" do
50
- expect(response.body).to include("<title>Dummy</title>")
51
+ it "does not render layout" do
52
+ expect(response.body).to_not include("<title>Dummy</title>")
51
53
  end
52
54
  it "responds with content type" do
53
- expect(response.content_type).to eql("text/html")
55
+ expect(response.content_type).to include("text/html")
54
56
  end
55
57
  end
56
58
 
@@ -61,4 +63,43 @@ describe Sitepress::SiteController, type: :controller do
61
63
  }.to raise_exception(ActionController::RoutingError)
62
64
  end
63
65
  end
66
+
67
+ context "paths" do
68
+ context "view_paths" do
69
+ subject { Sitepress::SiteController.view_paths.map(&:path) }
70
+ it { is_expected.to include(site.root_path.to_s) }
71
+ it { is_expected.to include(site.pages_path.to_s) }
72
+ end
73
+ context "helper_paths" do
74
+ subject{ Sitepress::SiteController.helpers_path }
75
+ it { is_expected.to include(site.helpers_path.to_s) }
76
+ it "has site#helper_paths in ActiveSupport::Dependencies.autoload_paths" do
77
+ expect(ActiveSupport::Dependencies.autoload_paths).to include(site.helpers_path.to_s)
78
+ end
79
+ end
80
+ end
81
+
82
+ context "render cache" do
83
+ context "cache_resources=true" do
84
+ before { site.cache_resources = true }
85
+ it "enables cache" do
86
+ expect(site.cache_resources).to be true
87
+ expect(site).to receive(:cache_resources=).with(true)
88
+ expect(site).to receive(:cache_resources=).with(true)
89
+ get_resource "/time"
90
+ expect(site.cache_resources).to be true
91
+ end
92
+ end
93
+ context "cache_resources=false" do
94
+ before { site.cache_resources = false }
95
+ it "enables cache" do
96
+ expect(site.cache_resources).to be false
97
+ expect(site).to receive(:cache_resources=).with(true)
98
+ expect(site).to receive(:cache_resources=).with(false)
99
+ get_resource "/time"
100
+ expect(site.cache_resources).to be false
101
+ end
102
+ end
103
+
104
+ end
64
105
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sitepress-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 2.0.0.beta4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brad Gessler
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-08-03 00:00:00.000000000 Z
11
+ date: 2021-02-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec-rails
@@ -45,7 +45,7 @@ dependencies:
45
45
  - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '4.0'
48
- type: :runtime
48
+ type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
@@ -58,36 +58,83 @@ dependencies:
58
58
  requirements:
59
59
  - - '='
60
60
  - !ruby/object:Gem::Version
61
- version: 1.0.0
61
+ version: 2.0.0.beta4
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - '='
67
67
  - !ruby/object:Gem::Version
68
- version: 1.0.0
69
- description:
68
+ version: 2.0.0.beta4
69
+ - !ruby/object:Gem::Dependency
70
+ name: railties
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '5.0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '5.0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: actionpack
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '5.0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '5.0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: sprockets-rails
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: 2.0.0
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: 2.0.0
111
+ description:
70
112
  email:
71
113
  - bradgessler@gmail.com
72
114
  executables: []
73
115
  extensions: []
74
116
  extra_rdoc_files: []
75
117
  files:
118
+ - ".gitignore"
76
119
  - README.md
77
120
  - Rakefile
78
- - app/controllers/concerns/sitepress/site_pages.rb
79
- - app/controllers/sitepress/site_controller.rb
80
- - app/helpers/sitepress/application_helper.rb
81
- - config/routes.rb
121
+ - bin/rails
82
122
  - lib/sitepress-rails.rb
123
+ - lib/sitepress/build_paths/directory_index_path.rb
124
+ - lib/sitepress/build_paths/index_path.rb
125
+ - lib/sitepress/build_paths/root_path.rb
126
+ - lib/sitepress/compiler.rb
83
127
  - lib/sitepress/engine.rb
84
- - lib/sitepress/extensions/index_request_path.rb
85
- - lib/sitepress/extensions/partials_remover.rb
86
- - lib/sitepress/extensions/rails_request_paths.rb
87
128
  - lib/sitepress/rails.rb
88
129
  - lib/sitepress/rails_configuration.rb
130
+ - lib/sitepress/renderers/controller.rb
131
+ - lib/sitepress/renderers/server.rb
89
132
  - lib/sitepress/route_constraint.rb
90
133
  - lib/tasks/sitepress_tasks.rake
134
+ - rails/app/controllers/concerns/sitepress/site_pages.rb
135
+ - rails/app/controllers/sitepress/site_controller.rb
136
+ - rails/config/routes.rb
137
+ - sitepress-rails.gemspec
91
138
  - spec/dummy/Rakefile
92
139
  - spec/dummy/app/assets/config/manifest.js
93
140
  - spec/dummy/app/assets/javascripts/application.js
@@ -137,9 +184,6 @@ files:
137
184
  - spec/dummy/config/routes.rb
138
185
  - spec/dummy/config/secrets.yml
139
186
  - spec/dummy/config/spring.rb
140
- - spec/dummy/db/production.sqlite3
141
- - spec/dummy/db/test.sqlite3
142
- - spec/dummy/log/production.log
143
187
  - spec/dummy/log/test.log
144
188
  - spec/dummy/public/404.html
145
189
  - spec/dummy/public/422.html
@@ -148,9 +192,7 @@ files:
148
192
  - spec/dummy/public/apple-touch-icon.png
149
193
  - spec/dummy/public/favicon.ico
150
194
  - spec/sitepress-rails_spec.rb
151
- - spec/sitepress/extensions/index_request_path_spec.rb
152
- - spec/sitepress/extensions/partials_remover_spec.rb
153
- - spec/sitepress/extensions/rails_request_paths_spec.rb
195
+ - spec/sitepress/compiler_spec.rb
154
196
  - spec/sitepress/rails_configuration_spec.rb
155
197
  - spec/sitepress/route_constraint_spec.rb
156
198
  - spec/sitepress/routes_spec.rb
@@ -165,7 +207,7 @@ files:
165
207
  homepage: https://github.com/sitepress/sitepress
166
208
  licenses: []
167
209
  metadata: {}
168
- post_install_message:
210
+ post_install_message:
169
211
  rdoc_options: []
170
212
  require_paths:
171
213
  - lib
@@ -176,86 +218,81 @@ required_ruby_version: !ruby/object:Gem::Requirement
176
218
  version: '0'
177
219
  required_rubygems_version: !ruby/object:Gem::Requirement
178
220
  requirements:
179
- - - ">="
221
+ - - ">"
180
222
  - !ruby/object:Gem::Version
181
- version: '0'
223
+ version: 1.3.1
182
224
  requirements: []
183
- rubygems_version: 3.1.2
184
- signing_key:
225
+ rubygems_version: 3.2.3
226
+ signing_key:
185
227
  specification_version: 4
186
228
  summary: Sitepress rails integration.
187
229
  test_files:
188
- - spec/spec_helper.rb
189
- - spec/sitepress-rails_spec.rb
190
- - spec/dummy/app/mailers/application_mailer.rb
230
+ - spec/dummy/Rakefile
231
+ - spec/dummy/app/assets/config/manifest.js
232
+ - spec/dummy/app/assets/javascripts/application.js
233
+ - spec/dummy/app/assets/javascripts/cable.js
234
+ - spec/dummy/app/assets/stylesheets/application.css
235
+ - spec/dummy/app/content/helpers/sample_helper.rb
191
236
  - spec/dummy/app/content/layouts/sitepress_test_layout.html.erb
192
- - spec/dummy/app/content/pages/time.html.erb
193
237
  - spec/dummy/app/content/pages/_stupid.html.erb
194
238
  - spec/dummy/app/content/pages/hi.html
195
239
  - spec/dummy/app/content/pages/partials/_really_stupid.html.erb
196
- - spec/dummy/app/content/helpers/sample_helper.rb
197
- - spec/dummy/app/jobs/application_job.rb
240
+ - spec/dummy/app/content/pages/time.html.erb
198
241
  - spec/dummy/app/controllers/application_controller.rb
199
242
  - spec/dummy/app/controllers/baseline_controller.rb
243
+ - spec/dummy/app/helpers/application_helper.rb
244
+ - spec/dummy/app/jobs/application_job.rb
245
+ - spec/dummy/app/mailers/application_mailer.rb
200
246
  - spec/dummy/app/views/baseline/show.html.erb
201
247
  - spec/dummy/app/views/layouts/application.html.erb
202
248
  - spec/dummy/app/views/layouts/mailer.html.erb
203
249
  - spec/dummy/app/views/layouts/mailer.text.erb
204
- - spec/dummy/app/assets/config/manifest.js
205
- - spec/dummy/app/assets/javascripts/cable.js
206
- - spec/dummy/app/assets/javascripts/application.js
207
- - spec/dummy/app/assets/stylesheets/application.css
208
- - spec/dummy/app/helpers/application_helper.rb
209
- - spec/dummy/bin/update
210
- - spec/dummy/bin/rake
211
- - spec/dummy/bin/setup
212
250
  - spec/dummy/bin/bundle
213
251
  - spec/dummy/bin/rails
214
- - spec/dummy/config/secrets.yml
215
- - spec/dummy/config/routes.rb
216
- - spec/dummy/config/locales/en.yml
252
+ - spec/dummy/bin/rake
253
+ - spec/dummy/bin/setup
254
+ - spec/dummy/bin/update
255
+ - spec/dummy/config/application.rb
256
+ - spec/dummy/config/boot.rb
217
257
  - spec/dummy/config/cable.yml
218
- - spec/dummy/config/environments/production.rb
258
+ - spec/dummy/config/database.yml
259
+ - spec/dummy/config/environment.rb
219
260
  - spec/dummy/config/environments/development.rb
261
+ - spec/dummy/config/environments/production.rb
220
262
  - spec/dummy/config/environments/test.rb
221
- - spec/dummy/config/spring.rb
222
- - spec/dummy/config/environment.rb
223
- - spec/dummy/config/application.rb
224
- - spec/dummy/config/puma.rb
225
- - spec/dummy/config/database.yml
226
- - spec/dummy/config/boot.rb
227
263
  - spec/dummy/config/initializers/application_controller_renderer.rb
264
+ - spec/dummy/config/initializers/assets.rb
228
265
  - spec/dummy/config/initializers/backtrace_silencers.rb
229
- - spec/dummy/config/initializers/null_logger.rb
230
- - spec/dummy/config/initializers/mime_types.rb
266
+ - spec/dummy/config/initializers/cookies_serializer.rb
231
267
  - spec/dummy/config/initializers/filter_parameter_logging.rb
268
+ - spec/dummy/config/initializers/inflections.rb
269
+ - spec/dummy/config/initializers/mime_types.rb
270
+ - spec/dummy/config/initializers/null_logger.rb
232
271
  - spec/dummy/config/initializers/session_store.rb
233
272
  - spec/dummy/config/initializers/wrap_parameters.rb
234
- - spec/dummy/config/initializers/assets.rb
235
- - spec/dummy/config/initializers/cookies_serializer.rb
236
- - spec/dummy/config/initializers/inflections.rb
273
+ - spec/dummy/config/locales/en.yml
274
+ - spec/dummy/config/puma.rb
275
+ - spec/dummy/config/routes.rb
276
+ - spec/dummy/config/secrets.yml
277
+ - spec/dummy/config/spring.rb
237
278
  - spec/dummy/config.ru
238
- - spec/dummy/Rakefile
239
- - spec/dummy/public/favicon.ico
279
+ - spec/dummy/log/test.log
280
+ - spec/dummy/public/404.html
240
281
  - spec/dummy/public/422.html
241
- - spec/dummy/public/apple-touch-icon.png
242
282
  - spec/dummy/public/500.html
243
- - spec/dummy/public/404.html
244
283
  - spec/dummy/public/apple-touch-icon-precomposed.png
245
- - spec/dummy/db/production.sqlite3
246
- - spec/dummy/db/test.sqlite3
247
- - spec/dummy/log/test.log
248
- - spec/dummy/log/production.log
284
+ - spec/dummy/public/apple-touch-icon.png
285
+ - spec/dummy/public/favicon.ico
286
+ - spec/sitepress/compiler_spec.rb
287
+ - spec/sitepress/rails_configuration_spec.rb
288
+ - spec/sitepress/route_constraint_spec.rb
289
+ - spec/sitepress/routes_spec.rb
290
+ - spec/sitepress/sitepress_site_controller_spec.rb
291
+ - spec/sitepress-rails_spec.rb
249
292
  - spec/sites/sample/pages/index.html.erb
250
- - spec/sites/sample/pages/test.html.haml
293
+ - spec/sites/sample/pages/nothing
251
294
  - spec/sites/sample/pages/sin_frontmatter.html.haml
252
295
  - spec/sites/sample/pages/super.duper/index.html
253
- - spec/sites/sample/pages/nothing
296
+ - spec/sites/sample/pages/test.html.haml
254
297
  - spec/sites/sample/pages/text.txt
255
- - spec/sitepress/extensions/rails_request_paths_spec.rb
256
- - spec/sitepress/extensions/partials_remover_spec.rb
257
- - spec/sitepress/extensions/index_request_path_spec.rb
258
- - spec/sitepress/sitepress_site_controller_spec.rb
259
- - spec/sitepress/rails_configuration_spec.rb
260
- - spec/sitepress/routes_spec.rb
261
- - spec/sitepress/route_constraint_spec.rb
298
+ - spec/spec_helper.rb
@@ -1,4 +0,0 @@
1
- module Sitepress
2
- module ApplicationHelper
3
- end
4
- end
@@ -1,24 +0,0 @@
1
- module Sitepress
2
- module Extensions
3
- # Removes files beginning with "_" from the resource collection.
4
- class IndexRequestPath
5
- # Name of the file that we'll want to change to a / path
6
- FILE_NAME = "index.html".freeze
7
-
8
- def initialize(file_name: FILE_NAME)
9
- @file_name = file_name
10
- end
11
-
12
- def process_resources(node)
13
- node.flatten.each do |r|
14
- asset = r.asset
15
- if asset.path.basename.to_s.start_with? @file_name
16
- request_path = Pathname.new("/").join(r.request_path).dirname.cleanpath.to_s
17
- node.formats.remove(r)
18
- node.add(path: request_path, asset: asset)
19
- end
20
- end
21
- end
22
- end
23
- end
24
- end