medea 0.3.7 → 0.4.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/lib/medea/jasondb.rb CHANGED
@@ -24,3 +24,39 @@ module JasonDB
24
24
  end
25
25
 
26
26
  end
27
+
28
+ module Medea
29
+ def Medea::setup_templates
30
+ template_dir = "templates"
31
+ name_pattern = /([A-Za-z]+)\.template/
32
+ headers = {:content_type => 'text/plain',
33
+ 'X-VERSION' => TEMPLATE_VERSION}
34
+ curr_version = TEMPLATE_VERSION.split "."
35
+ Dir.glob(File.expand_path(File.join(template_dir, "*.template"))).select do |file|
36
+ #for each template, we need to post it to ..#{filename}:html_template
37
+ file =~ name_pattern
38
+ template_path = "#{JasonDB::db_auth_url}..#{$1}:html_template"
39
+
40
+ #but,check the version first...
41
+ begin
42
+ r = RestClient.get template_path
43
+ if r.code == 200 && r.headers[:http_x_version]
44
+ version = r.headers[:http_x_version].split(".")
45
+ version.each_index do |i|
46
+ if version[i] < curr_version[i]
47
+ RestClient.post template_path, File.read(file), headers
48
+ break
49
+ elsif version[i] > curr_version[i]
50
+ raise "The remote templates are newer than the local ones! Update your gem!"
51
+ end
52
+ end
53
+ next
54
+ end
55
+
56
+ rescue RestClient::ResourceNotFound
57
+ #do nothing, it just means that the templates aren't uploaded yet.
58
+ end
59
+ RestClient.post template_path, File.read(file), headers
60
+ end
61
+ end
62
+ end
data/lib/medea/version.rb CHANGED
@@ -1,3 +1,7 @@
1
1
  module Medea
2
- VERSION = "0.3.7"
2
+ VERSION = "0.4.0"
3
+
4
+ #When the templates are changed, this version should be incremented
5
+ #This version is used when uploading/updating the templates
6
+ TEMPLATE_VERSION = "1.0.0"
3
7
  end
data/lib/medea.rb CHANGED
@@ -1,6 +1,7 @@
1
1
 
2
2
  module Medea
3
3
  require 'rubygems'
4
+ require 'medea/version'
4
5
  require 'medea/inheritable_attributes'
5
6
  require 'medea/active_model_methods'
6
7
  require 'medea/list_properties'
@@ -0,0 +1,49 @@
1
+ require "rspec"
2
+
3
+ describe "Medea Framework" do
4
+ it "should install templates if they aren't there" do
5
+ resp = mock("Response").as_null_object
6
+ RestClient.stub(:get).and_return resp
7
+ RestClient.stub(:post).and_return resp
8
+ resp.stub(:code).and_return 404
9
+ resp.stub(:headers).and_return({})
10
+
11
+ RestClient.should_receive(:post)
12
+ Medea::setup_templates
13
+ end
14
+
15
+ it "should install templates if the template version is newer" do
16
+ resp = mock("Response").as_null_object
17
+ RestClient.stub(:get).and_return resp
18
+ RestClient.stub(:post).and_return resp
19
+ resp.stub(:code).and_return 200
20
+ resp.stub(:headers).and_return({:http_x_version => "0.1.0"})
21
+
22
+ RestClient.should_receive(:post)
23
+ Medea::setup_templates
24
+ end
25
+
26
+ it "should not install templates if they are up to date" do
27
+ resp = mock("Response").as_null_object
28
+ RestClient.stub(:get).and_return resp
29
+ RestClient.stub(:post).and_return resp
30
+ resp.stub(:code).and_return 200
31
+ resp.stub(:headers).and_return({:http_x_version => Medea::TEMPLATE_VERSION})
32
+
33
+ RestClient.should_not_receive(:post)
34
+ Medea::setup_templates
35
+ end
36
+
37
+ it "should raise an error if the remote version is newer" do
38
+ resp = mock("Response").as_null_object
39
+ RestClient.stub(:get).and_return resp
40
+ RestClient.stub(:post).and_return resp
41
+ resp.stub(:code).and_return 200
42
+ #version 999.0.0 is pretty much guaranteed to always be a newer version
43
+ resp.stub(:headers).and_return({:http_x_version => "999.0.0"})
44
+
45
+ RestClient.should_not_receive(:post)
46
+ expect{Medea::setup_templates}.to raise_error(RuntimeError)
47
+ end
48
+
49
+ end
metadata CHANGED
@@ -1,13 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: medea
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
5
4
  prerelease: false
6
5
  segments:
7
6
  - 0
8
- - 3
9
- - 7
10
- version: 0.3.7
7
+ - 4
8
+ - 0
9
+ version: 0.4.0
11
10
  platform: ruby
12
11
  authors:
13
12
  - Michael Jensen
@@ -15,7 +14,7 @@ autorequire:
15
14
  bindir: bin
16
15
  cert_chain: []
17
16
 
18
- date: 2011-01-10 00:00:00 +11:00
17
+ date: 2011-01-13 00:00:00 +11:00
19
18
  default_executable:
20
19
  dependencies:
21
20
  - !ruby/object:Gem::Dependency
@@ -26,7 +25,6 @@ dependencies:
26
25
  requirements:
27
26
  - - ">="
28
27
  - !ruby/object:Gem::Version
29
- hash: 3
30
28
  segments:
31
29
  - 0
32
30
  version: "0"
@@ -40,7 +38,6 @@ dependencies:
40
38
  requirements:
41
39
  - - ">="
42
40
  - !ruby/object:Gem::Version
43
- hash: 3
44
41
  segments:
45
42
  - 0
46
43
  version: "0"
@@ -54,7 +51,6 @@ dependencies:
54
51
  requirements:
55
52
  - - ">="
56
53
  - !ruby/object:Gem::Version
57
- hash: 3
58
54
  segments:
59
55
  - 0
60
56
  version: "0"
@@ -68,7 +64,6 @@ dependencies:
68
64
  requirements:
69
65
  - - ">="
70
66
  - !ruby/object:Gem::Version
71
- hash: 3
72
67
  segments:
73
68
  - 0
74
69
  version: "0"
@@ -102,6 +97,7 @@ files:
102
97
  - medea.gemspec
103
98
  - spec/jason_object_spec.rb
104
99
  - spec/list_properties_spec.rb
100
+ - spec/medea_spec.rb
105
101
  - spec/spec_helper.rb
106
102
  has_rdoc: true
107
103
  homepage: ""
@@ -117,7 +113,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
117
113
  requirements:
118
114
  - - ">="
119
115
  - !ruby/object:Gem::Version
120
- hash: 3
121
116
  segments:
122
117
  - 0
123
118
  version: "0"
@@ -126,7 +121,6 @@ required_rubygems_version: !ruby/object:Gem::Requirement
126
121
  requirements:
127
122
  - - ">="
128
123
  - !ruby/object:Gem::Version
129
- hash: 3
130
124
  segments:
131
125
  - 0
132
126
  version: "0"