identitee 0.4.0 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- MDZmNWUyM2Y2ZGY0MmU4MzEzNDE5MzljZGZkZGQwMGI5ZjU2NzY0OA==
5
- data.tar.gz: !binary |-
6
- OWZkMzhlZGQ4YzkyNDFmYTU3NmU1YTVkZTE1NjMyNmZlNDYwMDJjOQ==
7
- !binary "U0hBNTEy":
8
- metadata.gz: !binary |-
9
- M2M1MTEwNDk0MzkxNjE2M2I0MWJiZWQ2MzExMjczOTM1OGUxNmU4NTUxMDU4
10
- NzNkMWQ5MmIyZGM1NzZkODc5YWFhZTVkZTQyYTAyMWJiN2U5MjgwNWMzNzc4
11
- YmUxYmIyNGJhZDY2ODM0ZTcwOGYxNDFlNzg2MGFmZDJkNmEyMzU=
12
- data.tar.gz: !binary |-
13
- NDg2Y2JiZGFmOWMxMGNiMDQwNGM0NDA5ZWM3Mjc2M2IwYzIzMzFjYjliMjI0
14
- OWY3Mjk4MDkzYjMwMjM4MDI5YWJhNDMxZWNlMTZmOTIyNTZmNmVmNWVmMTA5
15
- NTRmM2M0ZjY2M2RiMjkyZmIyMzk4YjFjOWFmMDA5ZDVhODM1Zjc=
2
+ SHA1:
3
+ metadata.gz: 6cb24ae4857e7d85789960a9ddaa4878c595378c
4
+ data.tar.gz: e9d1d745ee288a215cad41b253314a53baceda29
5
+ SHA512:
6
+ metadata.gz: 17dc8a313f29d6af6c08e17a56bc5ac724d969251cdde10a16f4de9af96bdb5be6f27f3c36d0bd3ebe6f628a2aec59232fdbabff6d3540794e4b902460ced467
7
+ data.tar.gz: f1cb6f464b16f390eccdc8337913c75d027e967e12d9aa3fe9779a2b89bec4a11508dff765a48c8375e61bcb3f12050dff36cb9595a136380ae8341eb3a9b994
data/.coveralls.yml ADDED
@@ -0,0 +1 @@
1
+ service-name: travis-ci
data/Gemfile CHANGED
@@ -4,3 +4,4 @@ gem 'rake'
4
4
  gem 'rspec'
5
5
  gem 'rb-fsevent', '~> 0.9.1'
6
6
  gem 'guard-rspec'
7
+ gem 'coveralls', require: false
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
- # Identitee [![Build Status](https://travis-ci.org/natedavisolds/identitee.png?branch=master)](https://travis-ci.org/natedavisolds/identify) [![Code Climate](https://codeclimate.com/github/natedavisolds/identify.png)](https://codeclimate.com/github/natedavisolds/identify)
1
+ # Identitee [![Gem Version](https://badge.fury.io/rb/identitee.png)](http://badge.fury.io/rb/identitee) [![Build Status](https://travis-ci.org/natedavisolds/identify.png?branch=master)](https://travis-ci.org/natedavisolds/identify) [![Code Climate](https://codeclimate.com/github/natedavisolds/identify.png)](https://codeclimate.com/github/natedavisolds/identify) [![Coverage Status](https://coveralls.io/repos/natedavisolds/identify/badge.png?branch=master)](https://coveralls.io/r/natedavisolds/identify?branch=master)
2
2
 
3
- Provides methods for constructing and retrieving a domain object. Identify is intended to replace persisting data that is tightly couple to domain logic.
3
+ Provides methods for building and retrieving instances of a class. Identify is intended to replace persisting data that is tightly tied to domain logic.
4
4
 
5
5
  Many times you might see a database structure that will always remain static until the codebase changes. This is a headache to seed the proper data for the objects to work. Instead use identify to write these classes in code.
6
6
 
@@ -8,7 +8,7 @@ Likewise, many classes may be constructed that do the same thing... just a littl
8
8
 
9
9
  ### Finding
10
10
 
11
- Find an identifiable through the `find_identifiable` class method. (See the Basic Example)
11
+ Find an identifiable through the `find_identifiable` (aliased also to find) class method. (See the Basic Example)
12
12
 
13
13
  class Activity
14
14
  include Identitee
@@ -25,10 +25,11 @@ Find an identifiable through the `find_identifiable` class method. (See the Basi
25
25
  end
26
26
 
27
27
  Activity.find_identifiable(:new_activity).title # => "Created something new"
28
+ Activity.find(:new_activity).title # => "Created something new"
28
29
 
29
30
  ### Loading identifiables
30
31
 
31
- Identitee will try to autoload the identifiables if it doesn't already know about them. By default it will use the pluralize class_name of the identifiable from the folder that the source file is in. The load path can explicitly be set with the `set_identify_root` method call.
32
+ Identitee will try to autoload the identifiables if it doesn't already know about them. By default it will use the pluralize class_name of the identifiable from the folder that the source file is in. The load path can explicitly be set with the `set_identitee_root` method call.
32
33
 
33
34
  class LazyLoadingTest
34
35
  include Identitee
data/ROADMAP.md CHANGED
@@ -1,5 +1,7 @@
1
- ## ROADMAP
1
+ # ROADMAP
2
2
 
3
+ ## Needed For 1.0 Release
3
4
  - Document a working example
4
5
  - Allow for other/additional loaders to be used
5
- - reduce the number of class methods that identify creates
6
+ - Reduce the number of class methods that identify creates
7
+ - Documentation in code
@@ -0,0 +1,44 @@
1
+ module Identitee
2
+ class DefaultPathBuilder
3
+ def self.to_path call_stack, including_class
4
+ new(call_stack, including_class).to_path
5
+ end
6
+
7
+ def initialize call_stack, including_class
8
+ @call_stack = call_stack
9
+ @including_class = including_class
10
+ end
11
+
12
+ def to_path
13
+ [directory_of_caller, pluralized_class_name].join('/')
14
+ end
15
+
16
+ private
17
+
18
+ attr_accessor :call_stack, :including_class
19
+
20
+ def directory_of_caller
21
+ File.dirname most_recent_caller_path_without_line_number
22
+ end
23
+
24
+ def most_recent_caller_path_without_line_number
25
+ most_recent_caller_path.split(':').first
26
+ end
27
+
28
+ def most_recent_caller_path
29
+ call_stack.first.to_s
30
+ end
31
+
32
+ def pluralized_class_name
33
+ including_class_name.gsub(/([A-Z]+)([A-Z])/,'\1_\2').
34
+ gsub(/([a-z])([A-Z])/,'\1_\2').
35
+ gsub('/' ,'__').
36
+ gsub('::','__').
37
+ downcase + "s"
38
+ end
39
+
40
+ def including_class_name
41
+ including_class.name.to_s
42
+ end
43
+ end
44
+ end
@@ -22,6 +22,10 @@ module Identitee
22
22
  end
23
23
  end
24
24
 
25
+ def find_key instance
26
+ instances.invert.fetch(instance, nil)
27
+ end
28
+
25
29
  def all
26
30
  instances.values
27
31
  end
@@ -18,6 +18,10 @@ module Identitee
18
18
  end
19
19
  end
20
20
 
21
+ def find_identifiable_key instance
22
+ identifiables.find_key instance
23
+ end
24
+
21
25
  def all_identifiables
22
26
  load_all_identifiables
23
27
  identifiables.all
@@ -27,7 +31,7 @@ module Identitee
27
31
  ::Identitee::Loader.new(identify_root_directory: identify_root_directory).load_all
28
32
  end
29
33
 
30
- def set_identify_root path_to_template_root
34
+ def set_identitee_root path_to_template_root
31
35
  @identify_root_directory = path_to_template_root
32
36
  end
33
37
 
@@ -1,3 +1,3 @@
1
1
  module Identitee
2
- VERSION = "0.4.0"
2
+ VERSION = "0.5.0"
3
3
  end
data/lib/identitee.rb CHANGED
@@ -1,10 +1,13 @@
1
1
  require "identitee/version"
2
2
  require "identitee/identify"
3
+ require "identitee/default_path_builder"
3
4
  require "identitee/identify/find_alias"
4
5
 
5
6
  module Identitee
6
7
  def self.included base
7
8
  base.extend ::Identitee::Identify
8
- base.extend ::Identitee::Identify::FindAlias unless method_defined? :find
9
+ base.extend ::Identitee::Identify::FindAlias unless base.method_defined? :find
10
+
11
+ base.set_identitee_root Identitee::DefaultPathBuilder.to_path caller, base
9
12
  end
10
13
  end
@@ -0,0 +1,25 @@
1
+ require 'spec_helper'
2
+
3
+ describe "Can find identifiables using the short hand find" do
4
+ class AliasFindingTestCase
5
+ include Identitee
6
+ end
7
+
8
+ it "uses the find alias" do
9
+ test_case = AliasFindingTestCase.identify :test
10
+ AliasFindingTestCase.find(:test).should eq test_case
11
+ end
12
+
13
+ class OtherFindTestCase
14
+ def self.find echo
15
+ "other find #{echo}"
16
+ end
17
+
18
+ include Identitee
19
+ end
20
+
21
+ it "uses the existing find method" do
22
+ test_case = OtherFindTestCase.identify :test
23
+ OtherFindTestCase.find(:test).should == "other find test"
24
+ end
25
+ end
@@ -0,0 +1,27 @@
1
+ require 'spec_helper'
2
+
3
+ describe "Default the directory to the caller classes directory and the pluralized version of the class name" do
4
+ class DefaultDirectorySetTest
5
+ include Identitee
6
+
7
+ attr_accessor :successful
8
+
9
+ def initialize
10
+ @successful = false
11
+ end
12
+
13
+ def successful?
14
+ @successful
15
+ end
16
+ end
17
+
18
+ it "has a identify_root_directory" do
19
+ DefaultDirectorySetTest.identify_root_directory.should =~ /default_directory_set_tests/
20
+ end
21
+
22
+ it "lazy loads identifyables" do
23
+ test = DefaultDirectorySetTest.find_identifiable :default_directory_test
24
+ test.should_not be_nil
25
+ test.should be_successful
26
+ end
27
+ end
@@ -0,0 +1,3 @@
1
+ DefaultDirectorySetTest.identify :default_directory_test do
2
+ @successful = true
3
+ end
@@ -1,24 +1,13 @@
1
- require 'identitee'
1
+ require 'spec_helper'
2
2
 
3
3
  describe "Force all Loading" do
4
-
5
- class LazyLoadingTest
4
+ class LoadingAllTest
6
5
  include Identitee
7
-
8
- attr_accessor :successful
9
-
10
- set_identify_root File.expand_path("../lazy_loading_tests/", __FILE__)
11
-
12
- def initialize
13
- @successful = false
14
- end
15
-
16
- def successful?
17
- @successful
18
- end
6
+ set_identitee_root File.expand_path("../loading_all_tests/", __FILE__)
19
7
  end
20
8
 
21
9
  it "loads all the identifiable before calling all" do
22
- LazyLoadingTest.all_identifiables.length.should == 1
10
+ identifiables = LoadingAllTest.all_identifiables
11
+ identifiables.length.should == 2
23
12
  end
24
13
  end
@@ -1,4 +1,4 @@
1
- require 'identitee'
1
+ require 'spec_helper'
2
2
 
3
3
  describe "Lazy Loading" do
4
4
 
@@ -7,7 +7,7 @@ describe "Lazy Loading" do
7
7
 
8
8
  attr_accessor :successful
9
9
 
10
- set_identify_root File.expand_path("../lazy_loading_tests/", __FILE__)
10
+ set_identitee_root File.expand_path("../lazy_loading_tests/", __FILE__)
11
11
 
12
12
  def initialize
13
13
  @successful = false
@@ -0,0 +1,2 @@
1
+ LoadingAllTest.identify :test1 do
2
+ end
@@ -0,0 +1,2 @@
1
+ LoadingAllTest.identify :test2 do
2
+ end
@@ -1,4 +1,4 @@
1
- require 'identitee/loader'
1
+ require 'spec_helper'
2
2
 
3
3
  describe "Loader Integration Test" do
4
4
  it "loads a file" do
@@ -1,4 +1,4 @@
1
- require 'identitee/identifiables'
1
+ require 'spec_helper'
2
2
 
3
3
  module Identitee
4
4
  describe Identifiables do
@@ -47,5 +47,12 @@ module Identitee
47
47
  identifiables.all.should == [instance]
48
48
  end
49
49
  end
50
+
51
+ context "when find the key" do
52
+ it "gives the string identifier for the instance" do
53
+ identifiables.register :foo, instance
54
+ identifiables.find_key(instance).should eq 'foo'
55
+ end
56
+ end
50
57
  end
51
58
  end
@@ -1,4 +1,4 @@
1
- require 'identitee'
1
+ require 'spec_helper'
2
2
 
3
3
  describe Identitee do
4
4
  it "acts as a constructor" do
@@ -62,7 +62,7 @@ describe Identitee do
62
62
  TestAddingFind.should respond_to :find
63
63
  end
64
64
 
65
- it "doesn't symplifies find_identifiable when find exists" do
65
+ it "doesn't symplify find_identifiable when find exists" do
66
66
  TestNotReplacingFind = Class.new do
67
67
  def self.find key
68
68
  key
@@ -76,4 +76,14 @@ describe Identitee do
76
76
  TestNotReplacingFind.find("something").should == "something"
77
77
  TestNotReplacingFind.find_identifiable("something").should == "Unknown"
78
78
  end
79
+
80
+ it "finds the key for an identifiable" do
81
+ TestFindIdentiteeKey = Class.new do
82
+ include Identitee
83
+ end
84
+
85
+ instance = TestFindIdentiteeKey.identify :testing_key
86
+
87
+ TestFindIdentiteeKey.find_identifiable_key(instance).should eq 'testing_key'
88
+ end
79
89
  end
@@ -1,4 +1,4 @@
1
- require 'identitee/loader'
1
+ require 'spec_helper'
2
2
 
3
3
  module Identitee
4
4
  describe Loader do
@@ -20,11 +20,7 @@ module Identitee
20
20
 
21
21
  loader.should_receive(:force_load).with('known.rb').once
22
22
 
23
- identity = loader.lazy_load('known') do
24
- "Failing"
25
- end
26
-
27
- identity.should_not == "Failing"
23
+ loader.lazy_load('known')
28
24
  end
29
25
  end
30
26
  end
data/spec/spec_helper.rb CHANGED
@@ -1,9 +1,8 @@
1
- # This file was generated by the `rspec --init` command. Conventionally, all
2
- # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
3
- # Require this file using `require "spec_helper"` to ensure that it is only
4
- # loaded once.
5
- #
6
- # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
1
+ require 'coveralls'
2
+ Coveralls.wear!
3
+
4
+ require 'identitee'
5
+
7
6
  RSpec.configure do |config|
8
7
  config.treat_symbols_as_metadata_keys_with_true_values = true
9
8
  config.run_all_when_everything_filtered = true
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: identitee
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nate Davis Olds
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-01-08 00:00:00.000000000 Z
11
+ date: 2014-02-18 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Identifies and stores instances of a class for later loading
14
14
  email:
@@ -17,6 +17,7 @@ executables: []
17
17
  extensions: []
18
18
  extra_rdoc_files: []
19
19
  files:
20
+ - .coveralls.yml
20
21
  - .gitignore
21
22
  - .rspec
22
23
  - .travis.yml
@@ -28,15 +29,21 @@ files:
28
29
  - Rakefile
29
30
  - identitee.gemspec
30
31
  - lib/identitee.rb
32
+ - lib/identitee/default_path_builder.rb
31
33
  - lib/identitee/identifiable_not_found.rb
32
34
  - lib/identitee/identifiables.rb
33
35
  - lib/identitee/identify.rb
34
36
  - lib/identitee/identify/find_alias.rb
35
37
  - lib/identitee/loader.rb
36
38
  - lib/identitee/version.rb
39
+ - spec/acceptance/alias_find_acceptance_spec.rb
40
+ - spec/acceptance/default_directory_acceptance_spec.rb
41
+ - spec/acceptance/default_directory_set_tests/default_directory_test.rb
37
42
  - spec/acceptance/force_all_loading_acceptance_spec.rb
38
43
  - spec/acceptance/lazy_loading_acceptance_spec.rb
39
44
  - spec/acceptance/lazy_loading_tests/autoload_test.rb
45
+ - spec/acceptance/loading_all_tests/test1.rb
46
+ - spec/acceptance/loading_all_tests/test2.rb
40
47
  - spec/integration/loader_integration_spec.rb
41
48
  - spec/integration/test_files/test_lazy_load.rb
42
49
  - spec/lib/identitee/identifiables_spec.rb
@@ -53,24 +60,29 @@ require_paths:
53
60
  - lib
54
61
  required_ruby_version: !ruby/object:Gem::Requirement
55
62
  requirements:
56
- - - ! '>='
63
+ - - '>='
57
64
  - !ruby/object:Gem::Version
58
65
  version: '0'
59
66
  required_rubygems_version: !ruby/object:Gem::Requirement
60
67
  requirements:
61
- - - ! '>='
68
+ - - '>='
62
69
  - !ruby/object:Gem::Version
63
70
  version: '0'
64
71
  requirements: []
65
72
  rubyforge_project:
66
- rubygems_version: 2.0.3
73
+ rubygems_version: 2.0.14
67
74
  signing_key:
68
75
  specification_version: 4
69
76
  summary: ''
70
77
  test_files:
78
+ - spec/acceptance/alias_find_acceptance_spec.rb
79
+ - spec/acceptance/default_directory_acceptance_spec.rb
80
+ - spec/acceptance/default_directory_set_tests/default_directory_test.rb
71
81
  - spec/acceptance/force_all_loading_acceptance_spec.rb
72
82
  - spec/acceptance/lazy_loading_acceptance_spec.rb
73
83
  - spec/acceptance/lazy_loading_tests/autoload_test.rb
84
+ - spec/acceptance/loading_all_tests/test1.rb
85
+ - spec/acceptance/loading_all_tests/test2.rb
74
86
  - spec/integration/loader_integration_spec.rb
75
87
  - spec/integration/test_files/test_lazy_load.rb
76
88
  - spec/lib/identitee/identifiables_spec.rb