leases 1.1.1 → 1.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
  SHA1:
3
- metadata.gz: a0272b4ffe02c9178666b100a884fc4377ca77dc
4
- data.tar.gz: efbd8eff430aa8e69310bd76bd9dcb4df80aba6e
3
+ metadata.gz: bb8fbe7ce60a87fdba0e7ea0ce8159420f150d69
4
+ data.tar.gz: 975345ad77583f621310fe30cabf2d7ff3b61e06
5
5
  SHA512:
6
- metadata.gz: f6aaba2581ca5bd0b3f8b5c9d255ff64c84d20e717da9d7e7eea74e342460a15e9c0d251431d0f5bd97943b08f648caf5fb6154fd3fd31e17d81c48b8aa7e50d
7
- data.tar.gz: 082ac37d51838378389fdaa8591a4b2c101c98cdc21da4c33ec743c0e5a1294d47c90d9545225dff6db0b24125ee167a42563678b95f7d5d584c7f53d395352f
6
+ metadata.gz: f0ecf0a18ff3eced2ec6043bb459039df5b3334572e424ac1183fe9d0b806b4b11ed3af9df10562ce4a19cb89b1291cd9c7ca986e63218ae394cc9e5f7e225b8
7
+ data.tar.gz: a6f4c00e62892417ccecc73c76f109cc165b7ebb560c148f75745b966fb58b28634b8e079ebde37cdb6aa97d26ba51e902ef4d13f8e3d86c44d730416ae99bf8
data/.travis.yml CHANGED
@@ -7,7 +7,6 @@ rvm:
7
7
  - ruby-head
8
8
 
9
9
  env:
10
- - "RAILS_VERSION=3.1.0"
11
10
  - "RAILS_VERSION=3.2.0"
12
11
  - "RAILS_VERSION=4.0.0"
13
12
  - "RAILS_VERSION=4.1.0"
data/README.md CHANGED
@@ -6,7 +6,6 @@ Database multi-tenancy for Rails.
6
6
 
7
7
  ## Supported Rails versions
8
8
 
9
- - Rails 3.1.x
10
9
  - Rails 3.2.x
11
10
  - Rails 4.0.x
12
11
  - Rails 4.1.x
data/lib/leases.rb CHANGED
@@ -21,8 +21,6 @@ module Leases
21
21
  self.leasers << object.name
22
22
  self.leasers.uniq!
23
23
 
24
- Apartment.tenant_names = Proc.new { Leases.leaser_names }
25
-
26
24
  object
27
25
  end
28
26
 
@@ -37,12 +35,10 @@ module Leases
37
35
  #
38
36
  # [Array] List of leaser names
39
37
  #
40
- def leaser_names(preload=true)
41
- Rails.application.eager_load! if preload
42
-
38
+ def leaser_names
43
39
  leasers.map do |l|
44
40
  model = l.constantize
45
- model.all.collect(&:leaser_name)
41
+ model.leaser_names
46
42
  end.flatten
47
43
  end
48
44
 
@@ -11,6 +11,42 @@ module Leases
11
11
 
12
12
  end
13
13
 
14
+ module ClassMethods
15
+
16
+ ##
17
+ # Returns array of leaser names (schema names).
18
+ #
19
+ # === Example
20
+ #
21
+ # Account.leaser_names # => ['account-1', 'account-2']
22
+ #
23
+ # === Returns
24
+ #
25
+ # [Array] List of leaser names
26
+ #
27
+ def leaser_names
28
+ name = self.leases_options[:name]
29
+
30
+ if name.is_a?(Symbol)
31
+ # Simply pluck the column
32
+ self.pluck(name)
33
+ elsif name.is_a?(Proc)
34
+ # Name is a proc, find record in matches
35
+ names = []
36
+ self.find_each do |object|
37
+ names << object.leaser_name
38
+ end
39
+ names
40
+ else
41
+ # Default option: pluck ids and prefix it
42
+ prefix = self.name.parameterize
43
+ ids = self.pluck(:id)
44
+ ids.collect { |id| [prefix, id].join('-') }
45
+ end
46
+ end
47
+
48
+ end
49
+
14
50
  ##
15
51
  # Name of the leaser, used for naming the database.
16
52
  # This can be set in the leaser_options. Must be unique.
@@ -18,12 +54,12 @@ module Leases
18
54
  def leaser_name
19
55
  name = self.class.leases_options[:name]
20
56
 
21
- if name.nil?
22
- [self.class.name.parameterize, id].join('-')
23
- elsif name.is_a?(Symbol)
57
+ if name.is_a?(Symbol)
24
58
  send(name)
25
59
  elsif name.is_a?(Proc)
26
60
  name.call(self)
61
+ else
62
+ [self.class.name.parameterize, id].join('-')
27
63
  end
28
64
  end
29
65
 
@@ -1,3 +1,3 @@
1
1
  module Leases
2
- VERSION = '1.1.1'
2
+ VERSION = '1.2.0'
3
3
  end
@@ -17,6 +17,43 @@ describe Leases::Model::Base do
17
17
 
18
18
  subject { account }
19
19
 
20
+ describe :leaser_names do
21
+
22
+ let!(:account_1) { Account.create(:name => 'John Doe', :slug => 'john-doe') }
23
+ let!(:account_2) { Account.create(:name => 'Jane Doe', :slug => 'jane-doe') }
24
+
25
+ context 'with default' do
26
+
27
+ let(:options) { {} }
28
+
29
+ it 'should return list of names' do
30
+ Account.leaser_names.should == ["account-#{account_1.id}", "account-#{account_2.id}"]
31
+ end
32
+
33
+ end
34
+
35
+ context 'with symbol' do
36
+
37
+ let(:options) { { :name => :slug } }
38
+
39
+ it 'should return list of names' do
40
+ Account.leaser_names.should == ['john-doe', 'jane-doe']
41
+ end
42
+
43
+ end
44
+
45
+ context 'with proc' do
46
+
47
+ let(:options) { { :name => Proc.new { |a| [a.id, a.name].join('-') } } }
48
+
49
+ it 'should return list of names' do
50
+ Account.leaser_names.should == ["#{account_1.id}-#{account_1.name}", "#{account_2.id}-#{account_2.name}"]
51
+ end
52
+
53
+ end
54
+
55
+ end
56
+
20
57
  describe :leaser_name do
21
58
 
22
59
  context 'default' do
data/spec/leases_spec.rb CHANGED
@@ -23,6 +23,8 @@ describe Leases do
23
23
 
24
24
  describe :leaser_names do
25
25
 
26
+ before(:each) { Apartment.tenant_names = Proc.new { Leases.leaser_names } }
27
+
26
28
  let!(:account_1) { Account.create }
27
29
  let!(:account_2) { Account.create }
28
30
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: leases
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Arjen Oosterkamp
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-07-27 00:00:00.000000000 Z
11
+ date: 2015-07-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler