i-am-me 0.0.3

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.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/i-am-me.rb +35 -0
  3. metadata +44 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 6b400bb0358b3c996cb64d6cf02d6dd6eacee67d0ca13b4ccd7f343821f39a43
4
+ data.tar.gz: 949118c0ab5cc6b894aaa46a71bd54f0bbfe204cb64ffa51f88030b0870f518c
5
+ SHA512:
6
+ metadata.gz: 5531cb240e007afc6b902e7e16d0c0766140d745f6e0423855963a4f7853aece846c1e7b0bfc4d847ba20026318801e5e65ea9bdd17bfcf6993bd535c8ca00e4
7
+ data.tar.gz: ef0cd26eeaafb938e72d4512b63a6fd8ab359d92c3d9cb3348eb62f729cff5fe8101b31474ec7f54cccd6fe0c49b3af42c1b3778eabd9a52653cb1df91c87dbe
data/lib/i-am-me.rb ADDED
@@ -0,0 +1,35 @@
1
+ module IAmMe
2
+
3
+ extend ActiveSupport::Concern
4
+
5
+ included do
6
+ before_action :set_me
7
+ helper_method :me, :my
8
+ end
9
+
10
+ class_methods do
11
+ def me_is_a(type_of_me)
12
+ @type_of_me = type_of_me
13
+ end
14
+ end
15
+
16
+ def set_me
17
+ # before_actionフックによりset_meメソッドがコールされるコントローラは`me_is_a`メソッドがコールされたコントローラと同じとは限らないため、
18
+ # ancestorsを遡ってtype_of_meを探す。
19
+ type_of_me = nil
20
+ self.class.ancestors.each do |ancestor|
21
+ type_of_me = ancestor.instance_variable_get(:@type_of_me)
22
+ break if type_of_me
23
+ break if ancestor == ApplicationController
24
+ end
25
+ return unless respond_to?("current_#{type_of_me}")
26
+ RequestStore[:me] = send("current_#{type_of_me}")
27
+ end
28
+
29
+ def me
30
+ RequestStore[:me]
31
+ end
32
+
33
+ alias_method :my, :me
34
+
35
+ end
metadata ADDED
@@ -0,0 +1,44 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: i-am-me
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.3
5
+ platform: ruby
6
+ authors:
7
+ - Hisaya Nishide
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-02-19 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Me is I
14
+ email: hisayanishide@gmail.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/i-am-me.rb
20
+ homepage: https://github.com/hnishide/i-am-me
21
+ licenses:
22
+ - MIT
23
+ metadata: {}
24
+ post_install_message:
25
+ rdoc_options: []
26
+ require_paths:
27
+ - lib
28
+ required_ruby_version: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ required_rubygems_version: !ruby/object:Gem::Requirement
34
+ requirements:
35
+ - - ">="
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ requirements: []
39
+ rubyforge_project:
40
+ rubygems_version: 2.7.4
41
+ signing_key:
42
+ specification_version: 4
43
+ summary: I am me!
44
+ test_files: []