i-am-me 0.0.3

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