ninetails 0.0.2 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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>