leases 1.1.1 → 1.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
  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