vkill_gems_methods 0.1.0
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.
- data/.gitignore +4 -0
- data/Gemfile +4 -0
- data/README.markdown +34 -0
- data/Rakefile +1 -0
- data/lib/vkill_gems_methods/active_record/base.rb +75 -0
- data/lib/vkill_gems_methods/rails/generators/base.rb +34 -0
- data/lib/vkill_gems_methods/version.rb +4 -0
- data/lib/vkill_gems_methods.rb +13 -0
- data/vkill_gems_methods.gemspec +27 -0
- metadata +110 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/README.markdown
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
#VkillGemsMethods
|
2
|
+
|
3
|
+
VkillGemsMethods is my'gems public methods.
|
4
|
+
|
5
|
+
* https://github.com/vkill/vkill_gems_methods
|
6
|
+
|
7
|
+
|
8
|
+
##Supported versions
|
9
|
+
|
10
|
+
* Ruby 1.8.7, 1.9.2, 1.9.3
|
11
|
+
|
12
|
+
* Rails 3.0.x, 3.1.x
|
13
|
+
|
14
|
+
|
15
|
+
##Usage Example
|
16
|
+
|
17
|
+
Use in rails generators
|
18
|
+
|
19
|
+
class MyGenerator < Rails::Generators::Base
|
20
|
+
source_root File.expand_path('../templates', __FILE__)
|
21
|
+
include VkillGemsMethods::Rails::Generators::Base
|
22
|
+
ActiveRecord::Base.send :include, VkillGemsMethods::ActiveRecord::Base #can use ActiveRecord::Base.models
|
23
|
+
def create_file_test
|
24
|
+
say_info "test say_info method, method from VkillGemsMethods::Rails::Generators::Base"
|
25
|
+
ActiveRecord::Base.models do |model|
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
|
31
|
+
##Copyright
|
32
|
+
|
33
|
+
Copyright (c) 2011 vkill.net .
|
34
|
+
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
@@ -0,0 +1,75 @@
|
|
1
|
+
module VkillGemsMethods
|
2
|
+
module ActiveRecord
|
3
|
+
module Base
|
4
|
+
extend ActiveSupport::Concern
|
5
|
+
|
6
|
+
module ClassMethods
|
7
|
+
|
8
|
+
def all_models(&block)
|
9
|
+
models_block descendants_all_models, &block
|
10
|
+
end
|
11
|
+
|
12
|
+
def abstract_models(&block)
|
13
|
+
models_block descendants_abstract_models, &block
|
14
|
+
end
|
15
|
+
|
16
|
+
def single_table_inheritance_super_models(&block)
|
17
|
+
models_block descendants_single_table_inheritance_super_models, &block
|
18
|
+
end
|
19
|
+
|
20
|
+
def models(&block)
|
21
|
+
models_block descendants_models, &block
|
22
|
+
end
|
23
|
+
|
24
|
+
private
|
25
|
+
def models_block(models, &block)
|
26
|
+
models.each do |model|
|
27
|
+
yield model, attributes(model)
|
28
|
+
end if block
|
29
|
+
end
|
30
|
+
|
31
|
+
def descendants_all_models
|
32
|
+
@@descendants_modeles ||= (
|
33
|
+
::Rails.application.eager_load!
|
34
|
+
::ActiveRecord::Base.descendants.delete_if do |model|
|
35
|
+
!model.table_exists? or !model.respond_to?(:columns_hash)
|
36
|
+
end
|
37
|
+
)
|
38
|
+
end
|
39
|
+
|
40
|
+
def descendants_abstract_models
|
41
|
+
@@descendants_abstract_models ||= (
|
42
|
+
descendants_all_models.take_while do |model|
|
43
|
+
model.abstract_class?
|
44
|
+
end
|
45
|
+
)
|
46
|
+
end
|
47
|
+
|
48
|
+
def descendants_single_table_inheritance_super_models
|
49
|
+
@@descendants_single_table_inheritance_super_models ||= (
|
50
|
+
descendants_all_models.take_while do |model|
|
51
|
+
model.columns_hash.keys.include?('type') and !model.descendants.blank?
|
52
|
+
end
|
53
|
+
)
|
54
|
+
end
|
55
|
+
|
56
|
+
def descendants_models
|
57
|
+
@@descendants_models ||= (
|
58
|
+
descendants_all_models - descendants_abstract_models - descendants_single_table_inheritance_super_models
|
59
|
+
)
|
60
|
+
end
|
61
|
+
|
62
|
+
# result => { column:type }
|
63
|
+
def attributes(model)
|
64
|
+
Hash[ model.columns_hash.map { |column_name,column_attr| [column_name, column_attr.type] } ]
|
65
|
+
end
|
66
|
+
|
67
|
+
end
|
68
|
+
|
69
|
+
module InstanceMethods
|
70
|
+
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module VkillGemsMethods
|
2
|
+
module Rails
|
3
|
+
module Generators
|
4
|
+
module Base
|
5
|
+
extend ActiveSupport::Concern
|
6
|
+
|
7
|
+
module ClassMethods
|
8
|
+
|
9
|
+
end
|
10
|
+
|
11
|
+
module InstanceMethods
|
12
|
+
def say_custom(type='warn', text) #example, type choise in FATAL,ERROR,WARN,INFO,DEBUG
|
13
|
+
ansicolor = #more ansicolor => https://github.com/flori/term-ansicolor
|
14
|
+
case type.downcase.to_s
|
15
|
+
when 'fatal'; '31m'
|
16
|
+
when 'error'; '31m'
|
17
|
+
when 'warn'; '36m'
|
18
|
+
when 'info'; '32m'
|
19
|
+
when 'debug'; '34m'
|
20
|
+
else; '0m'
|
21
|
+
end
|
22
|
+
say "\033[1m\033[#{ ansicolor }" + type.to_s.upcase.rjust(10) + "\033[0m" + " #{text}"
|
23
|
+
end
|
24
|
+
def say_fatal(text); say_custom('fatal', text); exit; end
|
25
|
+
def say_error(text); say_custom('error', text); exit; end
|
26
|
+
def say_warn(text); say_custom('warn', text); end
|
27
|
+
def say_info(text); say_custom('info', text); end
|
28
|
+
def say_debug(text); say_custom('debug', text); end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require "active_support/concern"
|
2
|
+
require "active_support/core_ext/object"
|
3
|
+
require "active_support/core_ext/class/attribute_accessors"
|
4
|
+
require "active_support/core_ext/module/attribute_accessors"
|
5
|
+
|
6
|
+
require "vkill_gems_methods/version"
|
7
|
+
|
8
|
+
require "vkill_gems_methods/active_record/base"
|
9
|
+
require "vkill_gems_methods/rails/generators/base"
|
10
|
+
|
11
|
+
module VkillGemsMethods
|
12
|
+
end
|
13
|
+
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "vkill_gems_methods/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "vkill_gems_methods"
|
7
|
+
s.version = VkillGemsMethods::VERSION
|
8
|
+
s.authors = ["vkill"]
|
9
|
+
s.email = ["vkill.net@gmail.com"]
|
10
|
+
s.homepage = ""
|
11
|
+
s.summary = "vkill'gems public methods"
|
12
|
+
s.description = "vkill'gems public methods"
|
13
|
+
|
14
|
+
s.rubyforge_project = "vkill_gems_methods"
|
15
|
+
|
16
|
+
s.files = `git ls-files`.split("\n")
|
17
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
|
+
s.require_paths = ["lib"]
|
20
|
+
|
21
|
+
s.add_development_dependency 'bundler'
|
22
|
+
s.add_development_dependency "rake"
|
23
|
+
s.add_development_dependency "rspec"
|
24
|
+
s.add_development_dependency "guard-rspec"
|
25
|
+
s.add_dependency "activesupport", "~> 3.0"
|
26
|
+
end
|
27
|
+
|
metadata
ADDED
@@ -0,0 +1,110 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: vkill_gems_methods
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- vkill
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2011-11-20 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: bundler
|
16
|
+
requirement: &75311510 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *75311510
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: rake
|
27
|
+
requirement: &75311300 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
type: :development
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *75311300
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: rspec
|
38
|
+
requirement: &75311090 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
44
|
+
type: :development
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *75311090
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: guard-rspec
|
49
|
+
requirement: &75310880 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
type: :development
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *75310880
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: activesupport
|
60
|
+
requirement: &75310630 !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - ~>
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '3.0'
|
66
|
+
type: :runtime
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: *75310630
|
69
|
+
description: vkill'gems public methods
|
70
|
+
email:
|
71
|
+
- vkill.net@gmail.com
|
72
|
+
executables: []
|
73
|
+
extensions: []
|
74
|
+
extra_rdoc_files: []
|
75
|
+
files:
|
76
|
+
- .gitignore
|
77
|
+
- Gemfile
|
78
|
+
- README.markdown
|
79
|
+
- Rakefile
|
80
|
+
- lib/vkill_gems_methods.rb
|
81
|
+
- lib/vkill_gems_methods/active_record/base.rb
|
82
|
+
- lib/vkill_gems_methods/rails/generators/base.rb
|
83
|
+
- lib/vkill_gems_methods/version.rb
|
84
|
+
- vkill_gems_methods.gemspec
|
85
|
+
homepage: ''
|
86
|
+
licenses: []
|
87
|
+
post_install_message:
|
88
|
+
rdoc_options: []
|
89
|
+
require_paths:
|
90
|
+
- lib
|
91
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
92
|
+
none: false
|
93
|
+
requirements:
|
94
|
+
- - ! '>='
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
98
|
+
none: false
|
99
|
+
requirements:
|
100
|
+
- - ! '>='
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: '0'
|
103
|
+
requirements: []
|
104
|
+
rubyforge_project: vkill_gems_methods
|
105
|
+
rubygems_version: 1.8.10
|
106
|
+
signing_key:
|
107
|
+
specification_version: 3
|
108
|
+
summary: vkill'gems public methods
|
109
|
+
test_files: []
|
110
|
+
has_rdoc:
|