vkill_gems_methods 0.1.0

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