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 +7 -0
- data/controller_less.gemspec +20 -0
- data/lib/controller_less/application.rb +38 -0
- data/lib/controller_less/base_controller.rb +4 -0
- data/lib/controller_less/helpers/settings.rb +59 -0
- data/lib/controller_less/resource.rb +22 -0
- data/lib/controller_less/resources_controller.rb +39 -0
- data/lib/controller_less/version.rb +3 -0
- data/lib/controller_less.rb +20 -0
- metadata +86 -0
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,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,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: []
|