merb_datamapper 0.4.4 → 0.5
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/README +5 -3
- data/Rakefile +6 -2
- data/lib/merb/orms/data_mapper/connection.rb +6 -6
- data/lib/merb/orms/data_mapper/tasks/databases.rb +3 -3
- data/lib/merb/session/data_mapper_session.rb +20 -9
- data/lib/merb_datamapper.rb +2 -2
- metadata +4 -4
data/README
CHANGED
@@ -1,8 +1,10 @@
|
|
1
|
-
|
1
|
+
merb_datamapper
|
2
2
|
=================
|
3
3
|
|
4
4
|
A plugin for the Merb framework that provides DataMapper access
|
5
5
|
|
6
6
|
To use sessions:
|
7
|
-
set the session store to
|
8
|
-
|
7
|
+
1. set the session store to datamapper in merb.yml:
|
8
|
+
:session_store: datamapper
|
9
|
+
2. add the dependency in dependencies.rb:
|
10
|
+
use_orm :datamapper
|
data/Rakefile
CHANGED
@@ -3,7 +3,7 @@ require 'rake/gempackagetask'
|
|
3
3
|
|
4
4
|
PLUGIN = "merb_datamapper"
|
5
5
|
NAME = "merb_datamapper"
|
6
|
-
VERSION = "0.
|
6
|
+
VERSION = "0.5"
|
7
7
|
AUTHOR = "Jason Toy"
|
8
8
|
EMAIL = "jtoy@rubynow.com"
|
9
9
|
HOMEPAGE = "http://merbivore.com"
|
@@ -20,7 +20,7 @@ spec = Gem::Specification.new do |s|
|
|
20
20
|
s.author = AUTHOR
|
21
21
|
s.email = EMAIL
|
22
22
|
s.homepage = HOMEPAGE
|
23
|
-
s.add_dependency('merb', '>= 0.
|
23
|
+
s.add_dependency('merb', '>= 0.5')
|
24
24
|
s.add_dependency('datamapper', '>= 0.2.3')
|
25
25
|
s.require_path = 'lib'
|
26
26
|
s.autorequire = PLUGIN
|
@@ -35,3 +35,7 @@ task :install do
|
|
35
35
|
sh %{rake package}
|
36
36
|
sh %{sudo gem install pkg/#{NAME}-#{VERSION}}
|
37
37
|
end
|
38
|
+
|
39
|
+
task :release => :package do
|
40
|
+
sh %{rubyforge add_release merb #{PLUGIN} #{VERSION} pkg/#{NAME}-#{VERSION}.gem}
|
41
|
+
end
|
@@ -5,8 +5,8 @@ module Merb
|
|
5
5
|
module Orms
|
6
6
|
module DataMapper
|
7
7
|
class << self
|
8
|
-
def config_file()
|
9
|
-
def sample_dest()
|
8
|
+
def config_file() Merb.root / "config" / "database.yml" end
|
9
|
+
def sample_dest() Merb.root / "config" / "database.sample.yml" end
|
10
10
|
def sample_source() File.dirname(__FILE__) / "database.sample.yml" end
|
11
11
|
|
12
12
|
def copy_sample_config
|
@@ -18,8 +18,8 @@ module Merb
|
|
18
18
|
begin
|
19
19
|
# Convert string keys to symbols
|
20
20
|
full_config = Erubis.load_yaml_file(config_file)
|
21
|
-
config = (Merb::Plugins.config[:
|
22
|
-
(full_config[
|
21
|
+
config = (Merb::Plugins.config[:merb_datamapper] = {})
|
22
|
+
(full_config[Merb.environment.to_sym] || full_config[Merb.environment]).each { |k, v| config[k.to_sym] = v }
|
23
23
|
config
|
24
24
|
end
|
25
25
|
end
|
@@ -31,7 +31,7 @@ module Merb
|
|
31
31
|
::DataMapper::Database.setup(config)
|
32
32
|
else
|
33
33
|
copy_sample_config
|
34
|
-
puts "No database.yml file found in #{
|
34
|
+
puts "No database.yml file found in #{Merb.root}/config."
|
35
35
|
puts "A sample file was created called database.sample.yml for you to copy and edit."
|
36
36
|
exit(1)
|
37
37
|
end
|
@@ -40,7 +40,7 @@ module Merb
|
|
40
40
|
# Registering this ORM lets the user choose DataMapper as a session store
|
41
41
|
# in merb.yml's session_store: option.
|
42
42
|
def register_session_type
|
43
|
-
Merb::
|
43
|
+
Merb::BootLoader.register_session_type("datamapper",
|
44
44
|
"merb/session/data_mapper_session",
|
45
45
|
"Using DataMapper database sessions")
|
46
46
|
end
|
@@ -4,21 +4,21 @@ namespace :dm do
|
|
4
4
|
namespace :db do
|
5
5
|
desc "Perform automigration"
|
6
6
|
task :automigrate => :merb_env do
|
7
|
-
DataMapper::
|
7
|
+
DataMapper::Persistence.auto_migrate!
|
8
8
|
end
|
9
9
|
end
|
10
10
|
|
11
11
|
namespace :sessions do
|
12
12
|
desc "Creates session migration"
|
13
13
|
task :create => :merb_env do
|
14
|
-
dest = File.join(
|
14
|
+
dest = File.join(Merb.root, "schema", "migrations","001_add_sessions_table.rb")
|
15
15
|
source = File.join(File.dirname(__FILE__), "merb", "session","001_add_sessions_table.rb")
|
16
16
|
#FileUtils.cp source, dest unless File.exists?(dest)
|
17
17
|
end
|
18
18
|
|
19
19
|
desc "Clears sessions"
|
20
20
|
task :clear => :merb_env do
|
21
|
-
table_name = (Merb::Plugins.config[:
|
21
|
+
table_name = (Merb::Plugins.config[:datamapper][:session_table_name] || "sessions")
|
22
22
|
#Merb::Orms::DataMapper.connect.execute("DELETE FROM #{table_name}")
|
23
23
|
end
|
24
24
|
end
|
@@ -3,7 +3,7 @@ require 'base64'
|
|
3
3
|
module Merb
|
4
4
|
module SessionMixin
|
5
5
|
def setup_session
|
6
|
-
|
6
|
+
Merb.logger.info("Setting up session")
|
7
7
|
before = cookies[_session_id_key]
|
8
8
|
request.session, cookies[_session_id_key] = Merb::DataMapperSession.persist(cookies[_session_id_key])
|
9
9
|
@_fingerprint = Marshal.dump(request.session.data).hash
|
@@ -11,19 +11,19 @@ module Merb
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def finalize_session
|
14
|
-
|
14
|
+
Merb.logger.info("Finalize session")
|
15
15
|
request.session.save if @_fingerprint != Marshal.dump(request.session.data).hash
|
16
16
|
set_cookie(_session_id_key, request.session.session_id, _session_expiry) if (@_new_cookie || request.session.needs_new_cookie)
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
20
|
-
table_name = (Merb::Plugins.config[:
|
20
|
+
table_name = (Merb::Plugins.config[:merb_datamapper][:session_table_name] || "sessions")
|
21
21
|
|
22
22
|
class DataMapperSession < DataMapper::Base
|
23
23
|
|
24
24
|
set_table_name "sessions"
|
25
|
-
property :session_id, :text
|
26
|
-
property :data, :
|
25
|
+
property :session_id, :text, :lazy => false, :key => true
|
26
|
+
property :data, :text, :lazy => false
|
27
27
|
|
28
28
|
attr_accessor :needs_new_cookie
|
29
29
|
|
@@ -37,7 +37,7 @@ module Merb
|
|
37
37
|
# If none is found, generates a new session.
|
38
38
|
def persist(session_id)
|
39
39
|
if session_id
|
40
|
-
session = self[
|
40
|
+
session = self[session_id]
|
41
41
|
end
|
42
42
|
unless session
|
43
43
|
session = generate
|
@@ -63,10 +63,18 @@ module Merb
|
|
63
63
|
end
|
64
64
|
|
65
65
|
# Lazy-delete of session data
|
66
|
-
def delete
|
67
|
-
data
|
66
|
+
def delete(key = nil)
|
67
|
+
key ? self.data.delete(key) : self.data.clear
|
68
|
+
end
|
69
|
+
|
70
|
+
def empty?
|
71
|
+
data.empty?
|
68
72
|
end
|
69
73
|
|
74
|
+
def each(&b)
|
75
|
+
data.each(&b)
|
76
|
+
end
|
77
|
+
|
70
78
|
def [](key)
|
71
79
|
data[key]
|
72
80
|
end
|
@@ -78,7 +86,10 @@ module Merb
|
|
78
86
|
def data
|
79
87
|
@unmarshalled_data || @unmarshalled_data = self.class.unmarshal(@data)
|
80
88
|
end
|
81
|
-
|
89
|
+
|
90
|
+
def data=(data)
|
91
|
+
@data, @unmarshalled_data = data, data
|
92
|
+
end
|
82
93
|
|
83
94
|
private
|
84
95
|
|
data/lib/merb_datamapper.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# make sure we're running inside Merb
|
2
2
|
if defined?(Merb::Plugins)
|
3
|
-
if Merb::
|
4
|
-
puts "Warning: The
|
3
|
+
if Merb::BootLoader.app_loaded?
|
4
|
+
puts "Warning: The merb_datamapper gem must be loaded before the application"
|
5
5
|
else
|
6
6
|
require "merb/orms/data_mapper/connection"
|
7
7
|
Merb::Orms::DataMapper.connect
|
metadata
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
|
-
rubygems_version: 0.9.
|
2
|
+
rubygems_version: 0.9.0
|
3
3
|
specification_version: 1
|
4
4
|
name: merb_datamapper
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.
|
7
|
-
date:
|
6
|
+
version: "0.5"
|
7
|
+
date: 2008-01-09 00:00:00 -08:00
|
8
8
|
summary: Merb plugin that provides DataMapper support for Merb
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -88,7 +88,7 @@ dependencies:
|
|
88
88
|
requirements:
|
89
89
|
- - ">="
|
90
90
|
- !ruby/object:Gem::Version
|
91
|
-
version: 0.
|
91
|
+
version: "0.5"
|
92
92
|
version:
|
93
93
|
- !ruby/object:Gem::Dependency
|
94
94
|
name: datamapper
|