atozfunc 0.1.1

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