api_scaffold 0.2.0 → 0.2.1

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: bcd72aeae0a6c2bb2083da25216c0c58297ae64efbbe5300d8cdc65b36488cd5
4
- data.tar.gz: 53049968a234146abaa00dd295b255939658c888093d3350b5913bac30ca1563
3
+ metadata.gz: 837e66eb2af89f787a9e86612f616061d661cf6e32a44e0abc73481c6b90e921
4
+ data.tar.gz: '0393d39076b3cc3390d8a9bd5d80c48861133c5b0e5bbdb1741f92dfced9c787'
5
5
  SHA512:
6
- metadata.gz: 8a6841a34cedf61627603a1186e7fabf19f344fff5abb384b7e2c2e71e348bb09d4c3b445355876215da2ddfcea345217006487e9a3057463dcfc032b0c21b70
7
- data.tar.gz: ad2a7743d7441b37894b00d7b4d5653f05a3830f726a780e38926bafec6ed64b7e07de5f5bbcc1ccd0de14ccc85f5f9826087a2184bbd28c8d93506ab895e96a
6
+ metadata.gz: 630c5fe1f9c1c83b90fa5d09445dc9992aa8fffb6bc2a91b339d09840710362452955064934e827f6835bdb6ae62406e930f8e4ac3bc8def3153d4b22a6f36d5
7
+ data.tar.gz: 3ed60f893e21de1d93cb6f91abd0b546916eae373e11a9e5c2ec8ef12c5c2b197f4347ec9d27e1c7ee41fc395496c8f0d6314e6218db343ce83fccc9f43699ad
data/README.md CHANGED
@@ -1,12 +1,16 @@
1
1
  # ApiScaffold
2
2
 
3
- A useful Rails API generator for scaffolding. Compatible with :
3
+ A useful Rails API generator for scaffolding that follows the jsonapi.org specification (http://jsonapi.org/). Works with :
4
4
  - Fast JSON API/Active Model Serializers
5
5
  - Rspec/TestUnit
6
6
  - Fixtures/FactoryBot
7
7
  - Api Pagination
8
- - Apipie
9
8
 
9
+ For example if you have :
10
+ - Fast JSON API/AMS in your gemfile ? the scaffold will create a serializer and generate a controller using the scaffolded serializer.
11
+ - Rspec as your configured test framework ? the scaffold will generate rspec working controller tests
12
+ - Apipie installed ? the scaffold will generate api documentation
13
+ - api-pagination in your gemfile ? the scaffold will paginate the index method of scaffolded controller
10
14
  ## Installation
11
15
 
12
16
  Add this line to your application's Gemfile:
@@ -44,6 +48,7 @@ If you wish to specify the api version:
44
48
 
45
49
  ## TODO
46
50
  - Nested resources
51
+ - GraphQL
47
52
 
48
53
  ## Contributing
49
54
 
@@ -1,3 +1,3 @@
1
1
  module ApiScaffold
2
- VERSION = "0.2.0"
2
+ VERSION = "0.2.1"
3
3
  end
@@ -22,10 +22,6 @@ module ApiScaffold
22
22
  Gem::Specification::find_all_by_name(gem_name).any?
23
23
  end
24
24
 
25
- def apipie_installed?
26
- File.exists? File.join(destination_root, "config/initializers/apipie.rb")
27
- end
28
-
29
25
  def error_serializer_created?
30
26
  File.exists? File.join(destination_root, "app/serializers/error_serializer.rb")
31
27
  end
@@ -61,10 +57,6 @@ module ApiScaffold
61
57
  end
62
58
  end.sort.to_h
63
59
  end
64
-
65
- def apipie_param(attribute_name)
66
- "param :#{attribute_name}, String, 'TODO: #{attribute_name} descrption'"
67
- end
68
60
  end
69
61
  end
70
62
  end
@@ -6,30 +6,16 @@ require_dependency "<%= namespaced_path %>/application_controller"
6
6
  class <%= prefixed_controller_class_name %>Controller < ApplicationController
7
7
  before_action :set_<%= singular_table_name %>, only: [:show, :update, :destroy]
8
8
 
9
- <% if apipie_installed? -%>def_param_group :<%= singular_table_name %> do
10
- param :<%= singular_table_name %>, Hash, required: true, action_aware: true do
11
- <% attributes_names.each do |attribute_name| -%><%= indent(apipie_param(attribute_name), 2) %>
12
- <% end -%>end
13
- end
14
-
15
- api :GET, '/<%= plural_table_name %>', 'List <%= plural_table_name %>'
16
- <% if gem_available?('api-pagination') %>param :page, String, 'Paginate results'
17
- param :per_page, String, 'Number of records per page'
18
- <% end -%>
19
- <% end -%>def index
9
+ def index
20
10
  @<%= plural_table_name %> = <%= 'paginate ' if gem_available?('api-pagination') %><%= orm_class.all(class_name) %>
21
11
  render json: <%= "@#{plural_table_name}" %>
22
12
  end
23
-
24
13
 
25
- <% if apipie_installed? -%>api :GET, '/<%= [prefix, plural_table_name].join("/") %>/:id', 'Show <%= singular_table_name %>'
26
- <% end -%>def show
14
+ def show
27
15
  render json: <%= "@#{singular_table_name}" %>
28
16
  end
29
17
 
30
- <% if apipie_installed? -%>api :POST, '/<%= [prefix, plural_table_name].join("/") %>', 'Create <%= singular_table_name %>'
31
- param_group :<%= singular_table_name %>
32
- <% end -%>def create
18
+ def create
33
19
  @<%= singular_table_name %> = <%= orm_class.build(class_name, "#{singular_table_name}_params") %>
34
20
 
35
21
  if @<%= orm_instance.save %>
@@ -39,9 +25,7 @@ class <%= prefixed_controller_class_name %>Controller < ApplicationController
39
25
  end
40
26
  end
41
27
 
42
- <% if apipie_installed? -%>api :PUT, '/<%= [prefix, plural_table_name].join("/") %>/:id', 'Update <%= singular_table_name %>'
43
- param_group :<%= singular_table_name %>
44
- <% end -%>def update
28
+ def update
45
29
  if @<%= orm_instance.update("#{singular_table_name}_params") %>
46
30
  render json: <%= "@#{singular_table_name}" %>
47
31
  else
@@ -49,8 +33,7 @@ class <%= prefixed_controller_class_name %>Controller < ApplicationController
49
33
  end
50
34
  end
51
35
 
52
- <% if apipie_installed? -%>api :DELETE, '/<%= [prefix, plural_table_name].join("/") %>/:id', 'Delete <%= singular_table_name %>'
53
- <% end -%>def destroy
36
+ def destroy
54
37
  @<%= orm_instance.destroy %>
55
38
  end
56
39
 
@@ -6,28 +6,16 @@ require_dependency "<%= namespaced_path %>/application_controller"
6
6
  class <%= prefixed_controller_class_name %>Controller < ApplicationController
7
7
  before_action :set_<%= singular_table_name %>, only: [:show, :update, :destroy]
8
8
 
9
- <% if apipie_installed? -%>def_param_group :<%= singular_table_name %> do
10
- param :<%= singular_table_name %>, Hash, required: true, action_aware: true do
11
- <% attributes_names.each do |attribute_name| -%><%= indent(apipie_param(attribute_name), 2) %>
12
- <% end -%>end
13
- end
14
-
15
- api :GET, '/<%= [prefix, plural_table_name].join("/") %>', 'List <%= plural_table_name %>'
16
- <% if gem_available?('api-pagination') %>param :page, String, 'Paginate results'
17
- param :per_page, String, 'Number of records per page'
18
- <% end -%><% end -%>def index
9
+ def index
19
10
  @<%= plural_table_name %> = <%= 'paginate ' if gem_available?('api-pagination') %><%= orm_class.all(class_name) %>
20
11
  render json: <%= class_name %>Serializer.new(<%= "@#{plural_table_name}" %>)
21
12
  end
22
13
 
23
- <% if apipie_installed? -%>api :GET, '/<%= [prefix, plural_table_name].join("/") %>/:id', 'Show <%= singular_table_name %>'
24
- <% end -%>def show
14
+ def show
25
15
  render json: <%= class_name %>Serializer.new(<%= "@#{singular_table_name}" %>)
26
16
  end
27
17
 
28
- <% if apipie_installed? -%>api :POST, '/<%= [prefix, plural_table_name].join("/") %>', 'Create <%= singular_table_name %>'
29
- param_group :<%= singular_table_name %>
30
- <% end -%>def create
18
+ def create
31
19
  @<%= singular_table_name %> = <%= orm_class.build(class_name, "#{singular_table_name}_params") %>
32
20
 
33
21
  if @<%= orm_instance.save %>
@@ -37,9 +25,7 @@ class <%= prefixed_controller_class_name %>Controller < ApplicationController
37
25
  end
38
26
  end
39
27
 
40
- <% if apipie_installed? -%>api :PUT, '/<%= [prefix, plural_table_name].join("/") %>/:id', 'Update <%= singular_table_name %>'
41
- param_group :<%= singular_table_name %>
42
- <% end -%>def update
28
+ def update
43
29
  if @<%= orm_instance.update("#{singular_table_name}_params") %>
44
30
  render json: <%= class_name %>Serializer.new(<%= "@#{singular_table_name}" %>)
45
31
  else
@@ -47,8 +33,7 @@ class <%= prefixed_controller_class_name %>Controller < ApplicationController
47
33
  end
48
34
  end
49
35
 
50
- <% if apipie_installed? -%>api :DELETE, '/<%= [prefix, plural_table_name].join("/") %>/:id', 'Delete <%= singular_table_name %>'
51
- <% end -%>def destroy
36
+ def destroy
52
37
  @<%= orm_instance.destroy %>
53
38
  end
54
39
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: api_scaffold
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stefan Atkinson
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-08-25 00:00:00.000000000 Z
11
+ date: 2018-10-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler