controller_less 0.0.1.pre

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