mongoTools 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,45 @@
1
+ ./log/*
2
+ log/*.log
3
+ log/development.log
4
+ .DS_Store
5
+ doc/api
6
+ doc/app
7
+ coverage
8
+ db/*.sqlite3
9
+ db/development_structure.sql
10
+ public/uploads
11
+ spec/dummy/log
12
+ spec/dummy/tmp
13
+ spec/dummy/public/system/images
14
+ spec/dummy/puplic/assets/*
15
+ spec/dummy/public/system/uploads/*
16
+ spec/dummy/public/system/*
17
+ spec/dummy/public/uploads
18
+ spec/dummy/log*
19
+ spec/dummy/tmp*
20
+ index/*
21
+ *.swp
22
+ *.swo
23
+ .idea/
24
+ .idea/**/*
25
+ nbproject/*
26
+ *.war
27
+ db/schema.rb
28
+ tmp/*
29
+ wMake.bat
30
+ etc/web.xml
31
+ build/
32
+ build/*
33
+ .bundle/
34
+ ~/
35
+ ~/*
36
+ *.knob
37
+ tmp
38
+ mysession.vi*
39
+ ruby-uuid
40
+ localhistory
41
+ test
42
+ prod
43
+ *.png
44
+ site/dev/images/galleries
45
+ *.gem
data/Gemfile ADDED
@@ -0,0 +1,9 @@
1
+ source 'http://rubygems.org'
2
+ group :test do
3
+ gem 'rspec'
4
+ gem "mongoTools" , path: "."
5
+ gem 'guard-rspec'
6
+ gem 'mongoid'
7
+ gem 'guard'
8
+ end
9
+
data/Gemfile.lock ADDED
@@ -0,0 +1,90 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ mongoTools (0.0.1)
5
+
6
+ GEM
7
+ remote: http://rubygems.org/
8
+ specs:
9
+ activemodel (4.1.4)
10
+ activesupport (= 4.1.4)
11
+ builder (~> 3.1)
12
+ activesupport (4.1.4)
13
+ i18n (~> 0.6, >= 0.6.9)
14
+ json (~> 1.7, >= 1.7.7)
15
+ minitest (~> 5.1)
16
+ thread_safe (~> 0.1)
17
+ tzinfo (~> 1.1)
18
+ bson (2.3.0)
19
+ builder (3.2.2)
20
+ celluloid (0.15.2)
21
+ timers (~> 1.1.0)
22
+ coderay (1.1.0)
23
+ connection_pool (2.0.0)
24
+ diff-lcs (1.2.5)
25
+ ffi (1.9.3)
26
+ formatador (0.2.5)
27
+ guard (2.6.1)
28
+ formatador (>= 0.2.4)
29
+ listen (~> 2.7)
30
+ lumberjack (~> 1.0)
31
+ pry (>= 0.9.12)
32
+ thor (>= 0.18.1)
33
+ guard-rspec (4.3.1)
34
+ guard (~> 2.1)
35
+ rspec (>= 2.14, < 4.0)
36
+ i18n (0.6.11)
37
+ json (1.8.1)
38
+ listen (2.7.9)
39
+ celluloid (>= 0.15.2)
40
+ rb-fsevent (>= 0.9.3)
41
+ rb-inotify (>= 0.9)
42
+ lumberjack (1.0.9)
43
+ method_source (0.8.2)
44
+ minitest (5.4.0)
45
+ mongoid (4.0.0)
46
+ activemodel (~> 4.0)
47
+ moped (~> 2.0.0)
48
+ origin (~> 2.1)
49
+ tzinfo (>= 0.3.37)
50
+ moped (2.0.0)
51
+ bson (~> 2.2)
52
+ connection_pool (~> 2.0)
53
+ optionable (~> 0.2.0)
54
+ optionable (0.2.0)
55
+ origin (2.1.1)
56
+ pry (0.10.0)
57
+ coderay (~> 1.1.0)
58
+ method_source (~> 0.8.1)
59
+ slop (~> 3.4)
60
+ rb-fsevent (0.9.4)
61
+ rb-inotify (0.9.5)
62
+ ffi (>= 0.5.0)
63
+ rspec (3.0.0)
64
+ rspec-core (~> 3.0.0)
65
+ rspec-expectations (~> 3.0.0)
66
+ rspec-mocks (~> 3.0.0)
67
+ rspec-core (3.0.3)
68
+ rspec-support (~> 3.0.0)
69
+ rspec-expectations (3.0.3)
70
+ diff-lcs (>= 1.2.0, < 2.0)
71
+ rspec-support (~> 3.0.0)
72
+ rspec-mocks (3.0.3)
73
+ rspec-support (~> 3.0.0)
74
+ rspec-support (3.0.3)
75
+ slop (3.6.0)
76
+ thor (0.19.1)
77
+ thread_safe (0.3.4)
78
+ timers (1.1.0)
79
+ tzinfo (1.2.1)
80
+ thread_safe (~> 0.1)
81
+
82
+ PLATFORMS
83
+ ruby
84
+
85
+ DEPENDENCIES
86
+ guard
87
+ guard-rspec
88
+ mongoTools!
89
+ mongoid
90
+ rspec
data/Guardfile ADDED
@@ -0,0 +1,8 @@
1
+ # A sample Guardfile
2
+ # More info at https://github.com/guard/guard#readme
3
+ notification :tmux, display_message: true
4
+ guard :rspec , cmd: "rspec" do
5
+ watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
6
+ watch('spec/spec_helper.rb') { "spec" }
7
+ watch(%r{^spec/.+_spec\.rb$})
8
+ end
data/lib/md5.rb ADDED
@@ -0,0 +1,45 @@
1
+ require 'mongoid'
2
+ module MongoTools
3
+
4
+
5
+ def md5_create(field_names)
6
+ calc_md5(concat_string(field_names,""))
7
+ end
8
+
9
+
10
+ def concat_string(field_names,start_with)
11
+ retString = start_with
12
+ field_names.each do |field|
13
+ field_content = read_attribute(field).inspect
14
+ retString = retString + field_content
15
+ end
16
+ retString
17
+ end
18
+
19
+ ##aufter that method the element exists in al cases.
20
+ #it returns true if the item has to be created
21
+ #otherwise false
22
+
23
+ def find_or_create_with_md5(elements)
24
+ md5_string = md5_create(elements)
25
+ if !self.class.where(md5: md5_string).exists?
26
+ self.md5 = md5_string
27
+ self.save!
28
+ return true
29
+ else
30
+ return false
31
+ end
32
+
33
+ end
34
+
35
+
36
+ def calc_md5(md_string)
37
+ ret=Digest::MD5.hexdigest(md_string)
38
+ ret
39
+ end
40
+
41
+
42
+
43
+ end
44
+
45
+ Mongoid::Document.send(:include, MongoTools)
data/lib/mongoTools.rb ADDED
@@ -0,0 +1 @@
1
+ require 'md5'
@@ -0,0 +1,15 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = 'mongoTools'
3
+ s.version = '0.0.2'
4
+ s.date = '2014-08-02'
5
+ s.summary = "At the moment only md5 saver"
6
+ s.description = "only saves or create when the md5 of some fields has changed"
7
+ s.authors = ["Erhard Karger"]
8
+ s.email = 'erhard@kargers.org'
9
+ s.homepage = 'http://rubygems.org/gems/mongoTools'
10
+ s.license = 'MIT'
11
+ git_files = `git ls-files`.split("\n") rescue ''
12
+ s.files = git_files
13
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
14
+ s.require_paths = ["lib"]
15
+ end
data/readme.md ADDED
@@ -0,0 +1,45 @@
1
+ MongoTools
2
+ ===
3
+
4
+ Install
5
+ -------
6
+ gem install mongoTools
7
+
8
+ Example
9
+ -------
10
+ require "mongoTools"
11
+
12
+
13
+ TestMd5Object.delete_all()
14
+ ##call it more times
15
+ @to.find_or_create_with_md5(["email","adress","name","groups"])
16
+ @to.find_or_create_with_md5(["email","adress","name","groups"])
17
+ @to.find_or_create_with_md5(["email","adress","name","groups"])
18
+
19
+ ##Test :
20
+ expect(TestMd5Object.count()).to eq(1)
21
+
22
+
23
+ Look at the specs to see examples
24
+
25
+
26
+ current project status
27
+ ----------------------
28
+ Work in progress just started
29
+ This project is tthe place for all I need and is not in mongo
30
+ At the moment its a md5 function.
31
+ the md5 function gets an Array of fields and creates a md5 chesum of the content
32
+ It only adds a new record to the db when the md5 checksum of the specific fields has changed.
33
+ Otherwise it leaves the db untouched.
34
+ You need a field in the collection : md5, :type String
35
+
36
+
37
+
38
+
39
+
40
+
41
+ Licence:
42
+ MIT
43
+
44
+ Author:
45
+ Erhard Karger
@@ -0,0 +1,56 @@
1
+ require 'spec_helper'
2
+ require 'mongoid'
3
+
4
+ Mongoid.load!(File.join(File.dirname(__FILE__),"../mongoid.yml"), :test)
5
+
6
+ describe "md5_tools" do
7
+ before(:each) do
8
+ class TestMd5Object
9
+ include Mongoid::Document
10
+ include Mongoid::Attributes::Dynamic
11
+ field :email, type: String
12
+ field :adress, type: String
13
+ field :name, type: String
14
+ field :groups, type: Array
15
+ field :md5, type: String
16
+ end
17
+ @to = TestMd5Object.new({email: "test@email.com", adress: "New York", name: "Erhard", groups:["football","icehokey"]})
18
+ end
19
+ it "should create a md5 over some fields" do
20
+ md5 = @to.md5_create(["email","adress"])
21
+ puts md5
22
+ expect(md5).to eq("2c36c501b5fd85afc39084bf94674214")
23
+ end
24
+
25
+ it "should create a long string of a field structure" do
26
+ longString= @to.concat_string(["email","adress","name","groups"],"")
27
+ expected_result="\"test@email.com\"\"New York\"\"Erhard\"[\"football\", \"icehokey\"]"
28
+ expect(longString).to eq(expected_result)
29
+ end
30
+
31
+ it "should save a record" do
32
+ TestMd5Object.delete_all()
33
+ @to.find_or_create_with_md5(["email","adress","name","groups"])
34
+ expect(TestMd5Object.count()).to eq(1)
35
+ end
36
+
37
+ it "should not save a record and give back the object_id of the found md5" do
38
+ TestMd5Object.delete_all()
39
+ ##call it more times
40
+ @to.find_or_create_with_md5(["email","adress","name","groups"])
41
+ @to.find_or_create_with_md5(["email","adress","name","groups"])
42
+ @to.find_or_create_with_md5(["email","adress","name","groups"])
43
+ expect(TestMd5Object.count()).to eq(1)
44
+ end
45
+
46
+
47
+ it "should be full the md5 field..." do
48
+ TestMd5Object.delete_all()
49
+ @to.find_or_create_with_md5(["email","adress","name","groups"])
50
+ expect(@to.md5).to eq(@to.md5_create(["email","adress","name","groups"]))
51
+ end
52
+
53
+
54
+ end
55
+
56
+
data/spec/mongoid.yml ADDED
@@ -0,0 +1,12 @@
1
+ development:
2
+ sessions:
3
+ default:
4
+ database: testMd5
5
+ hosts:
6
+ - localhost:27017
7
+ test:
8
+ sessions:
9
+ default:
10
+ database: testMd5
11
+ hosts:
12
+ - localhost:27017
@@ -0,0 +1,6 @@
1
+ # spec/spec_helper.rb
2
+ Dir[File.join(File.dirname(__FILE__), '../lib/**/*.rb')].each {|f| require f }
3
+
4
+
5
+
6
+ #require File.join(File.dirname(__FILE__),'../lib')
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongoTools
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,14 +9,25 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-08-01 00:00:00.000000000 Z
12
+ date: 2014-08-02 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: only saves or create when the md5 of some fields has changed
15
15
  email: erhard@kargers.org
16
16
  executables: []
17
17
  extensions: []
18
18
  extra_rdoc_files: []
19
- files: []
19
+ files:
20
+ - .gitignore
21
+ - Gemfile
22
+ - Gemfile.lock
23
+ - Guardfile
24
+ - lib/md5.rb
25
+ - lib/mongoTools.rb
26
+ - mongoTools.gemspec
27
+ - readme.md
28
+ - spec/lib/md5_spec.rb
29
+ - spec/mongoid.yml
30
+ - spec/spec_helper.rb
20
31
  homepage: http://rubygems.org/gems/mongoTools
21
32
  licenses:
22
33
  - MIT