controller_less 0.0.1.pre

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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 57720b25dbbccb331eb8a46ab8d5b0fbe1b3e41e
4
+ data.tar.gz: 73ff56efe5b8fb9bee01665e29545f2f5f8c5c9d
5
+ SHA512:
6
+ metadata.gz: 57b4243833fa96d38456ff9ff523aa6d9439943fe70699192dc15b7caff4dcbfc56bb6636a7555c90cf34f5d853905a0b89815e91fcf6f1d6c89c4ea5444090a
7
+ data.tar.gz: cb3801d71adda781c383065772308447d9172babb4b6129ccc9ca62e74b6ad90ab6ffb4a32d28d81eb4e98e14eb82ac253f085a1eceb2d9fea0517b3a20c7f80
@@ -0,0 +1,20 @@
1
+ require File.join(File.dirname(__FILE__), "lib", "controller_less", "version")
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = 'controller_less'
5
+ s.license = 'MIT'
6
+ s.version = ControllerLess::VERSION
7
+ s.homepage = 'https://github.com/victorcreed/controller_less'
8
+ s.authors = ['Kamal Ejaz']
9
+ s.email = ['a2ninek@yahoo.com']
10
+ s.description = 'micro library to dry out basic crud rails controllers.'
11
+ s.summary = 'micro library to dry out basic crud rails controllers.'
12
+
13
+ s.files = `git ls-files`.split("\n").sort
14
+ s.test_files = `git ls-files -- {spec,features}/*`.split("\n")
15
+
16
+ s.required_ruby_version = '>= 1.9.3'
17
+
18
+ s.add_dependency 'inherited_resources', '~> 1.6'
19
+ s.add_dependency 'rails', '>= 3.2', '< 5.0'
20
+ end
@@ -0,0 +1,38 @@
1
+ require 'controller_less/helpers/settings'
2
+ require 'controller_less/resource.rb'
3
+ require 'controller_less/resources_controller'
4
+
5
+ module ControllerLess
6
+ class Application
7
+ include Settings
8
+ include Settings::Inheritance
9
+
10
+ setting :load_paths, [Rails.root.join("app", "cls")]
11
+ setting :routes_list, []
12
+ def setup!
13
+ files.each { |file| load(file) }
14
+ end
15
+ def files
16
+ load_paths.flatten.compact.uniq.flat_map { |path| Dir["#{path}/**/*.rb"] }
17
+ end
18
+ def register(name, &block)
19
+ resource = ControllerLess::Resource.new(name)
20
+ unless Object.const_defined?(resource.controller_name)
21
+ eval "class ::#{resource.controller_name} < ControllerLess::ResourcesController; end"
22
+ resource.controller.cl_config = resource
23
+ end
24
+ add_route(name.name.to_s.downcase.pluralize)
25
+ end
26
+ def add_route(route_name)
27
+ (self.routes_list ||= Array.new).push(route_name)
28
+ end
29
+ def load_routes
30
+ route_reload
31
+ end
32
+ def route_reload
33
+ Rails.application.routes.draw do
34
+ ControllerLess.application.routes_list.each { |route_name| resources(route_name) }
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,4 @@
1
+ module ControllerLess
2
+ class BaseController < InheritedResources::Base
3
+ end
4
+ end
@@ -0,0 +1,59 @@
1
+ require 'active_support/concern'
2
+ module ControllerLess
3
+ module Settings
4
+ extend ActiveSupport::Concern
5
+ included do
6
+ def read_default_settings(name)
7
+ default_setting[name]
8
+ end
9
+ def default_setting
10
+ self.class.default_settings
11
+ end
12
+ end
13
+ class_methods do
14
+ def default_settings
15
+ @default_settings ||= {}
16
+ end
17
+
18
+ def setting(name, default)
19
+ default_settings[name] = default
20
+ attr_writer name
21
+ define_method name do
22
+ if instance_variable_defined? "@#{name}"
23
+ instance_variable_get "@#{name}"
24
+ else
25
+ read_default_settings name
26
+ end
27
+ end
28
+ end
29
+ define_method "#{name}?" do
30
+ value = public_send(name)
31
+ if value.is_a? Array
32
+ value.any?
33
+ else
34
+ value.present?
35
+ end
36
+ end
37
+
38
+ end
39
+ module Inheritance
40
+
41
+ extend ActiveSupport::Concern
42
+ class_methods do
43
+ def settings_inherited_by(heir)
44
+ (@setting_heirs ||= []) << heir
45
+ heir.send :include, ControllerLess::Settings
46
+ end
47
+ def inheritable_setting(name, default)
48
+ setting name, default
49
+ @setting_heirs.each{ |c| c.setting name, default }
50
+ end
51
+
52
+ def deprecated_inheritable_setting(name, default)
53
+ deprecated_setting name, default
54
+ @setting_heirs.each{ |c| c.deprecated_setting name, default }
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,22 @@
1
+ module ControllerLess
2
+ class Resource
3
+ attr_accessor :resource_class_name, :options
4
+ def initialize(rc, opt={})
5
+ self.resource_class_name, self.options = "::#{rc.name}", opt
6
+ end
7
+ def resource_name
8
+ resource_class
9
+ end
10
+ def resource_class
11
+ resource_class_name.constantize
12
+ end
13
+ def controller_name
14
+ resource_name.name.pluralize.camelize + "Controller"
15
+ end
16
+ def controller
17
+ @controller ||= controller_name.constantize
18
+ end
19
+
20
+ end
21
+
22
+ end
@@ -0,0 +1,39 @@
1
+ module ControllerLess
2
+ class ResourcesController < BaseController
3
+ class << self
4
+ attr_accessor :cl_config
5
+ end
6
+ def self.cl_config=(config)
7
+ self.controller_name = config.controller_name
8
+ self.resource_class = config.resource_class
9
+ end
10
+ def cl_config
11
+ self.class.cl_config
12
+ end
13
+ def self.inherited(base)
14
+ super(base)
15
+ base.override_resource_class_methods!
16
+ end
17
+
18
+ def self.override_resource_class_methods!
19
+ class_exec do
20
+ def self.resource_class=(klass); end
21
+
22
+ def self.resource_class
23
+ @cl_config ? @cl_config.resource_class : nil
24
+ end
25
+
26
+ def self.controller_name=(name); end
27
+ def self.controller_name
28
+ @cl_config.try(:controller_name)
29
+ end
30
+ def controller_name
31
+ self.class.controller_name
32
+ end
33
+ def resource_class
34
+ self.class.resource_class
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,3 @@
1
+ module ControllerLess
2
+ VERSION = '0.0.1.pre'
3
+ end
@@ -0,0 +1,20 @@
1
+ require 'active_support/core_ext'
2
+ require 'inherited_resources'
3
+
4
+ module ControllerLess
5
+ autoload :VERSION, 'controller_less/version'
6
+ autoload :Application, 'controller_less/application'
7
+ autoload :BaseController, 'controller_less/base_controller'
8
+ class << self
9
+ attr_accessor :application
10
+ def application
11
+ @application ||= ControllerLess::Application.new
12
+ end
13
+ def setup
14
+ application.setup!
15
+ yield application
16
+ end
17
+ delegate :register, to: :application
18
+ delegate :load_routes, to: :application
19
+ end
20
+ end
metadata ADDED
@@ -0,0 +1,86 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: controller_less
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1.pre
5
+ platform: ruby
6
+ authors:
7
+ - Kamal Ejaz
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-03-11 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: inherited_resources
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.6'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.6'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rails
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '3.2'
34
+ - - "<"
35
+ - !ruby/object:Gem::Version
36
+ version: '5.0'
37
+ type: :runtime
38
+ prerelease: false
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: '3.2'
44
+ - - "<"
45
+ - !ruby/object:Gem::Version
46
+ version: '5.0'
47
+ description: micro library to dry out basic crud rails controllers.
48
+ email:
49
+ - a2ninek@yahoo.com
50
+ executables: []
51
+ extensions: []
52
+ extra_rdoc_files: []
53
+ files:
54
+ - controller_less.gemspec
55
+ - lib/controller_less.rb
56
+ - lib/controller_less/application.rb
57
+ - lib/controller_less/base_controller.rb
58
+ - lib/controller_less/helpers/settings.rb
59
+ - lib/controller_less/resource.rb
60
+ - lib/controller_less/resources_controller.rb
61
+ - lib/controller_less/version.rb
62
+ homepage: https://github.com/victorcreed/controller_less
63
+ licenses:
64
+ - MIT
65
+ metadata: {}
66
+ post_install_message:
67
+ rdoc_options: []
68
+ require_paths:
69
+ - lib
70
+ required_ruby_version: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: 1.9.3
75
+ required_rubygems_version: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - ">"
78
+ - !ruby/object:Gem::Version
79
+ version: 1.3.1
80
+ requirements: []
81
+ rubyforge_project:
82
+ rubygems_version: 2.4.3
83
+ signing_key:
84
+ specification_version: 4
85
+ summary: micro library to dry out basic crud rails controllers.
86
+ test_files: []