merb_sequel 0.4.3 → 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/Rakefile CHANGED
@@ -3,9 +3,9 @@ require "rake/gempackagetask"
3
3
 
4
4
  PLUGIN = "merb_sequel"
5
5
  NAME = "merb_sequel"
6
- VERSION = "0.4.3"
7
- AUTHOR = "Wayne E. Seguin"
8
- EMAIL = "wayneeseguin@gmail.com"
6
+ VERSION = "0.5"
7
+ AUTHOR = "Wayne E. Seguin, Lance Carlson"
8
+ EMAIL = "wayneeseguin@gmail.com, lancecarlson@gmail.com"
9
9
  HOMEPAGE = "http://merb-plugins.rubyforge.org/merb_sequel/"
10
10
  SUMMARY = "Merb plugin that provides support for Sequel and Sequel::Model"
11
11
 
@@ -23,7 +23,7 @@ specification = Gem::Specification.new do |spec|
23
23
  spec.require_path = "lib"
24
24
  spec.extra_rdoc_files = ["README", "LICENSE", 'TODO']
25
25
  # Dependencies
26
- spec.add_dependency("merb", ">= 0.4.2")
26
+ spec.add_dependency("merb", ">= 0.5")
27
27
  spec.add_dependency("sequel", ">= 1.0.0")
28
28
  spec.add_dependency("sequel_model", ">= 0.2")
29
29
  spec.files = %w(LICENSE README Rakefile TODO) + Dir.glob("{lib,specs,sequel_generators}/**/*")
@@ -3,9 +3,11 @@ require "fileutils"
3
3
  module Merb
4
4
  module Orms
5
5
  module Sequel
6
+
6
7
  class << self
7
- def config_file() MERB_ROOT / "config" / "database.yml" end
8
- def sample_dest() MERB_ROOT / "config" / "database.sample.yml" end
8
+
9
+ def config_file() Merb.root / "config" / "database.yml" end
10
+ def sample_dest() Merb.root / "config" / "database.sample.yml" end
9
11
  def sample_source() File.dirname(__FILE__) / "database.sample.yml" end
10
12
 
11
13
  def copy_sample_config
@@ -13,37 +15,42 @@ module Merb
13
15
  end
14
16
 
15
17
  def config
18
+
16
19
  @config ||=
17
- begin
18
- # Convert string keys to symbols
19
- full_config = Erubis.load_yaml_file(config_file)
20
- config = (Merb::Plugins.config[:merb_sequel] = {})
21
- (full_config[MERB_ENV.to_sym] || full_config[MERB_ENV]).each do |key, value|
22
- config[key.to_sym] = value
23
- end
24
- config
20
+ begin
21
+ # Convert string keys to symbols
22
+ full_config = Erubis.load_yaml_file(config_file)
23
+ config = (Merb::Plugins.config[:merb_sequel] = {})
24
+ (full_config[Merb.environment.to_sym] || full_config[Merb.environment]).each do |key, value|
25
+ config[key.to_sym] = value
25
26
  end
27
+ config
28
+ end
29
+
26
30
  end
27
31
 
28
32
  # Database connects as soon as the gem is loaded
29
33
  def connect
34
+
30
35
  require "sequel"
31
36
  require "sequel_model"
32
37
 
33
38
  if File.exists?(config_file)
34
39
  puts "#{Time.now.httpdate}: Connecting to the '#{config[:database]}' database on '#{config[:host]}' using '#{config[:adapter]}' ..."
35
40
  connection = ::Sequel.connect(config_options(config))
36
- MERB_LOGGER.error("Connection Error: #{e}") unless connection
41
+ Merb.logger.error("Connection Error: #{e}") unless connection
37
42
  connection
38
43
  else
39
44
  copy_sample_config
40
- puts "#{Time.now.httpdate}: No database.yml file found in #{MERB_ROOT}/config."
45
+ puts "#{Time.now.httpdate}: No database.yml file found in #{Merb.root}/config."
41
46
  puts "A sample file was created called config/database.sample.yml for you to copy and edit."
42
47
  exit(1)
43
48
  end
49
+
44
50
  end
45
51
 
46
52
  def config_options(config = {})
53
+
47
54
  options = {}
48
55
  options[:adapter] = (config[:adapter] || "sqlite")
49
56
  options[:host] = (config[:host] || "localhost")
@@ -53,20 +60,22 @@ module Merb
53
60
  options[:encoding] = (config[:encoding] || config[:charset])
54
61
  end
55
62
  options[:database] = config[:database] if config[:database]
56
- options[:logger] = MERB_LOGGER
63
+ options[:logger] = Merb.logger
57
64
  options
58
65
  end
59
66
 
60
67
  # Registering this ORM lets the user choose sequel as a session store
61
68
  # in merb.yml's session_store: option.
62
69
  def register_session_type
63
- Merb::Server.register_session_type("sequel",
70
+ Merb::BootLoader.register_session_type("sequel",
64
71
  "merb/session/sequel_session",
65
72
  "Using Sequel database sessions")
66
73
  end
67
74
 
68
75
  end
76
+
69
77
  end
78
+
70
79
  end
71
80
 
72
81
  end
@@ -1,43 +1,45 @@
1
- require 'base64'
1
+ require "base64"
2
2
 
3
3
  module Merb
4
+
4
5
  module SessionMixin
5
-
6
+
6
7
  def setup_session
7
- MERB_LOGGER.info("Setting up session")
8
+ Merb.logger.info("Setting up session")
8
9
  before = cookies[_session_id_key]
9
10
  request.session, cookies[_session_id_key] = Merb::SequelSession.persist(cookies[_session_id_key])
10
11
  @_fingerprint = Marshal.dump(request.session.data).hash
11
12
  @_new_cookie = cookies[_session_id_key] != before
12
13
  end
13
-
14
+
14
15
  def finalize_session
15
- MERB_LOGGER.info("Finalize session")
16
+ Merb.logger.info("Finalize session")
16
17
  request.session.save if @_fingerprint != Marshal.dump(request.session.data).hash
17
18
  set_cookie(_session_id_key, request.session.values[:session_id], _session_expiry) if (@_new_cookie || request.session.needs_new_cookie)
18
19
  end
19
-
20
+
20
21
  end
21
22
 
22
- table_name = (Merb::Plugins.config[:sequel][:session_table_name] || "sessions")
23
+ table_name = (Merb::Plugins.config[:merb_sequel][:session_table_name] || "sessions")
23
24
 
24
25
  class SequelSession < Sequel::Model(table_name.to_sym)
26
+
25
27
  set_schema do
26
28
  primary_key :id
27
29
  varchar :session_id
28
30
  varchar :data
29
31
  timestamp :created_at
30
32
  end
31
-
33
+
32
34
  attr_accessor :needs_new_cookie
33
-
35
+
34
36
  class << self
35
37
  # Generates a new session ID and creates a row for the new session in the database.
36
38
  def generate
37
39
  create(:session_id => Merb::SessionMixin::rand_uuid,
38
- :data => marshal({}), :created_at => Time.now)
40
+ :data => marshal({}), :created_at => Time.now)
39
41
  end
40
-
42
+
41
43
  # Gets the existing session based on the <tt>session_id</tt> available in cookies.
42
44
  # If none is found, generates a new session.
43
45
  def persist(session_id)
@@ -49,90 +51,91 @@ module Merb
49
51
  end
50
52
  [session, session.values[:session_id]]
51
53
  end
52
-
54
+
53
55
  # Don't try to reload ARStore::Session in dev mode.
54
56
  def reloadable? #:nodoc:
55
57
  false
56
58
  end
57
-
59
+
58
60
  def data_column_size_limit
59
61
  255
60
62
  end
61
-
63
+
62
64
  def marshal(data)
63
65
  Base64.encode64(Marshal.dump(data)) if data
64
66
  end
65
-
67
+
66
68
  def unmarshal(data)
67
69
  Marshal.load(Base64.decode64(data)) if data
68
70
  end
69
-
71
+
70
72
  alias :create_table! :create_table
71
73
  alias :drop_table! :drop_table
72
74
  end
73
-
75
+
74
76
  # Regenerate the Session ID
75
77
  def regenerate
76
78
  update_attributes(:session_id => Merb::SessionMixin::rand_uuid)
77
79
  self.needs_new_cookie = true
78
80
  end
79
-
81
+
80
82
  # Recreates the cookie with the default expiration time
81
83
  # Useful during log in for pushing back the expiration date
82
84
  def refresh_expiration
83
85
  self.needs_new_cookie = true
84
86
  end
85
-
87
+
86
88
  # Lazy-delete of session data
87
89
  def delete(key = nil)
88
90
  key ? self.data.delete(key) : self.data.clear
89
91
  end
90
-
92
+
91
93
  def [](key)
92
94
  data[key]
93
95
  end
94
-
96
+
95
97
  def []=(key, val)
96
98
  data[key] = val
97
99
  end
98
-
100
+
99
101
  def empty?
100
102
  data.empty?
101
103
  end
102
-
104
+
103
105
  def each(&b)
104
106
  data.each(&b)
105
107
  end
106
-
108
+
107
109
  # Lazy-unmarshal session state.
108
110
  def data
109
111
  @data ||= self.class.unmarshal(@values[:data]) || {}
110
112
  end
111
-
113
+
112
114
  # Has the session been loaded yet?
113
115
  def loaded?
114
116
  !! @data
115
117
  end
116
-
117
- private
118
-
118
+
119
+ private
120
+
119
121
  attr_writer :data
120
-
122
+
121
123
  before_save do # marshal_data!
122
124
  # return false if !loaded?
123
125
  @values[:data] = self.class.marshal(self.data)
124
126
  end
125
-
127
+
126
128
  # Ensures that the data about to be stored in the database is not
127
129
  # larger than the data storage column. Raises
128
130
  # ActionController::SessionOverflowError.
129
131
  # before_save do # raise_on_session_data_overflow!
130
- # return false if !loaded?
131
- # limit = self.class.data_column_size_limit
132
- # if loaded? and limit and read_attribute(@@data_column_name).size > limit
133
- # raise MerbController::SessionOverflowError
134
- # end
132
+ # return false if !loaded?
133
+ # limit = self.class.data_column_size_limit
134
+ # if loaded? and limit and read_attribute(@@data_column_name).size > limit
135
+ # raise MerbController::SessionOverflowError
136
+ # end
135
137
  # end
138
+
136
139
  end
137
140
 
138
141
  unless Sequel::Model.db.table_exists?(table_name.to_sym)
@@ -144,5 +147,5 @@ module Merb
144
147
 
145
148
  puts "Created sessions table."
146
149
  end
147
-
150
+
148
151
  end
data/lib/merb_sequel.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  # make sure we're running inside Merb
2
2
  if defined?(Merb::Plugins)
3
- if Merb::Server.app_loaded?
3
+ if Merb::BootLoader.app_loaded?
4
4
  puts "Warning: The merb_sequel gem must be loaded before the application"
5
5
  else
6
6
  require "merb/orms/sequel/connection"
data/lib/merbtasks.rb CHANGED
@@ -16,7 +16,7 @@ namespace :sequel do
16
16
  desc "Creates session migration"
17
17
  task :create => :merb_env do
18
18
  # TODO: this should not use '001' always...
19
- dest = File.join(MERB_ROOT, "schema", "migrations","001_add_sessions_table.rb")
19
+ dest = File.join(Merb.root, "schema", "migrations","001_add_sessions_table.rb")
20
20
  source = File.join(File.dirname(__FILE__), "merb", "session","001_add_sessions_table.rb")
21
21
 
22
22
  FileUtils.cp source, dest unless File.exists?(dest)
metadata CHANGED
@@ -1,116 +1,109 @@
1
1
  --- !ruby/object:Gem::Specification
2
+ rubygems_version: 0.9.0
3
+ specification_version: 1
2
4
  name: merb_sequel
3
5
  version: !ruby/object:Gem::Version
4
- version: 0.4.3
5
- platform: ruby
6
- authors:
7
- - Wayne E. Seguin
6
+ version: "0.5"
7
+ date: 2008-01-09 00:00:00 -08:00
8
+ summary: Merb plugin that provides support for Sequel and Sequel::Model
9
+ require_paths:
10
+ - lib
11
+ email: wayneeseguin@gmail.com, lancecarlson@gmail.com
12
+ homepage: http://merb-plugins.rubyforge.org/merb_sequel/
13
+ rubyforge_project:
14
+ description: Merb plugin that provides support for Sequel and Sequel::Model
8
15
  autorequire: merb_sequel
9
- bindir: bin
10
- cert_chain: []
11
-
12
- date: 2008-01-07 00:00:00 -05:00
13
16
  default_executable:
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
16
- name: merb
17
- version_requirement:
18
- version_requirements: !ruby/object:Gem::Requirement
19
- requirements:
20
- - - ">="
21
- - !ruby/object:Gem::Version
22
- version: 0.4.2
23
- version:
24
- - !ruby/object:Gem::Dependency
25
- name: sequel
26
- version_requirement:
27
- version_requirements: !ruby/object:Gem::Requirement
28
- requirements:
29
- - - ">="
30
- - !ruby/object:Gem::Version
31
- version: 1.0.0
32
- version:
33
- - !ruby/object:Gem::Dependency
34
- name: sequel_model
35
- version_requirement:
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: "0.2"
41
- version:
42
- description: Merb plugin that provides support for Sequel and Sequel::Model
43
- email: wayneeseguin@gmail.com
44
- executables: []
45
-
46
- extensions: []
47
-
48
- extra_rdoc_files:
49
- - README
50
- - LICENSE
51
- - TODO
17
+ bindir: bin
18
+ has_rdoc: true
19
+ required_ruby_version: !ruby/object:Gem::Version::Requirement
20
+ requirements:
21
+ - - ">"
22
+ - !ruby/object:Gem::Version
23
+ version: 0.0.0
24
+ version:
25
+ platform: ruby
26
+ signing_key:
27
+ cert_chain:
28
+ post_install_message:
29
+ authors:
30
+ - Wayne E. Seguin, Lance Carlson
52
31
  files:
53
32
  - LICENSE
54
33
  - README
55
34
  - Rakefile
56
35
  - TODO
57
36
  - lib/merb
37
+ - lib/merb_sequel.rb
38
+ - lib/merbtasks.rb
58
39
  - lib/merb/orms
40
+ - lib/merb/session
59
41
  - lib/merb/orms/sequel
60
42
  - lib/merb/orms/sequel/connection.rb
61
43
  - lib/merb/orms/sequel/database.sample.yml
62
- - lib/merb/session
63
44
  - lib/merb/session/001_add_sessions_table.rb
64
45
  - lib/merb/session/sequel_session.rb
65
- - lib/merb_sequel.rb
66
- - lib/merbtasks.rb
67
46
  - specs/merb_sequel_spec.rb
68
47
  - specs/spec_helper.rb
69
48
  - sequel_generators/migration
49
+ - sequel_generators/model
50
+ - sequel_generators/resource_controller
70
51
  - sequel_generators/migration/migration_generator.rb
71
52
  - sequel_generators/migration/templates
72
- - sequel_generators/migration/templates/new_migration.erb
73
53
  - sequel_generators/migration/USAGE
74
- - sequel_generators/model
54
+ - sequel_generators/migration/templates/new_migration.erb
75
55
  - sequel_generators/model/model_generator.rb
76
56
  - sequel_generators/model/templates
77
- - sequel_generators/model/templates/sequel_model_template.erb
78
57
  - sequel_generators/model/USAGE
79
- - sequel_generators/resource_controller
58
+ - sequel_generators/model/templates/sequel_model_template.erb
80
59
  - sequel_generators/resource_controller/resource_controller_generator.rb
81
60
  - sequel_generators/resource_controller/templates
61
+ - sequel_generators/resource_controller/USAGE
82
62
  - sequel_generators/resource_controller/templates/controller.rb
83
63
  - sequel_generators/resource_controller/templates/edit.html.erb
84
64
  - sequel_generators/resource_controller/templates/helper.rb
85
65
  - sequel_generators/resource_controller/templates/index.html.erb
86
66
  - sequel_generators/resource_controller/templates/new.html.erb
87
67
  - sequel_generators/resource_controller/templates/show.html.erb
88
- - sequel_generators/resource_controller/USAGE
89
- has_rdoc: true
90
- homepage: http://merb-plugins.rubyforge.org/merb_sequel/
91
- post_install_message:
68
+ test_files: []
69
+
92
70
  rdoc_options: []
93
71
 
94
- require_paths:
95
- - lib
96
- required_ruby_version: !ruby/object:Gem::Requirement
97
- requirements:
98
- - - ">="
99
- - !ruby/object:Gem::Version
100
- version: "0"
101
- version:
102
- required_rubygems_version: !ruby/object:Gem::Requirement
103
- requirements:
104
- - - ">="
105
- - !ruby/object:Gem::Version
106
- version: "0"
107
- version:
108
- requirements: []
72
+ extra_rdoc_files:
73
+ - README
74
+ - LICENSE
75
+ - TODO
76
+ executables: []
109
77
 
110
- rubyforge_project:
111
- rubygems_version: 1.0.1
112
- signing_key:
113
- specification_version: 2
114
- summary: Merb plugin that provides support for Sequel and Sequel::Model
115
- test_files: []
78
+ extensions: []
79
+
80
+ requirements: []
116
81
 
82
+ dependencies:
83
+ - !ruby/object:Gem::Dependency
84
+ name: merb
85
+ version_requirement:
86
+ version_requirements: !ruby/object:Gem::Version::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: "0.5"
91
+ version:
92
+ - !ruby/object:Gem::Dependency
93
+ name: sequel
94
+ version_requirement:
95
+ version_requirements: !ruby/object:Gem::Version::Requirement
96
+ requirements:
97
+ - - ">="
98
+ - !ruby/object:Gem::Version
99
+ version: 1.0.0
100
+ version:
101
+ - !ruby/object:Gem::Dependency
102
+ name: sequel_model
103
+ version_requirement:
104
+ version_requirements: !ruby/object:Gem::Version::Requirement
105
+ requirements:
106
+ - - ">="
107
+ - !ruby/object:Gem::Version
108
+ version: "0.2"
109
+ version: