From 93fded964161e190eda2ff220c2b2229e10d92da Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Fri, 30 Sep 2011 01:02:09 +0100 Subject: [PATCH] Drop the sql_session_store plugin The sql_session_store plugin doesn't work with rails 3 and doesn't seem to be supported anymore, so drop it in favour of the builtin database backed session storage. --- config/initializers/session_store.rb | 12 +- config/initializers/sql_session_store.rb | 8 - vendor/plugins/sql_session_store/LICENSE | 20 --- vendor/plugins/sql_session_store/README | 102 ------------ vendor/plugins/sql_session_store/Rakefile | 22 --- .../generators/sql_session_store/USAGE | 17 -- .../sql_session_store_generator.rb | 25 --- .../sql_session_store/templates/migration.rb | 38 ----- vendor/plugins/sql_session_store/init.rb | 0 vendor/plugins/sql_session_store/install.rb | 2 - .../sql_session_store/lib/abstract_session.rb | 88 ---------- .../sql_session_store/lib/mysql_session.rb | 103 ------------ .../sql_session_store/lib/oracle_session.rb | 152 ----------------- .../lib/postgresql_session.rb | 105 ------------ .../sql_session_store/lib/sql_session.rb | 27 --- .../lib/sql_session_store.rb | 157 ------------------ .../sql_session_store/lib/sqlite_session.rb | 105 ------------ 17 files changed, 6 insertions(+), 977 deletions(-) delete mode 100644 config/initializers/sql_session_store.rb delete mode 100644 vendor/plugins/sql_session_store/LICENSE delete mode 100755 vendor/plugins/sql_session_store/README delete mode 100755 vendor/plugins/sql_session_store/Rakefile delete mode 100755 vendor/plugins/sql_session_store/generators/sql_session_store/USAGE delete mode 100755 vendor/plugins/sql_session_store/generators/sql_session_store/sql_session_store_generator.rb delete mode 100755 vendor/plugins/sql_session_store/generators/sql_session_store/templates/migration.rb delete mode 100755 vendor/plugins/sql_session_store/init.rb delete mode 100755 vendor/plugins/sql_session_store/install.rb delete mode 100644 vendor/plugins/sql_session_store/lib/abstract_session.rb delete mode 100755 vendor/plugins/sql_session_store/lib/mysql_session.rb delete mode 100755 vendor/plugins/sql_session_store/lib/oracle_session.rb delete mode 100755 vendor/plugins/sql_session_store/lib/postgresql_session.rb delete mode 100644 vendor/plugins/sql_session_store/lib/sql_session.rb delete mode 100755 vendor/plugins/sql_session_store/lib/sql_session_store.rb delete mode 100755 vendor/plugins/sql_session_store/lib/sqlite_session.rb diff --git a/config/initializers/session_store.rb b/config/initializers/session_store.rb index ffba99257..a9afad2d6 100644 --- a/config/initializers/session_store.rb +++ b/config/initializers/session_store.rb @@ -1,8 +1,8 @@ # Be sure to restart your server when you modify this file. -OpenStreetMap::Application.config.session_store :cookie_store, :key => '_osm_session' - -# Use the database for sessions instead of the cookie-based default, -# which shouldn't be used to store highly confidential information -# (create the session table with "rails generate session_migration") -# OpenStreetMap::Application.config.session_store :active_record_store +if STATUS == :database_offline or STATUS == :database_readonly + OpenStreetMap::Application.config.session_store :cookie_store, :key => '_osm_session' +else + ActiveRecord::SessionStore.session_class = ActiveRecord::SessionStore::SqlBypass + OpenStreetMap::Application.config.session_store :active_record_store, :key => '_osm_session' +end diff --git a/config/initializers/sql_session_store.rb b/config/initializers/sql_session_store.rb deleted file mode 100644 index 8dc40384e..000000000 --- a/config/initializers/sql_session_store.rb +++ /dev/null @@ -1,8 +0,0 @@ -# Work out which session store adapter to use -adapter = Rails.configuration.database_configuration[Rails.env]["adapter"] -session_class = adapter + "_session" - -# Configure SqlSessionStore -unless STATUS == :database_offline - SqlSessionStore.session_class = session_class.camelize.constantize -end diff --git a/vendor/plugins/sql_session_store/LICENSE b/vendor/plugins/sql_session_store/LICENSE deleted file mode 100644 index adab131e2..000000000 --- a/vendor/plugins/sql_session_store/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -Copyright (c) 2006 Dr.-Ing. Stefan Kaes - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/vendor/plugins/sql_session_store/README b/vendor/plugins/sql_session_store/README deleted file mode 100755 index 593e957cd..000000000 --- a/vendor/plugins/sql_session_store/README +++ /dev/null @@ -1,102 +0,0 @@ -== SqlSessionStore - -This version of SqlSessionStore properly supports both CGI-based sessions (Rails < 2.3) -and Rack-based sessions released in Rails 2.3. For the latest version of +SqlSessionStore+, -see: - - http://github.com/nateware/sql_session_store/tree/master - -To install, use: - - script/plugin install git://github.com/nateware/sql_session_store.git - -This version also includes the "native columns" feature, which enables +session[:xyz]+ -to map directly to column +xyz+ in the sessions table transparently. For info, -scroll down to "Step 4". - -Note: Only Mysql, PostgreSQL, and Oracle are currently supported (others work, -but you won't see much performance improvement). - -== Step 1 - -If you have generated your sessions table using rake db:sessions:create, go to Step 2 - -If you're using an old version of sql_session_store, run - - script/generate sql_session_store [DB] - -where DB is mysql, postgresql or oracle - -Then run - - rake db:migrate - -to create the sessions table. - -== Step 2 - -Add the code below in +config/environment.rb+, inside the initializers section - - # Use SqlSessionStore instead of the standard ActiveRecord store - config.action_controller.session_store = :sql_session_store - -Then, depending on your database type, add - - SqlSessionStore.session_class = MysqlSession -or - - SqlSessionStore.session_class = PostgresqlSession - -or - - SqlSessionStore.session_class = OracleSession - -after the initializer section in environment.rb - -== Step 3 (optional) - -If you want to use a database separate from your default one to store -your sessions, specify a configuration in your database.yml file (say -sessions), and establish the connection on SqlSession in -environment.rb: - - SqlSession.establish_connection :sessions - -== Step 4 (optional) - -If you want to store certain pieces of data as actual columns in the -+sessions+ table transparently, simply update the sessions migration -to include the columns. For example, if you wanted to store +user_id+ -and +language+ as columns, your migration might look something like: - - create_table :sessions do |t| - t.string :session_id, :null => false, :references => nil, :unique => true - t.integer :user_id - t.string :language - t.text :data - t.timestamps - end - -Then, use the "native columns" feature of the specific database driver: - - OracleSession.native_columns = [:user_id, :language] - -This will map these columns transparently for you. Simply access them like -normal columns: - - session[:user_id] = @user.id - session[:language] = @language - -And the appropriate columns in the sessions table will be updated for you. - -== IMPORTANT NOTES - -1. The class name SQLSessionStore has changed to SqlSessionStore to - let Rails work its autoload magic. - -2. You will need the binary drivers for Mysql or Postgresql. - These have been verified to work: - - * ruby-postgres (0.7.1.2005.12.21) with postgreql 8.1 - * ruby-mysql 2.7.1 with Mysql 4.1 - * ruby-mysql 2.7.2 with Mysql 5.0 diff --git a/vendor/plugins/sql_session_store/Rakefile b/vendor/plugins/sql_session_store/Rakefile deleted file mode 100755 index 0145def2f..000000000 --- a/vendor/plugins/sql_session_store/Rakefile +++ /dev/null @@ -1,22 +0,0 @@ -require 'rake' -require 'rake/testtask' -require 'rake/rdoctask' - -desc 'Default: run unit tests.' -task :default => :test - -desc 'Test the sql_session_store plugin.' -Rake::TestTask.new(:test) do |t| - t.libs << 'lib' - t.pattern = 'test/**/*_test.rb' - t.verbose = true -end - -desc 'Generate documentation for the sql_session_store plugin.' -Rake::RDocTask.new(:rdoc) do |rdoc| - rdoc.rdoc_dir = 'rdoc' - rdoc.title = 'SqlSessionStore' - rdoc.options << '--line-numbers' << '--inline-source' - rdoc.rdoc_files.include('README') - rdoc.rdoc_files.include('lib/**/*.rb') -end diff --git a/vendor/plugins/sql_session_store/generators/sql_session_store/USAGE b/vendor/plugins/sql_session_store/generators/sql_session_store/USAGE deleted file mode 100755 index 1e3f58a67..000000000 --- a/vendor/plugins/sql_session_store/generators/sql_session_store/USAGE +++ /dev/null @@ -1,17 +0,0 @@ -Description: - The sql_session_store generator creates a migration for use with - the sql session store. It takes one argument: the database - type. Only mysql and postgreql are currently supported. - -Example: - ./script/generate sql_session_store mysql - - This will create the following migration: - - db/migrate/XXX_add_sql_session.rb - - Use - - ./script/generate sql_session_store postgreql - - to get a migration for postgres. diff --git a/vendor/plugins/sql_session_store/generators/sql_session_store/sql_session_store_generator.rb b/vendor/plugins/sql_session_store/generators/sql_session_store/sql_session_store_generator.rb deleted file mode 100755 index 6af6bd0bc..000000000 --- a/vendor/plugins/sql_session_store/generators/sql_session_store/sql_session_store_generator.rb +++ /dev/null @@ -1,25 +0,0 @@ -class SqlSessionStoreGenerator < Rails::Generator::NamedBase - def initialize(runtime_args, runtime_options = {}) - runtime_args.insert(0, 'add_sql_session') - if runtime_args.include?('postgresql') - @_database = 'postgresql' - elsif runtime_args.include?('mysql') - @_database = 'mysql' - elsif runtime_args.include?('oracle') - @_database = 'oracle' - else - puts "error: database type not given.\nvalid arguments are: mysql or postgresql" - exit - end - super - end - - def manifest - record do |m| - m.migration_template("migration.rb", 'db/migrate', - :assigns => { :migration_name => "SqlSessionStoreSetup", :database => @_database }, - :migration_file_name => "sql_session_store_setup" - ) - end - end -end diff --git a/vendor/plugins/sql_session_store/generators/sql_session_store/templates/migration.rb b/vendor/plugins/sql_session_store/generators/sql_session_store/templates/migration.rb deleted file mode 100755 index 512650068..000000000 --- a/vendor/plugins/sql_session_store/generators/sql_session_store/templates/migration.rb +++ /dev/null @@ -1,38 +0,0 @@ -class <%= migration_name %> < ActiveRecord::Migration - - class Session < ActiveRecord::Base; end - - def self.up - c = ActiveRecord::Base.connection - if c.tables.include?('sessions') - if (columns = Session.column_names).include?('sessid') - rename_column :sessions, :sessid, :session_id - else - add_column :sessions, :session_id, :string unless columns.include?('session_id') - add_column :sessions, :data, :text unless columns.include?('data') - if columns.include?('created_on') - rename_column :sessions, :created_on, :created_at - else - add_column :sessions, :created_at, :timestamp unless columns.include?('created_at') - end - if columns.include?('updated_on') - rename_column :sessions, :updated_on, :updated_at - else - add_column :sessions, :updated_at, :timestamp unless columns.include?('updated_at') - end - end - else - create_table :sessions, :options => '<%= database == "mysql" ? "ENGINE=MyISAM" : "" %>' do |t| - t.column :session_id, :string - t.column :data, :text - t.column :created_at, :timestamp - t.column :updated_at, :timestamp - end - add_index :sessions, :session_id, :name => 'session_id_idx' - end - end - - def self.down - raise IrreversibleMigration - end -end diff --git a/vendor/plugins/sql_session_store/init.rb b/vendor/plugins/sql_session_store/init.rb deleted file mode 100755 index e69de29bb..000000000 diff --git a/vendor/plugins/sql_session_store/install.rb b/vendor/plugins/sql_session_store/install.rb deleted file mode 100755 index f40549dfe..000000000 --- a/vendor/plugins/sql_session_store/install.rb +++ /dev/null @@ -1,2 +0,0 @@ -# Install hook code here -puts IO.read(File.join(File.dirname(__FILE__), 'README')) diff --git a/vendor/plugins/sql_session_store/lib/abstract_session.rb b/vendor/plugins/sql_session_store/lib/abstract_session.rb deleted file mode 100644 index eda907bbd..000000000 --- a/vendor/plugins/sql_session_store/lib/abstract_session.rb +++ /dev/null @@ -1,88 +0,0 @@ -# -# This is a common base class for database-specific session store implementations -# -require 'cgi/session' -require 'base64' - -class AbstractSession - # if you need Rails components, and you have a pages which create - # new sessions, and embed components insides this pages that need - # session access, then you *must* set +eager_session_creation+ to - # true (as of Rails 1.0). - cattr_accessor :eager_session_creation - @@eager_session_creation = false - - # Some attributes you may want to store natively in the database - # in actual columns. This allows other models and database queries - # to get to the data without having to unmarshal the data blob. - # One common example is the user_id of the session, so it can be - # related to the users table - cattr_accessor :native_columns - @@native_columns = [] - - # Allow the user to change the table name - cattr_accessor :table_name - @@table_name = 'sessions' - - cattr_reader :timestamp_columns - @@timestamp_columns = [:created_at, :updated_at] - - attr_accessor :id, :session_id, :data - - def initialize(session_id, data, id=nil) - @session_id = session_id - @data = data - @id = id - end - - class << self - # delete all sessions meeting a given +condition+. it is the - # caller's responsibility to pass a valid sql condition - def delete_all(condition=nil) - if condition - session_connection.exec("DELETE FROM sessions WHERE #{condition}") - else - session_connection.exec("DELETE FROM sessions") - end - end - - # retrieve the session table connection and get the 'raw' driver connection from it - def session_connection - SqlSession.connection.raw_connection - end - - def unmarshalize(data) - Marshal.load(Base64.decode64(data)) - end - - def marshalize(data) - Base64.encode64(Marshal.dump(data)) - end - end -end - -__END__ - -# This software is released under the MIT license -# -# Copyright (c) 2005, 2006, 2008 Stefan Kaes -# Copyright (c) 2008, 2009 Nate Wiger -# -# Permission is hereby granted, free of charge, to any person obtaining -# a copy of this software and associated documentation files (the -# "Software"), to deal in the Software without restriction, including -# without limitation the rights to use, copy, modify, merge, publish, -# distribute, sublicense, and/or sell copies of the Software, and to -# permit persons to whom the Software is furnished to do so, subject to -# the following conditions: - -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/vendor/plugins/sql_session_store/lib/mysql_session.rb b/vendor/plugins/sql_session_store/lib/mysql_session.rb deleted file mode 100755 index 9469c55de..000000000 --- a/vendor/plugins/sql_session_store/lib/mysql_session.rb +++ /dev/null @@ -1,103 +0,0 @@ -require 'mysql' - -# MysqlSession is a down to the bare metal session store -# implementation to be used with +SQLSessionStore+. It is much faster -# than the default ActiveRecord implementation. -# -# The implementation assumes that the table column names are 'id', -# 'data', 'created_at' and 'updated_at'. If you want use other names, -# you will need to change the SQL statments in the code. - -class MysqlSession < AbstractSession - class << self - # try to find a session with a given +session_id+. returns nil if - # no such session exists. note that we don't retrieve - # +created_at+ and +updated_at+ as they are not accessed anywhyere - # outside this class - def find_session(session_id) - connection = session_connection - connection.query_with_result = true - result = connection.query("SELECT id, data FROM sessions WHERE `session_id`='#{session_id}' LIMIT 1") - my_session = nil - # each is used below, as other methods barf on my 64bit linux machine - # I suspect this to be a bug in mysql-ruby - result.each do |row| - my_session = new(session_id, AbstractSession.unmarshalize(row[1])) - my_session.id = row[0] - end - result.free - my_session - end - - # create a new session with given +session_id+ and +data+ - # and save it immediately to the database - def create_session(session_id, data={}) - new_session = new(session_id, data) - if @@eager_session_creation - connection = session_connection - connection.query("INSERT INTO sessions (`created_at`, `updated_at`, `session_id`, `data`) VALUES (NOW(), NOW(), '#{session_id}', '#{Mysql::quote(AbstractSession.marshalize(data))}')") - new_session.id = connection.insert_id - end - new_session - end - - # delete all sessions meeting a given +condition+. it is the - # caller's responsibility to pass a valid sql condition - def delete_all(condition=nil) - if condition - session_connection.query("DELETE FROM sessions WHERE #{condition}") - else - session_connection.query("DELETE FROM sessions") - end - end - - end # class methods - - # update session with given +data+. - # unlike the default implementation using ActiveRecord, updating of - # column `updated_at` will be done by the datbase itself - def update_session(data) - connection = self.class.session_connection - if @id - # if @id is not nil, this is a session already stored in the database - # update the relevant field using @id as key - connection.query("UPDATE sessions SET `updated_at`=NOW(), `data`='#{Mysql::quote(AbstractSession.marshalize(data))}' WHERE id=#{@id}") - else - # if @id is nil, we need to create a new session in the database - # and set @id to the primary key of the inserted record - connection.query("INSERT INTO sessions (`created_at`, `updated_at`, `session_id`, `data`) VALUES (NOW(), NOW(), '#{@session_id}', '#{Mysql::quote(AbstractSession.marshalize(data))}')") - @id = connection.insert_id - end - end - - # destroy the current session - def destroy - self.class.delete_all("session_id='#{session_id}'") - end - -end - -__END__ - -# This software is released under the MIT license -# -# Copyright (c) 2005,2006 Stefan Kaes - -# Permission is hereby granted, free of charge, to any person obtaining -# a copy of this software and associated documentation files (the -# "Software"), to deal in the Software without restriction, including -# without limitation the rights to use, copy, modify, merge, publish, -# distribute, sublicense, and/or sell copies of the Software, and to -# permit persons to whom the Software is furnished to do so, subject to -# the following conditions: - -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/vendor/plugins/sql_session_store/lib/oracle_session.rb b/vendor/plugins/sql_session_store/lib/oracle_session.rb deleted file mode 100755 index 1247de4a2..000000000 --- a/vendor/plugins/sql_session_store/lib/oracle_session.rb +++ /dev/null @@ -1,152 +0,0 @@ -require 'oci8' - -# OracleSession is a down to the bare metal session store -# implementation to be used with +SQLSessionStore+. It is much faster -# than the default ActiveRecord implementation. -# -# The implementation assumes that the table column names are 'id', -# 'session_id', 'data', 'created_at' and 'updated_at'. If you want use -# other names, you will need to change the SQL statments in the code. -# -# This table layout is compatible with ActiveRecordStore. - -class OracleSession < AbstractSession - class << self - # try to find a session with a given +session_id+. returns nil if - # no such session exists. note that we don't retrieve - # +created_at+ and +updated_at+ as they are not accessed anywhyere - # outside this class. - def find_session(session_id) - new_session = nil - - # Make sure to save the @id if we find an existing session - cursor = session_connection.exec(find_session_sql, session_id) - if row = cursor.fetch_hash - new_session = new(session_id, unmarshalize(row['DATA'].read), row['ID']) - - # Pull out native columns - native_columns.each do |col| - new_session.data[col] = row[col.to_s.upcase] - new_session.data[col] = row[col.to_s.upcase] - end - end - - cursor.close - new_session - end - - # create a new session with given +session_id+ and +data+ - # and save it immediately to the database - def create_session(session_id, data={}) - new_session = new(session_id, data) - if eager_session_creation - new_session.id = next_id - cursor = session_connection.parse(insert_session_sql) - - # Now bind all variables - cursor.bind_param(':id', new_session.id) - cursor.bind_param(':session_id', session_id) - native_columns.each do |col| - cursor.bind_param(":#{col}", data.delete(col) || '') - end - cursor.bind_param(':data', marshalize(data)) - cursor.exec - cursor.close - end - new_session - end - - # Internal methods for generating SQL - # Get the next ID from the sequence - def next_id - cursor = session_connection.exec("SELECT #{table_name}_seq.nextval FROM dual") - id = cursor.fetch.first.to_i - cursor.close - id - end - - # Dynamically generate finder SQL so we can include our special columns - def find_session_sql - @find_session_sql ||= - "SELECT " + ([:id, :data] + native_columns).join(', ') + - " FROM #{table_name} WHERE session_id = :session_id AND rownum = 1" - end - - def insert_session_sql - @insert_session_sql ||= - "INSERT INTO #{table_name} (" + ([:id, :data, :session_id] + native_columns + [:created_at, :updated_at]).join(', ') + ")" + - " VALUES (" + ([:id, :data, :session_id] + native_columns).collect{|col| ":#{col}" }.join(', ') + - " , SYSDATE, SYSDATE)" - end - - def update_session_sql - @update_session_sql ||= - "UPDATE #{table_name} SET "+ - ([:data] + native_columns).collect{|col| "#{col} = :#{col}"}.join(', ') + - " , updated_at = SYSDATE WHERE ID = :id" - end - end # class methods - - # update session with given +data+. - # unlike the default implementation using ActiveRecord, updating of - # column `updated_at` will be done by the database itself - def update_session(data) - connection = self.class.session_connection - cursor = nil - if @id - # if @id is not nil, this is a session already stored in the database - # update the relevant field using @id as key - cursor = connection.parse(self.class.update_session_sql) - else - # if @id is nil, we need to create a new session in the database - # and set @id to the primary key of the inserted record - @id = self.class.next_id - - cursor = connection.parse(self.class.insert_session_sql) - cursor.bind_param(':session_id', @session_id) - end - - # These are always the same, as @id is set above! - cursor.bind_param(':id', @id, Fixnum) - native_columns.each do |col| - cursor.bind_param(":#{col}", data.delete(col) || '') - end - cursor.bind_param(':data', self.class.marshalize(data)) - cursor.exec - cursor.close - end - - # destroy the current session - def destroy - self.class.delete_all(["session_id = ?", session_id]) - end - -end - -__END__ - -# This software is released under the MIT license -# -# Copyright (c) 2006 Stefan Kaes -# Copyright (c) 2006 Tiago Macedo -# Copyright (c) 2007 Nate Wiger -# -# Permission is hereby granted, free of charge, to any person obtaining -# a copy of this software and associated documentation files (the -# "Software"), to deal in the Software without restriction, including -# without limitation the rights to use, copy, modify, merge, publish, -# distribute, sublicense, and/or sell copies of the Software, and to -# permit persons to whom the Software is furnished to do so, subject to -# the following conditions: - -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - diff --git a/vendor/plugins/sql_session_store/lib/postgresql_session.rb b/vendor/plugins/sql_session_store/lib/postgresql_session.rb deleted file mode 100755 index bf7bf633b..000000000 --- a/vendor/plugins/sql_session_store/lib/postgresql_session.rb +++ /dev/null @@ -1,105 +0,0 @@ -require 'pg' - -# PostgresqlSession is a down to the bare metal session store -# implementation to be used with +SQLSessionStore+. It is much faster -# than the default ActiveRecord implementation. -# -# The implementation assumes that the table column names are 'id', -# 'session_id', 'data', 'created_at' and 'updated_at'. If you want use -# other names, you will need to change the SQL statments in the code. -# -# This table layout is compatible with ActiveRecordStore. - -class PostgresqlSession < AbstractSession - class << self - # try to find a session with a given +session_id+. returns nil if - # no such session exists. note that we don't retrieve - # +created_at+ and +updated_at+ as they are not accessed anywhyere - # outside this class. - def find_session(session_id) - connection = session_connection - result = connection.query("SELECT id, data FROM sessions WHERE session_id = $1 LIMIT 1", [session_id]) - if result.ntuples > 0 - my_session = new(session_id, AbstractSession.unmarshalize(result.getvalue(0, 1))) - my_session.id = result.getvalue(0, 0) - else - my_session = nil - end - result.clear - my_session - end - - # create a new session with given +session_id+ and +data+ - # and save it immediately to the database - def create_session(session_id, data={}) - new_session = new(session_id, data) - if @@eager_session_creation - connection = session_connection - connection.query("INSERT INTO sessions (created_at, updated_at, session_id, data) VALUES (NOW(), NOW(), $1, $2)", [session_id, AbstractSession.marshalize(data)]) - new_session.id = connection.lastval - end - new_session - end - - # delete all sessions meeting a given +condition+. it is the - # caller's responsibility to pass a valid sql condition - def delete_all(condition=nil) - if condition - session_connection.query("DELETE FROM sessions WHERE #{condition}") - else - session_connection.query("DELETE FROM sessions") - end - end - - end # class methods - - # update session with given +data+. - # unlike the default implementation using ActiveRecord, updating of - # column `updated_at` will be done by the database itself - def update_session(data) - connection = self.class.session_connection - if @id - # if @id is not nil, this is a session already stored in the database - # update the relevant field using @id as key - connection.query("UPDATE sessions SET updated_at = NOW(), data = $1 WHERE id = $2", [AbstractSession.marshalize(data), @id]) - else - # if @id is nil, we need to create a new session in the database - # and set @id to the primary key of the inserted record - result = connection.query("INSERT INTO sessions (created_at, updated_at, session_id, data) VALUES (NOW(), NOW(), $1, $2) RETURNING id", [@session_id, AbstractSession.marshalize(data)]) - @id = result.getvalue(0, 0) - result.clear - end - end - - # destroy the current session - def destroy - self.class.delete_all("session_id='#{session_id}'") - end - -end - -__END__ - -# This software is released under the MIT license -# -# Copyright (c) 2006 Stefan Kaes - -# Permission is hereby granted, free of charge, to any person obtaining -# a copy of this software and associated documentation files (the -# "Software"), to deal in the Software without restriction, including -# without limitation the rights to use, copy, modify, merge, publish, -# distribute, sublicense, and/or sell copies of the Software, and to -# permit persons to whom the Software is furnished to do so, subject to -# the following conditions: - -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - diff --git a/vendor/plugins/sql_session_store/lib/sql_session.rb b/vendor/plugins/sql_session_store/lib/sql_session.rb deleted file mode 100644 index 6db551753..000000000 --- a/vendor/plugins/sql_session_store/lib/sql_session.rb +++ /dev/null @@ -1,27 +0,0 @@ -# An ActiveRecord class which corresponds to the database table -# +sessions+. Functions +find_session+, +create_session+, -# +update_session+ and +destroy+ constitute the interface to class -# +SqlSessionStore+. - -class SqlSession < ActiveRecord::Base - # this class should not be reloaded - def self.reloadable? - false - end - - # retrieve session data for a given +session_id+ from the database, - # return nil if no such session exists - def self.find_session(session_id) - find :first, :conditions => { :session_id => session_id } - end - - # create a new session with given +session_id+ and +data+ - def self.create_session(session_id, data) - new(:session_id => session_id, :data => data) - end - - # update session data and store it in the database - def update_session(data) - update_attribute('data', data) - end -end diff --git a/vendor/plugins/sql_session_store/lib/sql_session_store.rb b/vendor/plugins/sql_session_store/lib/sql_session_store.rb deleted file mode 100755 index 0a5fab7f0..000000000 --- a/vendor/plugins/sql_session_store/lib/sql_session_store.rb +++ /dev/null @@ -1,157 +0,0 @@ -require 'base64' - -# +SqlSessionStore+ is a stripped down, optimized for speed version of -# class +ActiveRecordStore+. - -# Hack for older versions of Rails -unless defined?(ActionController::Session::AbstractStore) - module ActionController - module Session - class AbstractStore - end - end - end -end - -class SqlSessionStore < ActionController::Session::AbstractStore - - # The class to be used for creating, retrieving and updating sessions. - # Defaults to SqlSessionStore::SqlSession, which is derived from +ActiveRecord::Base+. - # - # In order to achieve acceptable performance you should implement - # your own session class, similar to the one provided for Myqsl. - # - # Only functions +find_session+, +create_session+, - # +update_session+ and +destroy+ are required. The best implementations - # are +postgresql_session.rb+ and +oracle_session.rb+. - cattr_accessor :session_class - self.session_class = SqlSession - - # Rack-ism for Rails 2.3.0 - SESSION_RECORD_KEY = 'rack.session.record'.freeze - - # Backwards-compat indicators (booleans for speed) - cattr_accessor :use_rack_session, :use_cgi_session - self.use_rack_session = false - self.use_cgi_session = false - - # For Rack compatibility (Rails 2.3.0+) - def get_session(env, sid) - sid ||= generate_sid - #puts "get_session(#{sid})" - session = find_or_create_session(sid) - env[SESSION_RECORD_KEY] = session - [sid, session.data] - end - - # For Rack compatibility (Rails 2.3.0+) - def set_session(env, sid, session_data) - #puts "set_session(#{sid})" - session = env[SESSION_RECORD_KEY] - session.update_session(session_data) - return true # indicate ok to Rack - end - - # Create a new SqlSessionStore instance. This method hooks into - # the find/create methods of a given driver class. - # - # +session_id+ is the session ID for which this instance is being created. - def find_or_create_session(session_id) - if @session = session_class.find_session(session_id) - @data = @session.data - else - @session = session_class.create_session(session_id) - @data = {} - end - @session - end - - # Below here is for pre-Rails 2.3.0 and not used in Rack-based servers - # The CGI::Session methods are a bit odd in that half are class and half - # are instance-based methods - # Note that +option+ is currently ignored as no options are recognized. - def initialize(session, options={}) - # This is just some optimization since this is called over and over and over - if self.use_rack_session - super # MUST call super for Rack sessions - return true - elsif self.use_cgi_session - find_or_create_session(session.session_id) - else - version ||= Rails.version.split('.') - if version[0].to_i == 2 && version[1].to_i < 3 - find_or_create_session(session.session_id) - self.use_cgi_session = true - else - super # MUST call super for Rack sessions - self.use_rack_session = true - end - end - end - - # Update the database and disassociate the session object - def close - if @session - @session.update_session(@data) - @session = nil - end - end - - # Delete the current session, disassociate and destroy session object - def delete - if @session - @session.destroy - @session = nil - end - end - - # Restore session data from the session object - def restore - if @session - @data = @session.data - end - end - - # Save session data in the session object - def update - if @session - @session.update_session(@data) - end - end - - def id - @session.id - end -end - -class CGI::Session - def id - @dbman.id - end -end -__END__ - -# This software is released under the MIT license -# -# Copyright (c) 2008, 2009 Nate Wiger -# Copyright (c) 2005, 2006 Stefan Kaes - -# Permission is hereby granted, free of charge, to any person obtaining -# a copy of this software and associated documentation files (the -# "Software"), to deal in the Software without restriction, including -# without limitation the rights to use, copy, modify, merge, publish, -# distribute, sublicense, and/or sell copies of the Software, and to -# permit persons to whom the Software is furnished to do so, subject to -# the following conditions: - -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - diff --git a/vendor/plugins/sql_session_store/lib/sqlite_session.rb b/vendor/plugins/sql_session_store/lib/sqlite_session.rb deleted file mode 100755 index e675c488d..000000000 --- a/vendor/plugins/sql_session_store/lib/sqlite_session.rb +++ /dev/null @@ -1,105 +0,0 @@ -require 'sqlite3' - -# SqliteSession is a down to the bare metal session store -# implementation to be used with +SQLSessionStore+. It is much faster -# than the default ActiveRecord implementation. -# -# The implementation assumes that the table column names are 'id', -# 'data', 'created_at' and 'updated_at'. If you want use other names, -# you will need to change the SQL statments in the code. - -class SqliteSession < AbstractSession - - class << self - # try to find a session with a given +session_id+. returns nil if - # no such session exists. note that we don't retrieve - # +created_at+ and +updated_at+ as they are not accessed anywhyere - # outside this class - def find_session(session_id) - connection = session_connection - result = connection.execute("SELECT id, data FROM sessions WHERE `session_id`='#{session_id}' LIMIT 1") - my_session = nil - # each is used below, as other methods barf on my 64bit linux machine - # I suspect this to be a bug in sqlite-ruby - result.each do |row| - my_session = new(session_id, row[1]) - my_session.id = row[0] - end -# result.free - my_session - end - - # create a new session with given +session_id+ and +data+ - # and save it immediately to the database - def create_session(session_id, data) - new_session = new(session_id, data) - if @@eager_session_creation - connection = session_connection - connection.execute("INSERT INTO sessions ('id', `created_at`, `updated_at`, `session_id`, `data`) VALUES (NULL, datetime('now'), datetime('now'), '#{session_id}', '#{SQLite3::Database.quote(data)}')") - new_session.id = connection.last_insert_row_id() - end - new_session - end - - # delete all sessions meeting a given +condition+. it is the - # caller's responsibility to pass a valid sql condition - def delete_all(condition=nil) - if condition - session_connection.execute("DELETE FROM sessions WHERE #{condition}") - else - session_connection.execute("DELETE FROM sessions") - end - end - - end # class methods - - # update session with given +data+. - # unlike the default implementation using ActiveRecord, updating of - # column `updated_at` will be done by the database itself - def update_session(data) - connection = SqlSession.connection.instance_variable_get(:@connection) #self.class.session_connection - if @id - # if @id is not nil, this is a session already stored in the database - # update the relevant field using @id as key - connection.execute("UPDATE sessions SET `updated_at`=datetime('now'), `data`='#{SQLite3::Database.quote(data)}' WHERE id=#{@id}") - else - # if @id is nil, we need to create a new session in the database - # and set @id to the primary key of the inserted record - connection.execute("INSERT INTO sessions ('id', `created_at`, `updated_at`, `session_id`, `data`) VALUES (NULL, datetime('now'), datetime('now'), '#{@session_id}', '#{SQLite3::Database.quote(data)}')") - @id = connection.last_insert_row_id() - end - end - - # destroy the current session - def destroy - connection = SqlSession.connection.instance_variable_get(:@connection) - connection.execute("delete from sessions where session_id='#{session_id}'") - end - -end - -__END__ - -# This software is released under the MIT license -# -# Copyright (c) 2005, 2006 Stefan Kaes -# Copyright (c) 2006 Ted X Toth - -# Permission is hereby granted, free of charge, to any person obtaining -# a copy of this software and associated documentation files (the -# "Software"), to deal in the Software without restriction, including -# without limitation the rights to use, copy, modify, merge, publish, -# distribute, sublicense, and/or sell copies of the Software, and to -# permit persons to whom the Software is furnished to do so, subject to -# the following conditions: - -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -- 2.43.2