cinch-storage 0.0.2 → 1.0.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.
- data/.travis.yml +4 -0
- data/README.md +6 -0
- data/Rakefile +6 -0
- data/cinch-storage.gemspec +7 -2
- data/lib/{cinch-storage → cinch/storage}/version.rb +1 -1
- data/lib/cinch-storage.rb +25 -2
- data/spec/cinch-storage_spec.rb +43 -0
- data/spec/spec_helper.rb +4 -0
- metadata +76 -7
- data/lib/cinch-storage/storage.rb +0 -24
data/.travis.yml
ADDED
data/README.md
CHANGED
@@ -1,5 +1,11 @@
|
|
1
1
|
# Cinch::Storage
|
2
2
|
|
3
|
+
[](http://badge.fury.io/rb/cinch-storage)
|
4
|
+
[](https://gemnasium.com/bhaberer/cinch-storage)
|
5
|
+
[](https://travis-ci.org/bhaberer/cinch-storage)
|
6
|
+
[](https://coveralls.io/r/bhaberer/cinch-storage?branch=master)
|
7
|
+
[](https://codeclimate.com/github/bhaberer/cinch-storage)
|
8
|
+
|
3
9
|
Simple YAML backed Storage solution for Cinch plugins.
|
4
10
|
|
5
11
|
Warning: Once Cinch's author finishes Cinch::Storage I will deprecate this gem.
|
data/Rakefile
CHANGED
data/cinch-storage.gemspec
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
lib = File.expand_path('../lib', __FILE__)
|
3
3
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require 'cinch
|
4
|
+
require 'cinch/storage/version'
|
5
5
|
|
6
6
|
Gem::Specification.new do |gem|
|
7
7
|
gem.name = "cinch-storage"
|
@@ -17,5 +17,10 @@ Gem::Specification.new do |gem|
|
|
17
17
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
18
18
|
gem.require_paths = ["lib"]
|
19
19
|
|
20
|
-
gem.
|
20
|
+
gem.add_development_dependency 'rake'
|
21
|
+
gem.add_development_dependency 'rspec'
|
22
|
+
gem.add_development_dependency 'coveralls'
|
23
|
+
gem.add_development_dependency 'cinch-test'
|
24
|
+
|
25
|
+
gem.add_dependency 'psych', '~> 1.3.4'
|
21
26
|
end
|
data/lib/cinch-storage.rb
CHANGED
@@ -1,2 +1,25 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require 'cinch/storage/version'
|
2
|
+
require 'psych'
|
3
|
+
|
4
|
+
class CinchStorage
|
5
|
+
attr_accessor :filename, :data
|
6
|
+
|
7
|
+
def initialize(file, init = Hash.new)
|
8
|
+
@filename = file
|
9
|
+
@data = YAML::load(File.open(@filename)) if File::exist?(@filename)
|
10
|
+
@data ||= init
|
11
|
+
end
|
12
|
+
|
13
|
+
def save
|
14
|
+
File.open(@filename, 'w') do |file|
|
15
|
+
YAML::dump(@data, file)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def synced_save(bot = @bot)
|
20
|
+
bot.synchronize(@filename) do
|
21
|
+
save
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
class MyPlugin
|
4
|
+
include Cinch::Plugin
|
5
|
+
|
6
|
+
def initialize(*args)
|
7
|
+
super
|
8
|
+
@storage = CinchStorage.new(config[:filename] || '/dev/null', [])
|
9
|
+
end
|
10
|
+
|
11
|
+
match /store (.*)/
|
12
|
+
|
13
|
+
def execute(m, thing)
|
14
|
+
@storage.data << thing
|
15
|
+
@storage.synced_save(@bot)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
|
20
|
+
describe CinchStorage do
|
21
|
+
include Cinch::Test
|
22
|
+
|
23
|
+
before(:each) do
|
24
|
+
@filename = '/tmp/storage_test.tmp'
|
25
|
+
File.delete(@filename) if File.exist?(@filename)
|
26
|
+
@bot = make_bot(MyPlugin, { :filename => @filename })
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'should allow users to store information between bot runs' do
|
30
|
+
storage = CinchStorage.new(@filename, [])
|
31
|
+
storage.data << 'foo'
|
32
|
+
storage.save
|
33
|
+
|
34
|
+
CinchStorage.new(@filename).data.
|
35
|
+
should include 'foo'
|
36
|
+
end
|
37
|
+
|
38
|
+
it 'should handle multiple bot threads attempting to write to the same file' do
|
39
|
+
10.times { |x| get_replies(make_message(@bot, "!store #{x}"))}
|
40
|
+
CinchStorage.new(@filename).data.length.
|
41
|
+
should == 10
|
42
|
+
end
|
43
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cinch-storage
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 1.0.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,14 +9,78 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-07-04 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rake
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: rspec
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
type: :development
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: coveralls
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: cinch-test
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
type: :development
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
14
78
|
- !ruby/object:Gem::Dependency
|
15
79
|
name: psych
|
16
80
|
requirement: !ruby/object:Gem::Requirement
|
17
81
|
none: false
|
18
82
|
requirements:
|
19
|
-
- -
|
83
|
+
- - ~>
|
20
84
|
- !ruby/object:Gem::Version
|
21
85
|
version: 1.3.4
|
22
86
|
type: :runtime
|
@@ -24,7 +88,7 @@ dependencies:
|
|
24
88
|
version_requirements: !ruby/object:Gem::Requirement
|
25
89
|
none: false
|
26
90
|
requirements:
|
27
|
-
- -
|
91
|
+
- - ~>
|
28
92
|
- !ruby/object:Gem::Version
|
29
93
|
version: 1.3.4
|
30
94
|
description: Simle YAML backed Storage solution for Cinch plugins.
|
@@ -35,14 +99,16 @@ extensions: []
|
|
35
99
|
extra_rdoc_files: []
|
36
100
|
files:
|
37
101
|
- .gitignore
|
102
|
+
- .travis.yml
|
38
103
|
- Gemfile
|
39
104
|
- LICENSE.txt
|
40
105
|
- README.md
|
41
106
|
- Rakefile
|
42
107
|
- cinch-storage.gemspec
|
43
108
|
- lib/cinch-storage.rb
|
44
|
-
- lib/cinch
|
45
|
-
-
|
109
|
+
- lib/cinch/storage/version.rb
|
110
|
+
- spec/cinch-storage_spec.rb
|
111
|
+
- spec/spec_helper.rb
|
46
112
|
homepage: https://github.com/bhaberer/cinch-storage
|
47
113
|
licenses: []
|
48
114
|
post_install_message:
|
@@ -67,4 +133,7 @@ rubygems_version: 1.8.24
|
|
67
133
|
signing_key:
|
68
134
|
specification_version: 3
|
69
135
|
summary: Simle YAML backed Storage solution for Cinch plugins.
|
70
|
-
test_files:
|
136
|
+
test_files:
|
137
|
+
- spec/cinch-storage_spec.rb
|
138
|
+
- spec/spec_helper.rb
|
139
|
+
has_rdoc:
|
@@ -1,24 +0,0 @@
|
|
1
|
-
class CinchStorage
|
2
|
-
require 'yaml'
|
3
|
-
|
4
|
-
attr_accessor :filename, :data
|
5
|
-
|
6
|
-
def initialize(file)
|
7
|
-
@filename = file
|
8
|
-
@data = YAML::load(File.open(@filename)) if File::exist?(@filename)
|
9
|
-
@data ||= Hash.new
|
10
|
-
end
|
11
|
-
|
12
|
-
def save
|
13
|
-
File.open(@filename, 'w') do |file|
|
14
|
-
YAML::dump(@data, file)
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
def synced_save(bot)
|
19
|
-
bot.synchronize(@filename) do
|
20
|
-
save
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|