ninetails 0.0.2 → 0.1.0

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 (69) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +27 -4
  3. data/Rakefile +3 -3
  4. data/app/components/ninetails/element.rb +5 -1
  5. data/app/components/ninetails/element_definition.rb +2 -2
  6. data/app/components/ninetails/property_type.rb +0 -2
  7. data/app/components/ninetails/{section_template.rb → section.rb} +6 -8
  8. data/app/controllers/ninetails/application_controller.rb +1 -0
  9. data/app/controllers/ninetails/page_revisions_controller.rb +2 -3
  10. data/app/controllers/ninetails/pages_controller.rb +20 -1
  11. data/app/controllers/ninetails/sections_controller.rb +35 -0
  12. data/app/models/ninetails/page.rb +3 -16
  13. data/app/models/ninetails/page_revision.rb +2 -8
  14. data/app/models/ninetails/page_revision_section.rb +1 -1
  15. data/app/models/ninetails/page_section.rb +40 -0
  16. data/app/views/ninetails/page_revisions/index.json.jbuilder +1 -0
  17. data/app/views/ninetails/pages/_page.json.jbuilder +13 -0
  18. data/app/views/ninetails/pages/index.json.jbuilder +1 -0
  19. data/app/views/ninetails/pages/show.json.jbuilder +1 -0
  20. data/app/views/ninetails/sections/_section.json.jbuilder +1 -0
  21. data/app/views/ninetails/sections/validate.json.jbuilder +3 -0
  22. data/config/routes.rb +9 -5
  23. data/config/spring.rb +1 -0
  24. data/db/migrate/20151120120538_rename_sections_to_page_sections.rb +5 -0
  25. data/lib/ninetails/config.rb +8 -0
  26. data/lib/ninetails/engine.rb +5 -0
  27. data/lib/ninetails/key_conversion.rb +28 -0
  28. data/lib/ninetails/version.rb +1 -1
  29. data/lib/tasks/ninetails_tasks.rake +2 -2
  30. data/spec/components/element_spec.rb +3 -3
  31. data/spec/components/property_spec.rb +2 -2
  32. data/spec/components/property_type_spec.rb +5 -5
  33. data/spec/components/section_spec.rb +2 -2
  34. data/spec/dummy/app/components/{section_template → section}/billboard.rb +2 -2
  35. data/spec/dummy/app/components/{section_template → section}/document_head.rb +2 -2
  36. data/spec/dummy/app/components/section/minimal_billboard.rb +9 -0
  37. data/spec/dummy/bin/rails +5 -0
  38. data/spec/dummy/bin/rake +5 -0
  39. data/spec/dummy/bin/rspec +8 -0
  40. data/spec/dummy/bin/spring +15 -0
  41. data/spec/dummy/config/application.rb +0 -10
  42. data/spec/dummy/config/initializers/ninetails.rb +1 -0
  43. data/spec/dummy/config/spring.rb +1 -0
  44. data/spec/dummy/db/schema.rb +10 -10
  45. data/spec/dummy/log/development.log +2499 -0
  46. data/spec/dummy/log/test.log +55690 -0
  47. data/spec/factories/page_sections.rb +15 -0
  48. data/spec/models/{section_spec.rb → page_section_spec.rb} +17 -36
  49. data/spec/models/page_spec.rb +9 -14
  50. data/spec/requests/middleware_spec.rb +80 -0
  51. data/spec/requests/page_revisions_spec.rb +41 -42
  52. data/spec/requests/pages_spec.rb +54 -1
  53. data/spec/requests/sections_spec.rb +32 -0
  54. data/spec/spec_helper.rb +4 -0
  55. data/spec/support/section_helpers.rb +27 -0
  56. metadata +74 -35
  57. data/app/controllers/ninetails/section_templates_controller.rb +0 -17
  58. data/app/models/ninetails/section.rb +0 -30
  59. data/db/schema.rb +0 -53
  60. data/spec/dummy/config/initializers/backtrace_silencers.rb +0 -7
  61. data/spec/dummy/config/initializers/inflections.rb +0 -16
  62. data/spec/dummy/config/initializers/mime_types.rb +0 -4
  63. data/spec/dummy/config/locales/en.yml +0 -23
  64. data/spec/dummy/public/404.html +0 -67
  65. data/spec/dummy/public/422.html +0 -67
  66. data/spec/dummy/public/500.html +0 -66
  67. data/spec/dummy/public/favicon.ico +0 -0
  68. data/spec/factories/sections.rb +0 -15
  69. data/spec/requests/section_templates_spec.rb +0 -17
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ninetails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Damien Timewell
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-11-20 00:00:00.000000000 Z
11
+ date: 2016-01-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -128,14 +128,28 @@ dependencies:
128
128
  requirements:
129
129
  - - "~>"
130
130
  - !ruby/object:Gem::Version
131
- version: '1.4'
131
+ version: '1.6'
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
- version: '1.4'
138
+ version: '1.6'
139
+ - !ruby/object:Gem::Dependency
140
+ name: spring-commands-rspec
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: '1.0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: '1.0'
139
153
  - !ruby/object:Gem::Dependency
140
154
  name: rspec-rails
141
155
  requirement: !ruby/object:Gem::Requirement
@@ -192,6 +206,20 @@ dependencies:
192
206
  - - "~>"
193
207
  - !ruby/object:Gem::Version
194
208
  version: '4.5'
209
+ - !ruby/object:Gem::Dependency
210
+ name: codeclimate-test-reporter
211
+ requirement: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - "~>"
214
+ - !ruby/object:Gem::Version
215
+ version: '0.4'
216
+ type: :development
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - "~>"
221
+ - !ruby/object:Gem::Version
222
+ version: '0.4'
195
223
  description: "\n Ninetails is a structured API for building a CMS API in Rails.\n
196
224
  \ It lets you define Sections, Elements, and Properties which control what can
197
225
  and cannot be edited.\n "
@@ -209,26 +237,35 @@ files:
209
237
  - app/components/ninetails/property.rb
210
238
  - app/components/ninetails/property_store.rb
211
239
  - app/components/ninetails/property_type.rb
212
- - app/components/ninetails/section_template.rb
240
+ - app/components/ninetails/section.rb
213
241
  - app/controllers/ninetails/application_controller.rb
214
242
  - app/controllers/ninetails/page_revisions_controller.rb
215
243
  - app/controllers/ninetails/pages_controller.rb
216
- - app/controllers/ninetails/section_templates_controller.rb
244
+ - app/controllers/ninetails/sections_controller.rb
217
245
  - app/models/ninetails/page.rb
218
246
  - app/models/ninetails/page_revision.rb
219
247
  - app/models/ninetails/page_revision_section.rb
220
- - app/models/ninetails/section.rb
248
+ - app/models/ninetails/page_section.rb
249
+ - app/views/ninetails/page_revisions/index.json.jbuilder
250
+ - app/views/ninetails/pages/_page.json.jbuilder
251
+ - app/views/ninetails/pages/index.json.jbuilder
252
+ - app/views/ninetails/pages/show.json.jbuilder
253
+ - app/views/ninetails/sections/_section.json.jbuilder
254
+ - app/views/ninetails/sections/validate.json.jbuilder
221
255
  - config/initializers/error_classes.rb
222
256
  - config/initializers/json_stuff.rb
223
257
  - config/routes.rb
258
+ - config/spring.rb
224
259
  - db/migrate/20151006093040_create_pages.rb
225
260
  - db/migrate/20151006093559_create_page_revisions.rb
226
261
  - db/migrate/20151006093754_create_sections.rb
227
262
  - db/migrate/20151006094337_create_page_revision_sections.rb
228
263
  - db/migrate/20151111085201_add_message_to_page_revisions.rb
229
- - db/schema.rb
264
+ - db/migrate/20151120120538_rename_sections_to_page_sections.rb
230
265
  - lib/ninetails.rb
266
+ - lib/ninetails/config.rb
231
267
  - lib/ninetails/engine.rb
268
+ - lib/ninetails/key_conversion.rb
232
269
  - lib/ninetails/version.rb
233
270
  - lib/tasks/ninetails_tasks.rake
234
271
  - spec/components/element_definition_spec.rb
@@ -247,12 +284,15 @@ files:
247
284
  - spec/dummy/app/components/property/image.rb
248
285
  - spec/dummy/app/components/property/link.rb
249
286
  - spec/dummy/app/components/property/text.rb
250
- - spec/dummy/app/components/section_template/billboard.rb
251
- - spec/dummy/app/components/section_template/document_head.rb
287
+ - spec/dummy/app/components/section/billboard.rb
288
+ - spec/dummy/app/components/section/document_head.rb
289
+ - spec/dummy/app/components/section/minimal_billboard.rb
252
290
  - spec/dummy/bin/bundle
253
291
  - spec/dummy/bin/rails
254
292
  - spec/dummy/bin/rake
293
+ - spec/dummy/bin/rspec
255
294
  - spec/dummy/bin/setup
295
+ - spec/dummy/bin/spring
256
296
  - spec/dummy/config.ru
257
297
  - spec/dummy/config/application.rb
258
298
  - spec/dummy/config/boot.rb
@@ -263,34 +303,32 @@ files:
263
303
  - spec/dummy/config/environments/production.rb
264
304
  - spec/dummy/config/environments/test.rb
265
305
  - spec/dummy/config/initializers/assets.rb
266
- - spec/dummy/config/initializers/backtrace_silencers.rb
267
306
  - spec/dummy/config/initializers/cookies_serializer.rb
268
307
  - spec/dummy/config/initializers/filter_parameter_logging.rb
269
- - spec/dummy/config/initializers/inflections.rb
270
- - spec/dummy/config/initializers/mime_types.rb
308
+ - spec/dummy/config/initializers/ninetails.rb
271
309
  - spec/dummy/config/initializers/session_store.rb
272
310
  - spec/dummy/config/initializers/wrap_parameters.rb
273
- - spec/dummy/config/locales/en.yml
274
311
  - spec/dummy/config/routes.rb
275
312
  - spec/dummy/config/secrets.yml
313
+ - spec/dummy/config/spring.rb
276
314
  - spec/dummy/db/schema.rb
277
- - spec/dummy/public/404.html
278
- - spec/dummy/public/422.html
279
- - spec/dummy/public/500.html
280
- - spec/dummy/public/favicon.ico
315
+ - spec/dummy/log/development.log
316
+ - spec/dummy/log/test.log
281
317
  - spec/factories/page_revisions.rb
318
+ - spec/factories/page_sections.rb
282
319
  - spec/factories/pages.rb
283
- - spec/factories/sections.rb
284
320
  - spec/models/page_revision_spec.rb
321
+ - spec/models/page_section_spec.rb
285
322
  - spec/models/page_spec.rb
286
- - spec/models/section_spec.rb
287
323
  - spec/rails_helper.rb
324
+ - spec/requests/middleware_spec.rb
288
325
  - spec/requests/page_revisions_spec.rb
289
326
  - spec/requests/pages_spec.rb
290
- - spec/requests/section_templates_spec.rb
327
+ - spec/requests/sections_spec.rb
291
328
  - spec/spec_helper.rb
292
329
  - spec/support/factory_girl.rb
293
330
  - spec/support/request_helpers.rb
331
+ - spec/support/section_helpers.rb
294
332
  - spec/support/shared_examples.rb
295
333
  homepage: https://github.com/iZettle/ninetails
296
334
  licenses:
@@ -312,7 +350,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
312
350
  version: '0'
313
351
  requirements: []
314
352
  rubyforge_project:
315
- rubygems_version: 2.4.6
353
+ rubygems_version: 2.5.1
316
354
  signing_key:
317
355
  specification_version: 4
318
356
  summary: Structured CMS API for Rails
@@ -332,12 +370,15 @@ test_files:
332
370
  - spec/dummy/app/components/property/image.rb
333
371
  - spec/dummy/app/components/property/link.rb
334
372
  - spec/dummy/app/components/property/text.rb
335
- - spec/dummy/app/components/section_template/billboard.rb
336
- - spec/dummy/app/components/section_template/document_head.rb
373
+ - spec/dummy/app/components/section/billboard.rb
374
+ - spec/dummy/app/components/section/document_head.rb
375
+ - spec/dummy/app/components/section/minimal_billboard.rb
337
376
  - spec/dummy/bin/bundle
338
377
  - spec/dummy/bin/rails
339
378
  - spec/dummy/bin/rake
379
+ - spec/dummy/bin/rspec
340
380
  - spec/dummy/bin/setup
381
+ - spec/dummy/bin/spring
341
382
  - spec/dummy/config/application.rb
342
383
  - spec/dummy/config/boot.rb
343
384
  - spec/dummy/config/database.yml
@@ -347,34 +388,32 @@ test_files:
347
388
  - spec/dummy/config/environments/production.rb
348
389
  - spec/dummy/config/environments/test.rb
349
390
  - spec/dummy/config/initializers/assets.rb
350
- - spec/dummy/config/initializers/backtrace_silencers.rb
351
391
  - spec/dummy/config/initializers/cookies_serializer.rb
352
392
  - spec/dummy/config/initializers/filter_parameter_logging.rb
353
- - spec/dummy/config/initializers/inflections.rb
354
- - spec/dummy/config/initializers/mime_types.rb
393
+ - spec/dummy/config/initializers/ninetails.rb
355
394
  - spec/dummy/config/initializers/session_store.rb
356
395
  - spec/dummy/config/initializers/wrap_parameters.rb
357
- - spec/dummy/config/locales/en.yml
358
396
  - spec/dummy/config/routes.rb
359
397
  - spec/dummy/config/secrets.yml
398
+ - spec/dummy/config/spring.rb
360
399
  - spec/dummy/config.ru
361
400
  - spec/dummy/db/schema.rb
362
- - spec/dummy/public/404.html
363
- - spec/dummy/public/422.html
364
- - spec/dummy/public/500.html
365
- - spec/dummy/public/favicon.ico
401
+ - spec/dummy/log/development.log
402
+ - spec/dummy/log/test.log
366
403
  - spec/dummy/Rakefile
367
404
  - spec/factories/page_revisions.rb
405
+ - spec/factories/page_sections.rb
368
406
  - spec/factories/pages.rb
369
- - spec/factories/sections.rb
370
407
  - spec/models/page_revision_spec.rb
408
+ - spec/models/page_section_spec.rb
371
409
  - spec/models/page_spec.rb
372
- - spec/models/section_spec.rb
373
410
  - spec/rails_helper.rb
411
+ - spec/requests/middleware_spec.rb
374
412
  - spec/requests/page_revisions_spec.rb
375
413
  - spec/requests/pages_spec.rb
376
- - spec/requests/section_templates_spec.rb
414
+ - spec/requests/sections_spec.rb
377
415
  - spec/spec_helper.rb
378
416
  - spec/support/factory_girl.rb
379
417
  - spec/support/request_helpers.rb
418
+ - spec/support/section_helpers.rb
380
419
  - spec/support/shared_examples.rb
@@ -1,17 +0,0 @@
1
- module Ninetails
2
- class SectionTemplatesController < ApplicationController
3
-
4
- def index
5
- templates = Rails.root.join("app", "components", "section_template").children.collect do |entry|
6
- entry.basename.to_s.sub(/(\..*)$/, '').classify
7
- end
8
-
9
- render json: { templates: templates }
10
- end
11
-
12
- def show
13
- render json: "SectionTemplate::#{params[:id]}".safe_constantize.new.serialize
14
- end
15
-
16
- end
17
- end
@@ -1,30 +0,0 @@
1
- module Ninetails
2
- class Section < ActiveRecord::Base
3
- self.inheritance_column = nil
4
- has_many :page_revision_sections
5
- has_many :page_revisions, through: :page_revision_sections
6
-
7
- def to_builder
8
- Jbuilder.new do |json|
9
- json.call(self, :id, :name, :type, :tags, :elements)
10
- end
11
- end
12
-
13
- def template
14
- @template ||= "SectionTemplate::#{type}".safe_constantize.new
15
- end
16
-
17
- def deserialize
18
- template.elements_instances = []
19
-
20
- elements.each do |name, element_json|
21
- element = template.class.find_element name
22
- element.deserialize element_json
23
- template.elements_instances << element
24
- end
25
-
26
- template
27
- end
28
-
29
- end
30
- end
@@ -1,53 +0,0 @@
1
- # encoding: UTF-8
2
- # This file is auto-generated from the current state of the database. Instead
3
- # of editing this file, please use the migrations feature of Active Record to
4
- # incrementally modify your database, and then regenerate this schema definition.
5
- #
6
- # Note that this schema.rb definition is the authoritative source for your
7
- # database schema. If you need to create the application database on another
8
- # system, you should be using db:schema:load, not running all the migrations
9
- # from scratch. The latter is a flawed and unsustainable approach (the more migrations
10
- # you'll amass, the slower it'll run and the greater likelihood for issues).
11
- #
12
- # It's strongly recommended that you check this file into your version control system.
13
-
14
- ActiveRecord::Schema.define(version: 20151111085201) do
15
-
16
- # These are extensions that must be enabled in order to support this database
17
- enable_extension "plpgsql"
18
-
19
- create_table "ninetails_page_revision_sections", force: :cascade do |t|
20
- t.integer "page_revision_id"
21
- t.integer "section_id"
22
- end
23
-
24
- add_index "ninetails_page_revision_sections", ["page_revision_id"], name: "index_ninetails_page_revision_sections_on_page_revision_id", using: :btree
25
- add_index "ninetails_page_revision_sections", ["section_id"], name: "index_ninetails_page_revision_sections_on_section_id", using: :btree
26
-
27
- create_table "ninetails_page_revisions", force: :cascade do |t|
28
- t.integer "page_id"
29
- t.datetime "created_at", null: false
30
- t.datetime "updated_at", null: false
31
- t.string "message"
32
- end
33
-
34
- create_table "ninetails_pages", force: :cascade do |t|
35
- t.integer "current_revision_id"
36
- t.string "name"
37
- t.string "url"
38
- t.datetime "created_at", null: false
39
- t.datetime "updated_at", null: false
40
- end
41
-
42
- add_index "ninetails_pages", ["current_revision_id"], name: "index_ninetails_pages_on_current_revision_id", using: :btree
43
-
44
- create_table "ninetails_sections", force: :cascade do |t|
45
- t.string "name"
46
- t.string "type"
47
- t.json "elements"
48
- t.json "tags"
49
- t.datetime "created_at", null: false
50
- t.datetime "updated_at", null: false
51
- end
52
-
53
- end
@@ -1,7 +0,0 @@
1
- # Be sure to restart your server when you modify this file.
2
-
3
- # You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces.
4
- # Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ }
5
-
6
- # You can also remove all the silencers if you're trying to debug a problem that might stem from framework code.
7
- # Rails.backtrace_cleaner.remove_silencers!
@@ -1,16 +0,0 @@
1
- # Be sure to restart your server when you modify this file.
2
-
3
- # Add new inflection rules using the following format. Inflections
4
- # are locale specific, and you may define rules for as many different
5
- # locales as you wish. All of these examples are active by default:
6
- # ActiveSupport::Inflector.inflections(:en) do |inflect|
7
- # inflect.plural /^(ox)$/i, '\1en'
8
- # inflect.singular /^(ox)en/i, '\1'
9
- # inflect.irregular 'person', 'people'
10
- # inflect.uncountable %w( fish sheep )
11
- # end
12
-
13
- # These inflection rules are supported but not enabled by default:
14
- # ActiveSupport::Inflector.inflections(:en) do |inflect|
15
- # inflect.acronym 'RESTful'
16
- # end
@@ -1,4 +0,0 @@
1
- # Be sure to restart your server when you modify this file.
2
-
3
- # Add new mime types for use in respond_to blocks:
4
- # Mime::Type.register "text/richtext", :rtf
@@ -1,23 +0,0 @@
1
- # Files in the config/locales directory are used for internationalization
2
- # and are automatically loaded by Rails. If you want to use locales other
3
- # than English, add the necessary files in this directory.
4
- #
5
- # To use the locales, use `I18n.t`:
6
- #
7
- # I18n.t 'hello'
8
- #
9
- # In views, this is aliased to just `t`:
10
- #
11
- # <%= t('hello') %>
12
- #
13
- # To use a different locale, set it with `I18n.locale`:
14
- #
15
- # I18n.locale = :es
16
- #
17
- # This would use the information in config/locales/es.yml.
18
- #
19
- # To learn more, please read the Rails Internationalization guide
20
- # available at http://guides.rubyonrails.org/i18n.html.
21
-
22
- en:
23
- hello: "Hello world"
@@ -1,67 +0,0 @@
1
- <!DOCTYPE html>
2
- <html>
3
- <head>
4
- <title>The page you were looking for doesn't exist (404)</title>
5
- <meta name="viewport" content="width=device-width,initial-scale=1">
6
- <style>
7
- body {
8
- background-color: #EFEFEF;
9
- color: #2E2F30;
10
- text-align: center;
11
- font-family: arial, sans-serif;
12
- margin: 0;
13
- }
14
-
15
- div.dialog {
16
- width: 95%;
17
- max-width: 33em;
18
- margin: 4em auto 0;
19
- }
20
-
21
- div.dialog > div {
22
- border: 1px solid #CCC;
23
- border-right-color: #999;
24
- border-left-color: #999;
25
- border-bottom-color: #BBB;
26
- border-top: #B00100 solid 4px;
27
- border-top-left-radius: 9px;
28
- border-top-right-radius: 9px;
29
- background-color: white;
30
- padding: 7px 12% 0;
31
- box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
32
- }
33
-
34
- h1 {
35
- font-size: 100%;
36
- color: #730E15;
37
- line-height: 1.5em;
38
- }
39
-
40
- div.dialog > p {
41
- margin: 0 0 1em;
42
- padding: 1em;
43
- background-color: #F7F7F7;
44
- border: 1px solid #CCC;
45
- border-right-color: #999;
46
- border-left-color: #999;
47
- border-bottom-color: #999;
48
- border-bottom-left-radius: 4px;
49
- border-bottom-right-radius: 4px;
50
- border-top-color: #DADADA;
51
- color: #666;
52
- box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
53
- }
54
- </style>
55
- </head>
56
-
57
- <body>
58
- <!-- This file lives in public/404.html -->
59
- <div class="dialog">
60
- <div>
61
- <h1>The page you were looking for doesn't exist.</h1>
62
- <p>You may have mistyped the address or the page may have moved.</p>
63
- </div>
64
- <p>If you are the application owner check the logs for more information.</p>
65
- </div>
66
- </body>
67
- </html>