app_registry 1.0.0.beta1 → 1.0.0.beta2

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: 17b0562f8e05f7193dd59afea1bcab9840736e2b
4
- data.tar.gz: a1c142a5eca050dd668dce9ca329ffc98585ad46
3
+ metadata.gz: 4db528c15412bfc71235e55d39bd2e15422c3f6a
4
+ data.tar.gz: 74f0605069caa2cb07f216049b597a32ff28a9ad
5
5
  SHA512:
6
- metadata.gz: 9f74a602df75e22458265e017b12138a58b427ecb409b589d5dce2a377b4abd6fd45fc53724215a7c6ad7b16893952295f0ef111b561ce9f1c3038e500640bb2
7
- data.tar.gz: 6dd80269c091aed7a5b0c7886f93dafce29ff427586ae6ae30bec1c7ce970c08c3293a972e11fb6be0cfb0ccb9af10c2f8cf5783a8afa353d03a07a7b8ad62c6
6
+ metadata.gz: 89e404108d4d74a7cca483e06e15e1d17bac9eb62b1db7b5bd62c784d84da655a457385d0712960d4eb3deb842d35f6f8733e6d4115724ac603b4ca26ba28eec
7
+ data.tar.gz: ea4ba5a7a05baff9ec02f65ecf29a87d04e63dcb2ccb443bea18a43dc12670e28cc9e47596b3e84926c1019ba925e52cb346dbab475c143a7af3c0b6b8e227f5
data/README.md CHANGED
@@ -1 +1,3 @@
1
- AppRegistry
1
+ [![Gem Version](https://badge.fury.io/rb/app_registry.svg)](http://badge.fury.io/rb/app_registry)
2
+
3
+ # AppRegistry
data/app_registry.gemspec CHANGED
@@ -8,9 +8,9 @@ Gem::Specification.new do |spec|
8
8
  spec.version = AppRegistry::VERSION
9
9
  spec.authors = ["uno4ki"]
10
10
  spec.email = ["i.have@no.mail"]
11
- spec.description = %q{Persistent variables storage for rails app}
11
+ spec.description = %q{Simple gem for works with persistent variables}
12
12
  spec.summary = %q{Persistent variables storage for rails app}
13
- spec.homepage = "https://github.com/uno4ki/app_registry"
13
+ spec.homepage = "https://github.com/the-furnish/app_registry"
14
14
  spec.license = "MIT"
15
15
 
16
16
  spec.files = `git ls-files -z`.split("\x0")
@@ -19,7 +19,7 @@ Gem::Specification.new do |spec|
19
19
  spec.require_paths = ["lib"]
20
20
 
21
21
  spec.add_development_dependency "bundler", "~> 1.3"
22
- spec.add_development_dependency "rake"
22
+ spec.add_development_dependency "rake", "~> 10.3"
23
23
 
24
24
  spec.add_dependency 'activerecord', '>= 3.2', '< 4.2'
25
25
  end
@@ -5,5 +5,41 @@ module AppRegistry
5
5
  self.primary_key = :name
6
6
  validates_presence_of :name, :value
7
7
  attr_accessible :name, :value
8
+
9
+ class << self
10
+ def find_with_default(key, value)
11
+ find(key).value
12
+ rescue ActiveRecord::RecordNotFound
13
+ value
14
+ end
15
+
16
+ def atomic_set(key, &block)
17
+ begin
18
+ find_and_update_locked(key, &block)
19
+ rescue ActiveRecord::RecordNotFound
20
+ transaction do
21
+ begin
22
+ create_and_update_locked(key, &block)
23
+ rescue ActiveRecord::RecordNotUnique
24
+ atomic_set(key, &block)
25
+ end
26
+ end
27
+ end
28
+ end
29
+
30
+ private
31
+
32
+ def find_and_update_locked(key, &block)
33
+ record = lock.find(key)
34
+ yield record
35
+ record.save if record.changed?
36
+ end
37
+
38
+ def create_and_update_locked(key, &block)
39
+ record = create({name: key, value: nil})
40
+ yield record
41
+ record.save if record.changed?
42
+ end
43
+ end
8
44
  end
9
45
  end
@@ -1,3 +1,3 @@
1
1
  module AppRegistry
2
- VERSION = "1.0.0.beta1"
2
+ VERSION = "1.0.0.beta2"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: app_registry
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.beta1
4
+ version: 1.0.0.beta2
5
5
  platform: ruby
6
6
  authors:
7
7
  - uno4ki
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-11-14 00:00:00.000000000 Z
11
+ date: 2014-11-16 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
  - !ruby/object:Gem::Dependency
42
42
  name: activerecord
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -58,7 +58,7 @@ dependencies:
58
58
  - - "<"
59
59
  - !ruby/object:Gem::Version
60
60
  version: '4.2'
61
- description: Persistent variables storage for rails app
61
+ description: Simple gem for works with persistent variables
62
62
  email:
63
63
  - i.have@no.mail
64
64
  executables: []
@@ -76,7 +76,7 @@ files:
76
76
  - lib/app_registry/version.rb
77
77
  - lib/generators/app_registry/app_registry_generator.rb
78
78
  - lib/generators/app_registry/templates/migration.rb
79
- homepage: https://github.com/uno4ki/app_registry
79
+ homepage: https://github.com/the-furnish/app_registry
80
80
  licenses:
81
81
  - MIT
82
82
  metadata: {}