just_for_fun 0.1.0 → 0.2.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.
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: