welltreat-store-framework 0.2.0 → 0.2.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.
- data/lib/welltreat_store_framework/core.rb +7 -0
- data/lib/welltreat_store_framework/haml_renderer.rb +1 -1
- data/lib/welltreat_store_framework/rack_server.rb +6 -5
- data/sample/hello-store/controllers/home.rb +2 -2
- data/sample/hello-store/controllers/products.rb +2 -2
- data/spec/lib/welltreat_store_framework/haml_renderer/context_spec.rb +2 -1
- data/spec/lib/welltreat_store_framework/store_app_spec.rb +11 -10
- data/spec/sample/controllers/products_spec.rb +8 -7
- metadata +10 -10
@@ -42,6 +42,13 @@ module WelltreatStoreFramework
|
|
42
42
|
end
|
43
43
|
end
|
44
44
|
|
45
|
+
# Return connection to poll
|
46
|
+
def disconnect_database!
|
47
|
+
if ActiveRecord::Base.connection.present?
|
48
|
+
ActiveRecord::Base.connection.close
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
45
52
|
private
|
46
53
|
def _detect_stores(partition_object = nil)
|
47
54
|
_stores = { }
|
@@ -37,7 +37,7 @@ module WelltreatStoreFramework
|
|
37
37
|
raise StoreApp::TemplateNotFound.new(_file) if _file.nil? || !File.exist?(_file)
|
38
38
|
|
39
39
|
if WelltreatStoreFramework::Core.configuration.auto_reload
|
40
|
-
Haml::Engine.new(File.read(_file), filename: _file)
|
40
|
+
Haml::Engine.new(File.read(_file), filename: _file, encoding: 'UTF-8')
|
41
41
|
else
|
42
42
|
_haml_engines[_key] ||=
|
43
43
|
Haml::Engine.new(File.read(_file), filename: _file)
|
@@ -17,11 +17,16 @@ module WelltreatStoreFramework
|
|
17
17
|
|
18
18
|
def call(env)
|
19
19
|
_store = _find_store(env)
|
20
|
+
WelltreatStoreFramework::Core.connect_database!
|
21
|
+
|
20
22
|
if _store
|
21
23
|
_store.call(env)
|
22
24
|
else
|
23
25
|
raise "Store - #{self.store_name} for partition - #{self.partition_id} not found."
|
24
26
|
end
|
27
|
+
|
28
|
+
ensure
|
29
|
+
WelltreatStoreFramework::Core.disconnect_database!
|
25
30
|
end
|
26
31
|
|
27
32
|
private
|
@@ -46,11 +51,7 @@ module WelltreatStoreFramework
|
|
46
51
|
|
47
52
|
return store if store.nil?
|
48
53
|
|
49
|
-
store.tap
|
50
|
-
_s.start
|
51
|
-
WelltreatStoreFramework::Core.connect_database!
|
52
|
-
end
|
53
|
-
|
54
|
+
store.tap { |_s| _s.start }
|
54
55
|
end
|
55
56
|
end
|
56
57
|
end
|
@@ -1,14 +1,14 @@
|
|
1
1
|
class Home
|
2
2
|
include WelltreatStoreFramework::Controller
|
3
3
|
|
4
|
-
def index(request, response)
|
4
|
+
def index(request, response, options = {})
|
5
5
|
response.set :title, "Hello World"
|
6
6
|
response.set :name, "Hasan"
|
7
7
|
|
8
8
|
response.set :products, app.models::Product.all
|
9
9
|
end
|
10
10
|
|
11
|
-
def not_found(request, response)
|
11
|
+
def not_found(request, response, options = {})
|
12
12
|
response.content = "<h1>Page Not found</h1>"
|
13
13
|
response.status = 404
|
14
14
|
end
|
@@ -3,11 +3,11 @@ class Products
|
|
3
3
|
|
4
4
|
class ProductNotFound < StandardError; end
|
5
5
|
|
6
|
-
def index(request, response)
|
6
|
+
def index(request, response, options = {})
|
7
7
|
response.set :products, [{name: 'Product 1'}, {name: 'Product 2'}]
|
8
8
|
end
|
9
9
|
|
10
|
-
def show(request, response)
|
10
|
+
def show(request, response, options = {})
|
11
11
|
if request[:id].present?
|
12
12
|
response.set :product, app.models::Product.find(request[:id])
|
13
13
|
response.set :title, response.get(:product).name
|
@@ -15,7 +15,8 @@ describe WelltreatStoreFramework::HamlRenderer::Context do
|
|
15
15
|
let(:app) { WelltreatStoreFramework::Core.find_store_by_name('hello-store') }
|
16
16
|
let(:request) { WelltreatStoreFramework::Controller::Request.new }
|
17
17
|
let(:response) { WelltreatStoreFramework::Controller::Response.new }
|
18
|
-
let(:
|
18
|
+
let(:session) { mock(:session) }
|
19
|
+
let(:context) { WelltreatStoreFramework::HamlRenderer::Context.new(app, request, response, {session: session}) }
|
19
20
|
|
20
21
|
describe '#image_tag' do
|
21
22
|
it 'should render img tag' do
|
@@ -17,15 +17,16 @@ describe WelltreatStoreFramework::StoreApp do
|
|
17
17
|
describe '#dispatch' do
|
18
18
|
let(:request) { WelltreatStoreFramework::Controller::Request.new }
|
19
19
|
let(:response) { WelltreatStoreFramework::Controller::Response.new }
|
20
|
+
let(:session) { mock(:session) }
|
20
21
|
|
21
22
|
it 'should not throw any exception' do
|
22
23
|
lambda {
|
23
|
-
app.dispatch('/', request, response)
|
24
|
+
app.dispatch('/', request, response, {session: session})
|
24
25
|
}.should_not raise_error
|
25
26
|
end
|
26
27
|
|
27
28
|
describe 'response object' do
|
28
|
-
before { app.dispatch('/', request, response) }
|
29
|
+
before { app.dispatch('/', request, response, {session: session}) }
|
29
30
|
subject { response }
|
30
31
|
|
31
32
|
its(:template) { should == :index }
|
@@ -36,8 +37,8 @@ describe WelltreatStoreFramework::StoreApp do
|
|
36
37
|
end
|
37
38
|
|
38
39
|
describe 'rendered content' do
|
39
|
-
before { app.dispatch('/', request, response) }
|
40
|
-
before { app.render!(request, response) }
|
40
|
+
before { app.dispatch('/', request, response, {session: session}) }
|
41
|
+
before { app.render!(request, response, {session: session}) }
|
41
42
|
subject { response }
|
42
43
|
|
43
44
|
its(:content) { should match 'Hasan' }
|
@@ -45,8 +46,8 @@ describe WelltreatStoreFramework::StoreApp do
|
|
45
46
|
end
|
46
47
|
|
47
48
|
describe 'product controller' do
|
48
|
-
before { app.dispatch('/products', request, response) }
|
49
|
-
before { app.render!(request, response) }
|
49
|
+
before { app.dispatch('/products', request, response, {session: session}) }
|
50
|
+
before { app.render!(request, response, {session: session}) }
|
50
51
|
subject { response }
|
51
52
|
|
52
53
|
its(:template) { should == :index }
|
@@ -59,14 +60,14 @@ describe WelltreatStoreFramework::StoreApp do
|
|
59
60
|
context 'auto reload enabled' do
|
60
61
|
it 'should have same base module name' do
|
61
62
|
_old_app_mod = app.send(:_base_module).name
|
62
|
-
app.dispatch('/', request, response)
|
63
|
+
app.dispatch('/', request, response, {session: session})
|
63
64
|
|
64
65
|
app.send(:_base_module).name.should eql _old_app_mod
|
65
66
|
end
|
66
67
|
|
67
68
|
it 'should have different base object_id' do
|
68
69
|
_old_app_mod_id = app.send(:_base_module).object_id
|
69
|
-
app.dispatch('/', request, response)
|
70
|
+
app.dispatch('/', request, response, {session: session})
|
70
71
|
|
71
72
|
app.send(:_base_module).object_id.should_not eql _old_app_mod_id
|
72
73
|
end
|
@@ -74,8 +75,8 @@ describe WelltreatStoreFramework::StoreApp do
|
|
74
75
|
end
|
75
76
|
|
76
77
|
context 'not found url' do
|
77
|
-
before { app.dispatch('/Something does not exists', request, response) }
|
78
|
-
before { app.render!(request, response) }
|
78
|
+
before { app.dispatch('/Something does not exists', request, response, {session: session}) }
|
79
|
+
before { app.render!(request, response, {session: session}) }
|
79
80
|
subject { response }
|
80
81
|
|
81
82
|
its(:content) { should match /not\s*found/i }
|
@@ -12,6 +12,7 @@ describe 'SampleApp::HelloStore' do
|
|
12
12
|
|
13
13
|
let(:request) { WelltreatStoreFramework::Controller::Request.new }
|
14
14
|
let(:response) { WelltreatStoreFramework::Controller::Response.new }
|
15
|
+
let(:session) { mock(:session) }
|
15
16
|
|
16
17
|
before(:each) do
|
17
18
|
request = WelltreatStoreFramework::Controller::Request.new
|
@@ -26,7 +27,7 @@ describe 'SampleApp::HelloStore' do
|
|
26
27
|
describe '/' do
|
27
28
|
it 'should render without error' do
|
28
29
|
lambda {
|
29
|
-
app.dispatch('/', request, response)
|
30
|
+
app.dispatch('/', request, response, {session: session})
|
30
31
|
}.should_not raise_error
|
31
32
|
end
|
32
33
|
|
@@ -45,7 +46,7 @@ describe 'SampleApp::HelloStore' do
|
|
45
46
|
}
|
46
47
|
}
|
47
48
|
|
48
|
-
before { app.dispatch('/', request, response) }
|
49
|
+
before { app.dispatch('/', request, response, {session: session}) }
|
49
50
|
subject { response }
|
50
51
|
|
51
52
|
its([:products]) { should be }
|
@@ -53,7 +54,7 @@ describe 'SampleApp::HelloStore' do
|
|
53
54
|
its([:products]) { subject.map(&:_id).should == products.map(&:_id) }
|
54
55
|
|
55
56
|
describe 'rendered content' do
|
56
|
-
before { app.render!(request, response) }
|
57
|
+
before { app.render!(request, response, {session: session}) }
|
57
58
|
subject { response.content }
|
58
59
|
|
59
60
|
it 'should have rendered products' do
|
@@ -89,24 +90,24 @@ describe 'SampleApp::HelloStore' do
|
|
89
90
|
context 'when valid product id' do
|
90
91
|
it 'should render without any problem' do
|
91
92
|
lambda {
|
92
|
-
app.dispatch("/products/show/#{products.first._id}", request, response)
|
93
|
+
app.dispatch("/products/show/#{products.first._id}", request, response, {session: session})
|
93
94
|
}.should_not raise_error
|
94
95
|
end
|
95
96
|
|
96
97
|
describe 'before rendered' do
|
97
|
-
before { app.dispatch("/products/show/#{products.first._id}", request, response) }
|
98
|
+
before { app.dispatch("/products/show/#{products.first._id}", request, response, {session: session}) }
|
98
99
|
subject { response }
|
99
100
|
|
100
101
|
its([:product]) { should be }
|
101
102
|
|
102
103
|
it 'should render without any error' do
|
103
104
|
lambda {
|
104
|
-
app.render!(request, response)
|
105
|
+
app.render!(request, response, {session: session})
|
105
106
|
}.should_not raise_error
|
106
107
|
end
|
107
108
|
|
108
109
|
describe 'after rendered' do
|
109
|
-
before { app.render!(request, response) }
|
110
|
+
before { app.render!(request, response, {session: session}) }
|
110
111
|
subject { response.content }
|
111
112
|
|
112
113
|
it { should match products.first.name }
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: welltreat-store-framework
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-07-
|
12
|
+
date: 2012-07-23 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: jeweler
|
16
|
-
requirement: &
|
16
|
+
requirement: &2161426880 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *2161426880
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: activesupport
|
27
|
-
requirement: &
|
27
|
+
requirement: &2161426340 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 3.2.0
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *2161426340
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: haml
|
38
|
-
requirement: &
|
38
|
+
requirement: &2161425620 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *2161425620
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: flexi_model
|
49
|
-
requirement: &
|
49
|
+
requirement: &2161423420 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,7 +54,7 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *2161423420
|
58
58
|
description: WellTreat Store Framework
|
59
59
|
email:
|
60
60
|
- hasan83bd@gmail.com
|