shorter 0.0.1
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/lib/shorter/active_record/tables_and_models.rb +35 -0
- data/lib/shorter/active_record.rb +16 -0
- data/lib/shorter.rb +10 -0
- metadata +46 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: d677baf08aa64682295d46025b184a232387bdb8
|
4
|
+
data.tar.gz: f988dc031d7acf6b0871424d689f323295deb602
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 24cd640919045d17ad7238a2f9024201655a93fb8a7430685392cc69c87c775625d893f84a57cd5c40e180ec62790618fafdb847746bc72794e3001fcd662e5b
|
7
|
+
data.tar.gz: 9946635e1ed42e2e7b3bb954fa187386da5e074b1f645bdfe5bdfe5e816a8c0af4ab2d62925f0d7fde32586cd512ff8d3c2283ad6bb8a66dd4aad2e3ddb7c6e9
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'singleton'
|
2
|
+
|
3
|
+
module Shorter
|
4
|
+
module ActiveRecord
|
5
|
+
class TablesAndModels
|
6
|
+
include Singleton
|
7
|
+
|
8
|
+
attr_reader :tables_and_models, :loaded
|
9
|
+
|
10
|
+
def initialize
|
11
|
+
load!
|
12
|
+
end
|
13
|
+
|
14
|
+
def load!
|
15
|
+
models = ::ActiveRecord::Base.send(:subclasses)
|
16
|
+
@tables_and_models =
|
17
|
+
{}.tap do |tables_and_models|
|
18
|
+
models.each { |model| tables_and_models[model.table_name] = model }
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def reload!
|
23
|
+
unless tables_and_models.values.count == ::ActiveRecord::Base.send(:subclasses).count
|
24
|
+
@loaded = true
|
25
|
+
load!
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def model(table_name)
|
30
|
+
loaded || reload!
|
31
|
+
tables_and_models[table_name.to_s]
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require_relative 'active_record/tables_and_models'
|
2
|
+
|
3
|
+
module Shorter
|
4
|
+
module ActiveRecord
|
5
|
+
def method_missing(method_name, *args, &block)
|
6
|
+
if ::ActiveRecord::Base.connected?
|
7
|
+
model = TablesAndModels.instance.model(method_name.to_s)
|
8
|
+
model.present? ? model.where(id: self).first : super
|
9
|
+
else
|
10
|
+
super
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
Fixnum.send :include, Shorter::ActiveRecord
|
data/lib/shorter.rb
ADDED
metadata
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: shorter
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Vasu Adari
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-07-29 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: An idea to reduce a piece of code
|
14
|
+
email: vasuakeel@gmail.com
|
15
|
+
executables: []
|
16
|
+
extensions: []
|
17
|
+
extra_rdoc_files: []
|
18
|
+
files:
|
19
|
+
- lib/shorter/active_record/tables_and_models.rb
|
20
|
+
- lib/shorter/active_record.rb
|
21
|
+
- lib/shorter.rb
|
22
|
+
homepage: http://rubygems.org/gems/shorter
|
23
|
+
licenses:
|
24
|
+
- MIT
|
25
|
+
metadata: {}
|
26
|
+
post_install_message:
|
27
|
+
rdoc_options: []
|
28
|
+
require_paths:
|
29
|
+
- lib
|
30
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - '>='
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: 2.0.0
|
35
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - '>='
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '0'
|
40
|
+
requirements: []
|
41
|
+
rubyforge_project:
|
42
|
+
rubygems_version: 2.0.14
|
43
|
+
signing_key:
|
44
|
+
specification_version: 4
|
45
|
+
summary: shorter for rails' methods
|
46
|
+
test_files: []
|