activatable 0.0.1 → 0.0.2

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: 17ee166f0c344b0e31074575ee11016eab9f3c9d
4
- data.tar.gz: 1c33362109b436bea94b390fd0d1f98da5cb559e
3
+ metadata.gz: ab08b83d0efc3f1b4a0220570eaec962fb4fa34a
4
+ data.tar.gz: 5d7cbbea7646c1dcf0da241829a273db5d654240
5
5
  SHA512:
6
- metadata.gz: d3c6183e1e3d93ba72a7245c77e43d2a322a29b7a9e8c5133f9bcb7295f32b322d08e779fbd9934d5799e39a298c3ea7952227f16bd48efdc5c73aa7bc3a572c
7
- data.tar.gz: 85e26f2334d2bb0bf9e469cf4f906abf96ab9b456f6ed1f91332614fc1780404de55ffc3a62ad9a7a4c3f78a832171fd8ce354674a219342d71e82285da0d4b8
6
+ metadata.gz: 549b32918ab143a8ecd8ab220bce0647e593a0da052efbf3c634e59e8e62ab589d88da9482dadf22f17d673cb224d6450736876854fa14f70caf4099d9ac796b
7
+ data.tar.gz: 4656e25c5247ca0e1b45b065f66a74d3744e3e5db1e952159e4dae8fcacf36c9003f63014b1062edfd7859daea09f93c373097fbf9b95c8c439071e90fefc819
data/README.md CHANGED
@@ -4,32 +4,53 @@ Do you want to make your model activatable? No problem.
4
4
 
5
5
  ## How to use
6
6
 
7
- ```ruby
8
- class Api::SomeServiceApiWrapper < ActiveRecord::Base
9
- include Activatable
7
+ To use hstorable you should add this line to your Gemfile:
8
+
9
+ ```
10
+ gem 'activatable', '~> 0.0.2'
11
+ ```
12
+
13
+ To use activatable you should create table like this:
10
14
 
11
- activatable :active, -> (wrapper) { where(company_id: wrapper.company_id) }
15
+ ```ruby
16
+ create_table :wrappers do |t|
17
+ t.integer :company_id
18
+ t.boolean :active, default: false
19
+ t.timestamps
12
20
  end
13
21
  ```
14
22
 
15
- ## Installation
23
+ And now you can make your model activatable in some scope:
16
24
 
17
- Add this line to your application's Gemfile:
25
+ ```ruby
26
+ class Api::Wrapper < ActiveRecord::Base
27
+ include Activatable
18
28
 
19
- gem 'activatable'
29
+ activatable :active, -> (wrapper) { where(company_id: wrapper.company_id) }
30
+ end
31
+ ```
20
32
 
21
- And then execute:
33
+ ## License
22
34
 
23
- $ bundle
35
+ Copyright (c) 2014 Sergey Tsvetkov
24
36
 
25
- Or install it yourself as:
37
+ MIT License
26
38
 
27
- $ gem install activatable
39
+ Permission is hereby granted, free of charge, to any person obtaining
40
+ a copy of this software and associated documentation files (the
41
+ "Software"), to deal in the Software without restriction, including
42
+ without limitation the rights to use, copy, modify, merge, publish,
43
+ distribute, sublicense, and/or sell copies of the Software, and to
44
+ permit persons to whom the Software is furnished to do so, subject to
45
+ the following conditions:
28
46
 
29
- ## Contributing
47
+ The above copyright notice and this permission notice shall be
48
+ included in all copies or substantial portions of the Software.
30
49
 
31
- 1. Fork it ( http://github.com/<my-github-username>/activatable/fork )
32
- 2. Create your feature branch (`git checkout -b my-new-feature`)
33
- 3. Commit your changes (`git commit -am 'Add some feature'`)
34
- 4. Push to the branch (`git push origin my-new-feature`)
35
- 5. Create new Pull Request
50
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
51
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
52
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
53
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
54
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
55
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
56
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/activatable.gemspec CHANGED
@@ -10,14 +10,14 @@ Gem::Specification.new do |spec|
10
10
  spec.email = ["sergey.a.tsvetkov@gmail.com"]
11
11
  spec.summary = %q{Do you want to make your model activatable? No problem.}
12
12
  spec.description = %q{Do you want to make your model activatable? No problem.}
13
- spec.homepage = ""
13
+ spec.homepage = "https://github.com/kimrgrey/activatable"
14
14
  spec.license = "MIT"
15
15
 
16
- spec.files = `git ls-files`.split($/)
16
+ spec.files = `git ls-files`.split("\n")
17
17
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
21
  spec.add_development_dependency "bundler", "~> 1.5"
22
- spec.add_development_dependency "rake"
22
+ spec.add_development_dependency "rake", "~> 10.3"
23
23
  end
data/lib/activatable.rb CHANGED
@@ -1,31 +1,13 @@
1
- require "activatable/version"
1
+ require 'activatable/class_methods'
2
+ require 'activatable/instance_methods'
2
3
 
3
4
  module Activatable
4
5
  def self.included(base)
5
- base.extend ClassMethods
6
+ base.extend Activatable::ClassMethods
7
+ base.include Activatable::InstanceMethods
8
+
6
9
  base.class_eval do
7
10
  class_attribute :activatable_fields
8
11
  end
9
12
  end
10
-
11
- def activate_by(field_name)
12
- scope_name_or_lambda = activatable_fields[field_name]
13
- if scope_name_or_lambda.present?
14
- if scope_name_or_lambda.is_a? Symbol
15
- scope = self.class.send(scope_name_or_lambda)
16
- scope.update_all(field_name => false)
17
- elsif scope_name_or_lambda.is_a? Proc
18
- scope = self.class.class_exec(self, &scope_name_or_lambda)
19
- scope.update_all(field_name => false)
20
- end
21
- self.update(field_name => true)
22
- end
23
- end
24
-
25
- module ClassMethods
26
- def activatable(field_name, scope_name_or_lambda)
27
- self.activatable_fields ||= {}
28
- self.activatable_fields = self.activatable_fields.merge({field_name => scope_name_or_lambda})
29
- end
30
- end
31
13
  end
@@ -0,0 +1,8 @@
1
+ module Activatable
2
+ module ClassMethods
3
+ def activatable(field_name, scope_name_or_lambda)
4
+ self.activatable_fields ||= {}
5
+ self.activatable_fields = self.activatable_fields.merge({field_name => scope_name_or_lambda})
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,17 @@
1
+ module Activatable
2
+ module InstanceMethods
3
+ def activate_by(field_name)
4
+ scope_name_or_lambda = activatable_fields[field_name]
5
+ if scope_name_or_lambda.present?
6
+ if scope_name_or_lambda.is_a? Symbol
7
+ scope = self.class.send(scope_name_or_lambda)
8
+ scope.update_all(field_name => false)
9
+ elsif scope_name_or_lambda.is_a? Proc
10
+ scope = self.class.class_exec(self, &scope_name_or_lambda)
11
+ scope.update_all(field_name => false)
12
+ end
13
+ self.update(field_name => true)
14
+ end
15
+ end
16
+ end
17
+ end
@@ -1,3 +1,3 @@
1
1
  module Activatable
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activatable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sergey Tsvetkov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-01 00:00:00.000000000 Z
11
+ date: 2014-08-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -28,16 +28,16 @@ dependencies:
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: '10.3'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
40
+ version: '10.3'
41
41
  description: Do you want to make your model activatable? No problem.
42
42
  email:
43
43
  - sergey.a.tsvetkov@gmail.com
@@ -52,8 +52,10 @@ files:
52
52
  - Rakefile
53
53
  - activatable.gemspec
54
54
  - lib/activatable.rb
55
+ - lib/activatable/class_methods.rb
56
+ - lib/activatable/instance_methods.rb
55
57
  - lib/activatable/version.rb
56
- homepage: ''
58
+ homepage: https://github.com/kimrgrey/activatable
57
59
  licenses:
58
60
  - MIT
59
61
  metadata: {}