atozfunc 0.1.1

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 26ffb742ca0c855de45a8a9badc9d63dfd0f7117fe495f1dd70e53773a8f68e3
4
+ data.tar.gz: b56f5d797d2d5eb44ac5ab2e562b8e7f325f11bf22ab257593695e8c050d77c3
5
+ SHA512:
6
+ metadata.gz: dd889b2bd6acd9e16f981dc53fbd55e638c2aec4fee16156f8f99a18bcbc397da7d825d0aa3514d4c82d01a1259bd2755569aef6554293cca8fd224a6b0b7faf
7
+ data.tar.gz: 3c5be5d9871794e5c31f6cdf985d863ae2b1d127edfab6fd125dec3bcfc913dab55ffaac7ec8980db1557bee46fdc3ae4de73ef21168fe3ca5b3e447e141efd0
@@ -0,0 +1,31 @@
1
+ class AtozController < ApplicationController
2
+
3
+ def render_response(type = "error", options = {})
4
+ render json: construct_response(type, options)
5
+ end
6
+
7
+ def construct_response(type, options = {})
8
+ options = {} if !options.class.eql?(Hash)
9
+ options[:code] = 200 if options[:code].blank?
10
+ options[:messages] = [] if options[:messages].blank?
11
+ options[:data] = {} if options[:data].blank?
12
+ options[:meta] = {} if options[:meta].blank?
13
+ options[:return] = {}
14
+
15
+ options[:meta].merge!({
16
+ code: options[:code]
17
+ }) if type.eql?("error")
18
+
19
+ options[:meta].merge!({
20
+ code: options[:code]
21
+ }) if !type.eql?("error")
22
+
23
+ return options[:return].merge!({
24
+ meta: options[:meta].merge!({
25
+ messages: options[:messages]
26
+ }),
27
+ data: options[:data]
28
+ })
29
+ end
30
+
31
+ end
@@ -0,0 +1,9 @@
1
+ require "atozfunc/version"
2
+ require "rails"
3
+
4
+ module Atozfunc
5
+ autoload :General, 'atozfunc/general'
6
+ end
7
+
8
+
9
+ require "atozfunc/engine"
@@ -0,0 +1,4 @@
1
+ module Atozfunc
2
+ module Controllers
3
+ end
4
+ end
@@ -0,0 +1,3 @@
1
+ module Atozfunc
2
+ class Engine < Rails::Engine ;end
3
+ end
@@ -0,0 +1,8 @@
1
+
2
+ module Atozfunc
3
+ class General
4
+ def self.test
5
+ puts "abcbabcbabs"
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,3 @@
1
+ module Atozfunc
2
+ VERSION = "0.1.1"
3
+ end
@@ -0,0 +1,28 @@
1
+ require 'generators/atozfunc/generator_helpers'
2
+
3
+ module Atozfunc
4
+ module Generators
5
+ # Custom scaffolding generator
6
+ class ControllerGenerator < Rails::Generators::NamedBase
7
+ include Rails::Generators::ResourceHelpers
8
+ include Atozfunc::Generators::GeneratorHelpers
9
+ source_root File.expand_path('../templates', __FILE__)
10
+
11
+ class_option :skip_show, type: :boolean, default: false, desc: "Skip show action"
12
+ class_option :with_params, type: :boolean, default: false, desc: "with method params"
13
+ class_option :skip_route, type: :boolean, default: false, desc: "skip adding routes"
14
+
15
+ desc "Generates controller, controller_spec and views for the model with the given NAME."
16
+
17
+ def copy_controller_and_spec_files
18
+ template "controller.rb", File.join("app/controllers/#{controller_dir}", "#{controller_file_name}_controller.rb")
19
+ end
20
+
21
+ def add_routes
22
+ routes_string = "resources :#{plural_name}"
23
+ routes_string += ', except: :show' unless show_action?
24
+ route routes_string unless skip_route?
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,61 @@
1
+ module Atozfunc
2
+ module Generators
3
+ # Some helpers for generating scaffolding
4
+ module GeneratorHelpers
5
+ attr_accessor :options, :attributes
6
+
7
+ private
8
+
9
+ def model_columns_for_attributes
10
+ class_name.constantize.columns.reject do |column|
11
+ column.name.to_s =~ /^(id|user_id|created_at|updated_at)$/
12
+ end
13
+ end
14
+
15
+ def editable_attributes
16
+ attributes ||= model_columns_for_attributes.map do |column|
17
+ Rails::Generators::GeneratedAttribute.new(column.name.to_s, column.type.to_s)
18
+ end
19
+ return attributes.map { |a| a.name.prepend(':') }.join(', ')
20
+ rescue
21
+ {}
22
+ end
23
+
24
+ def show_action?
25
+ !options['skip_show']
26
+ end
27
+
28
+ def skip_route?
29
+ options['skip_route']
30
+ end
31
+
32
+ def with_params?
33
+ options['with_params']
34
+ end
35
+
36
+ def controller_class_name
37
+ @controller_class_name = super
38
+ return @controller_class_name
39
+ end
40
+
41
+ def split_controller
42
+ controller_class_name.split("::")
43
+ end
44
+
45
+ def is_group_controller?
46
+ split_controller.size > 1
47
+ end
48
+
49
+ def cutted_last_namespace
50
+ split_controller.size - 2
51
+ end
52
+
53
+ def controller_dir
54
+ if is_group_controller?
55
+ dir = split_controller[0..cutted_last_namespace].join("/").downcase
56
+ return dir
57
+ end
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,67 @@
1
+ class <%= controller_class_name %>Controller < Atozfunc::AtozController
2
+
3
+ def index
4
+ @<%=plural_name %> = <%= singular_name.camelize %>.all
5
+ if @<%= plural_name %>.present?
6
+ render_response("success", { messages: ['success'], code: 200, data: @<%= plural_name %> })
7
+ else
8
+ render_response("warning", { messages: ['data not available'], code: 402, data: @<%= plural_name %> })
9
+ end
10
+ end
11
+
12
+ def show
13
+ @<%=singular_name %> = <%= singular_name.camelize %>.find(params[:id])
14
+ if @<%= plural_name %>.present?
15
+ render_response("success", { messages: ['success'], code: 200, data: @<%= singular_name %> })
16
+ else
17
+ render_response("warning", { messages: ['data not available'], code: 402, data: @<%= singular_name %> })
18
+ end
19
+ end
20
+
21
+ def new
22
+ @<%=singular_name %> = <%= singular_name.camelize %>.new
23
+ render_response("success", { messages: ['success'], code: 200, data: @<%= singular_name %> })
24
+ end
25
+
26
+ def create
27
+ @<%=singular_name %> = <%= singular_name.camelize %>.new(<%= singular_name %>_params)
28
+ if @<%= plural_name %>.save
29
+ render_response("success", { messages: ['success'], code: 200, data: @<%= singular_name %> })
30
+ else
31
+ render_response("warning", { messages: @<%=singular_name %>.errors.full_messages, code: 402, data: @<%= singular_name %> })
32
+ end
33
+ end
34
+
35
+ def edit
36
+ @<%=singular_name %> = <%= singular_name.camelize %>.find(params[:id])
37
+ if @<%= plural_name %>.present?
38
+ render_response("success", { messages: ['success'], code: 200, data: @<%= singular_name %> })
39
+ else
40
+ render_response("warning", { messages: ['data not available'], code: 402, data: @<%= singular_name %> })
41
+ end
42
+ end
43
+
44
+ def update
45
+ @<%=singular_name %> = <%= singular_name.camelize %>.update(<%= singular_name %>_params)
46
+ if @<%=singular_name %>.errors.blank?
47
+ render_response("success", { messages: ['success'], code: 200, data: @<%= singular_name %> })
48
+ else
49
+ render_response("warning", { messages: @<%=singular_name %>.errors.full_messages, code: 402, data: @<%= singular_name %> })
50
+ end
51
+ end
52
+
53
+ def destroy
54
+ @<%=singular_name %> = <%= singular_name.camelize %>.find(params[:id])
55
+ if @<%=singular_name %>.destroy
56
+ render_response("success", { messages: ['success'], code: 200, data: @<%= singular_name %> })
57
+ else
58
+ render_response("warning", { messages: @<%=singular_name %>.errors.full_messages, code: 402, data: @<%= singular_name %> })
59
+ end
60
+ end
61
+
62
+ private
63
+
64
+ def <%= singular_name %>_params
65
+ params.require(:<%= singular_name %>).permit(<%= editable_attributes %>)
66
+ end
67
+ end
metadata ADDED
@@ -0,0 +1,84 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: atozfunc
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ platform: ruby
6
+ authors:
7
+ - Gilang Ramadan
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2019-02-15 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.16'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.16'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ description: THIS GEM FOR ATOZ APPLICATION FUNCTION
42
+ email:
43
+ - mgrware@gmail.com
44
+ executables: []
45
+ extensions: []
46
+ extra_rdoc_files: []
47
+ files:
48
+ - app/controllers/atoz_controller.rb
49
+ - lib/atozfunc.rb
50
+ - lib/atozfunc/controllers/atoz_controller.rb
51
+ - lib/atozfunc/engine.rb
52
+ - lib/atozfunc/general.rb
53
+ - lib/atozfunc/version.rb
54
+ - lib/generators/atozfunc/controller_generator.rb
55
+ - lib/generators/atozfunc/generator_helpers.rb
56
+ - lib/generators/atozfunc/templates/controller.rb
57
+ homepage: http://mgrdev.com
58
+ licenses: []
59
+ metadata:
60
+ allowed_push_host: https://rubygems.org
61
+ homepage_uri: http://mgrdev.com
62
+ source_code_uri: https://github.com/mgrware/atozfunc
63
+ changelog_uri: https://github.com/mgrware/atozfunc/change.md
64
+ post_install_message:
65
+ rdoc_options: []
66
+ require_paths:
67
+ - lib
68
+ required_ruby_version: !ruby/object:Gem::Requirement
69
+ requirements:
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: '0'
73
+ required_rubygems_version: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - ">="
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ requirements: []
79
+ rubyforge_project:
80
+ rubygems_version: 2.7.7
81
+ signing_key:
82
+ specification_version: 4
83
+ summary: THIS GEM FOR ATOZ APPLICATION FUNCTION
84
+ test_files: []