just_for_fun 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 43d8ea40125702e15af352d4e8b1c892223a46f6a31b70e85172b734b8127b4d
4
- data.tar.gz: 96c4fd38d93117433a2b645656fe85680e97a75710e1431f9b1a5fc2eaf94093
3
+ metadata.gz: 9d25e21c40f2e168dd9f006c418758e44d48c242020d525e8d4f92459fbfe02c
4
+ data.tar.gz: 1aad777706059803f16678ab460801f204e8c3262e6080628f840bcdbd2a24d9
5
5
  SHA512:
6
- metadata.gz: d58ddc41792cca894ec25d019581926b08ec03311afc88dfd47a601ddb62ef64cc40d73d07c9bb7d25eb09915b1f9e40f482cb0cdbfd7e81ff5813f57f2c0ddd
7
- data.tar.gz: cc1f54477b19e9c80bffc883594955f40488350002aef30c25d43a20f6d50867d32823e397fb50742e84330ad74cd44b8432edecd40e0318a11fd9b0e4706aec
6
+ metadata.gz: 5f1b36e4d5bb18f6472a4a4b8efd4bc4511925645a8ffe78caf34360901f5ea825c2d5ee076d70e510b397047893922c6dd6ed5b48c6242c0d303a6a8f05ce9c
7
+ data.tar.gz: 0d21c229ae765b1a03d9c0529d5cbf2bc0e2bc5217b22643b5898b3126ed543d0d54ae4cf8bedb71d6677bda2abd0f719517ae029ce88619852a25174aef1e6e
data/README.md CHANGED
@@ -1,5 +1,3 @@
1
- # 42.to_user
2
-
3
1
  This gem is adding shortcuts for Integer and Array classes so you can call `to_XXXXX` method and get object or relation object.
4
2
 
5
3
  ## Usage
@@ -31,7 +29,11 @@ $ gem install just_for_fun
31
29
 
32
30
  ## Implementation
33
31
 
34
- See `lib/just_for_fun.rb`. It's using method_missing to do what it do :)
32
+ See `lib/tasks/railtie.rb`. When app is starting gem is defining such methods.
33
+
34
+ ## TODO
35
+
36
+ - improve performance, looks like it has impact on it
35
37
 
36
38
  ## Contributing
37
39
 
@@ -1,26 +1,4 @@
1
1
  require "just_for_fun/railtie"
2
2
 
3
- class Integer
4
- def method_missing(method, *args, &block)
5
- klass_name, exclamation = method.to_s.scan(/to_(\w+)(\!?)/).flatten
6
- if klass_name
7
- klass = klass_name.classify.safe_constantize
8
- return klass.find(self) if klass
9
- end
10
- super(method, *args, &block)
11
- end
12
- end
13
-
14
- class Array
15
- def method_missing(method, *args, &block)
16
- klass_name, exclamation = method.to_s.scan(/to_(\w+)(\!?)/).flatten
17
- if klass_name
18
- klass = klass_name.classify.safe_constantize
19
- return klass.where(klass.primary_key => self) if klass
20
- end
21
- super(method, *args, &block)
22
- end
23
- end
24
-
25
3
  module JustForFun
26
4
  end
@@ -1,4 +1,37 @@
1
+ require 'pry'
2
+
1
3
  module JustForFun
2
4
  class Railtie < ::Rails::Railtie
5
+
6
+ config.after_initialize do
7
+ # load models
8
+ Rails.application.eager_load!
9
+
10
+ # iterate over models
11
+ ApplicationRecord.descendants.each do |klass|
12
+ Integer.class_eval do
13
+ method = "to_#{klass.to_s.underscore}"
14
+ if respond_to?(method)
15
+ # such method exists
16
+ else
17
+ define_method method do
18
+ klass.find(self)
19
+ end
20
+ end
21
+ end
22
+
23
+ Array.class_eval do
24
+ method = "to_#{klass.to_s.underscore.pluralize}"
25
+ if respond_to?(method)
26
+ # such method exists
27
+ else
28
+ define_method method do
29
+ klass.where(klass.primary_key => self)
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
35
+
3
36
  end
4
37
  end
@@ -1,3 +1,3 @@
1
1
  module JustForFun
2
- VERSION = '0.1.0'
2
+ VERSION = '0.2.0'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: just_for_fun
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Igor Kasyanchuk
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: 1.3.6
41
+ - !ruby/object:Gem::Dependency
42
+ name: pry
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
41
55
  description: Find your models with shortcuts. Transform numbers and arrays into AR
42
56
  objects.
43
57
  email: