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 ADDED
@@ -0,0 +1,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in vkill_gems_methods.gemspec
4
+ gemspec
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,4 @@
1
+ module VkillGemsMethods
2
+ VERSION = "0.1.0"
3
+ end
4
+
@@ -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: