sequel-rails 0.7.0 → 0.8.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.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.rubocop.yml +13 -0
  4. data/.travis.yml +15 -43
  5. data/Gemfile +10 -10
  6. data/History.md +8 -0
  7. data/README.md +36 -0
  8. data/Rakefile +70 -2
  9. data/ci/rails-3.2.gemfile +15 -12
  10. data/ci/rails-4.0.gemfile +12 -12
  11. data/config.ru +1 -1
  12. data/lib/generators/sequel/migration/migration_generator.rb +10 -13
  13. data/lib/generators/sequel/model/model_generator.rb +11 -9
  14. data/lib/generators/sequel/observer/observer_generator.rb +6 -7
  15. data/lib/generators/sequel/session_migration/session_migration_generator.rb +30 -0
  16. data/lib/generators/sequel/session_migration/templates/migration.rb.erb +10 -0
  17. data/lib/generators/sequel.rb +9 -13
  18. data/lib/sequel-rails.rb +1 -1
  19. data/lib/sequel_rails/configuration.rb +29 -35
  20. data/lib/sequel_rails/migrations.rb +4 -4
  21. data/lib/sequel_rails/railtie.rb +16 -20
  22. data/lib/sequel_rails/railties/controller_runtime.rb +2 -8
  23. data/lib/sequel_rails/railties/database.rake +42 -46
  24. data/lib/sequel_rails/railties/i18n_support.rb +0 -2
  25. data/lib/sequel_rails/railties/legacy_model_config.rb +1 -1
  26. data/lib/sequel_rails/railties/log_subscriber.rb +5 -9
  27. data/lib/sequel_rails/sequel/database/active_support_notification.rb +4 -6
  28. data/lib/sequel_rails/sequel/plugins/rails_extensions.rb +2 -3
  29. data/lib/sequel_rails/session_store.rb +6 -42
  30. data/lib/sequel_rails/shellwords.rb +3 -3
  31. data/lib/sequel_rails/storage/abstract.rb +14 -16
  32. data/lib/sequel_rails/storage/jdbc.rb +8 -10
  33. data/lib/sequel_rails/storage/mysql.rb +13 -15
  34. data/lib/sequel_rails/storage/postgres.rb +42 -45
  35. data/lib/sequel_rails/storage/sqlite.rb +0 -1
  36. data/lib/sequel_rails/storage.rb +10 -10
  37. data/lib/sequel_rails/version.rb +1 -1
  38. data/lib/sequel_rails.rb +3 -3
  39. data/rubocop-todo.yml +24 -0
  40. data/sequel-rails.gemspec +21 -19
  41. data/spec/internal/Rakefile +2 -2
  42. data/spec/internal/config/initializers/session.rb +1 -1
  43. data/spec/internal/db/schema.rb.init +6 -0
  44. data/spec/lib/generators/sequel/migration_spec.rb +77 -77
  45. data/spec/lib/generators/sequel/session_migration_spec.rb +41 -0
  46. data/spec/lib/sequel_rails/configuration_spec.rb +161 -161
  47. data/spec/lib/sequel_rails/jdbc_spec.rb +4 -4
  48. data/spec/lib/sequel_rails/migrations_spec.rb +29 -29
  49. data/spec/lib/sequel_rails/railtie_spec.rb +31 -29
  50. data/spec/lib/sequel_rails/railties/database_rake_spec.rb +16 -15
  51. data/spec/lib/sequel_rails/railties/log_subscriber_spec.rb +6 -6
  52. data/spec/lib/sequel_rails/storage/mysql_spec.rb +31 -31
  53. data/spec/lib/sequel_rails/storage/postgres_spec.rb +67 -67
  54. data/spec/lib/sequel_rails/storage/sqlite_spec.rb +40 -40
  55. data/spec/lib/sequel_rails/storage_spec.rb +77 -89
  56. data/spec/spec_helper.rb +16 -10
  57. metadata +61 -28
  58. data/tasks/spec.rake +0 -81
@@ -1,7 +1,6 @@
1
1
  require 'active_support/core_ext/class/attribute_accessors'
2
2
 
3
3
  module SequelRails
4
-
5
4
  mattr_accessor :configuration
6
5
 
7
6
  def self.setup(environment)
@@ -9,7 +8,6 @@ module SequelRails
9
8
  end
10
9
 
11
10
  class Configuration < ActiveSupport::OrderedOptions
12
-
13
11
  def self.for(root, database_yml_hash)
14
12
  ::SequelRails.configuration ||= begin
15
13
  config = new
@@ -35,7 +33,7 @@ module SequelRails
35
33
  end
36
34
 
37
35
  def environments
38
- @environments ||= raw.inject({}) do |normalized, environment|
36
+ @environments ||= raw.reduce({}) do |normalized, environment|
39
37
  name, config = environment.first, environment.last
40
38
  normalized[name] = normalize_repository_config(config)
41
39
  normalized
@@ -44,47 +42,45 @@ module SequelRails
44
42
 
45
43
  def connect(environment)
46
44
  normalized_config = environment_for environment
47
- db = if normalized_config['url']
45
+ if normalized_config['url']
48
46
  ::Sequel.connect normalized_config['url'], normalized_config
49
47
  else
50
48
  ::Sequel.connect normalized_config
51
- end
52
- after_connect.call if after_connect.respond_to?(:call)
53
- db
49
+ end.tap { after_connect.call if after_connect.respond_to?(:call) }
54
50
  end
55
51
 
56
- private
52
+ private
57
53
 
58
54
  def default_schema_dump
59
- not %w(test production).include? Rails.env
55
+ !%w(test production).include? Rails.env
60
56
  end
61
57
 
62
58
  def normalize_repository_config(hash)
63
59
  config = {}
64
60
  hash.each do |key, value|
65
61
  config[key.to_s] =
66
- if key.to_s == 'port'
67
- value.to_i
68
- elsif key.to_s == 'adapter' && value == 'sqlite3'
69
- 'sqlite'
70
- elsif key.to_s == 'database' && (hash['adapter'] == 'sqlite3' ||
71
- hash['adapter'] == 'sqlite' ||
72
- hash[:adapter] == 'sqlite3' ||
73
- hash[:adapter] == 'sqlite')
74
- value == ':memory:' ? value : File.expand_path((hash['database'] || hash[:database]), root)
75
- elsif key.to_s == 'adapter' && value == 'postgresql'
76
- 'postgres'
77
- else
78
- value
79
- end
62
+ if key.to_s == 'port'
63
+ value.to_i
64
+ elsif key.to_s == 'adapter' && value == 'sqlite3'
65
+ 'sqlite'
66
+ elsif key.to_s == 'database' && (hash['adapter'] == 'sqlite3' ||
67
+ hash['adapter'] == 'sqlite' ||
68
+ hash[:adapter] == 'sqlite3' ||
69
+ hash[:adapter] == 'sqlite')
70
+ value == ':memory:' ? value : File.expand_path((hash['database'] || hash[:database]), root)
71
+ elsif key.to_s == 'adapter' && value == 'postgresql'
72
+ 'postgres'
73
+ else
74
+ value
75
+ end
80
76
  end
81
77
 
82
78
  # always use jdbc when running jruby
83
79
  if SequelRails.jruby?
84
80
  if config['adapter']
85
81
  case config['adapter'].to_sym
86
- when :postgres
87
- config['adapter'] = :postgresql
82
+ when :postgres
83
+ config['adapter'] = :postgresql
88
84
  end
89
85
  config['adapter'] = "jdbc:#{config['adapter']}"
90
86
  end
@@ -95,29 +91,27 @@ module SequelRails
95
91
  config['search_path'] = search_path if search_path
96
92
 
97
93
  # some adapters only support an url
98
- if config['adapter'] && config['adapter'] =~ /^(jdbc|do):/ && !config.has_key?('url')
94
+ if config['adapter'] && config['adapter'] =~ /^(jdbc|do):/ && !config.key?('url')
99
95
  params = {}
100
96
  config.each do |k, v|
101
- next if ['adapter', 'host', 'port', 'database'].include?(k)
97
+ next if %w(adapter host port database).include?(k)
102
98
  if k == 'search_path'
103
- v = v.split(',').map &:strip unless v.is_a? Array
104
- v = URI::escape(v.join(','))
99
+ v = v.split(',').map(&:strip) unless v.is_a? Array
100
+ v = URI.escape(v.join(','))
105
101
  end
106
102
  params[k] = v
107
103
  end
108
104
  params_str = params.map { |k, v| "#{k}=#{v}" }.join('&')
109
105
  port = config['port'] ? ":#{config['port']}" : ''
110
- config['url'] ||= case config['adapter']
111
- when /sqlite/
112
- "%s:%s" % [config['adapter'], config['database']]
106
+ config['url'] ||=
107
+ if config['adapter'].include?('sqlite')
108
+ sprintf('%s:%s', config['adapter'], config['database'])
113
109
  else
114
- "%s://%s%s/%s?%s" % [config['adapter'], config['host'], port, config['database'], params_str]
110
+ sprintf('%s://%s%s/%s?%s', config['adapter'], config['host'], port, config['database'], params_str)
115
111
  end
116
112
  end
117
113
 
118
114
  config
119
115
  end
120
-
121
116
  end
122
-
123
117
  end
@@ -3,7 +3,7 @@ require 'sequel/extensions/migration'
3
3
  module SequelRails
4
4
  class Migrations
5
5
  class << self
6
- def migrate(version=nil)
6
+ def migrate(version = nil)
7
7
  opts = {}
8
8
  opts[:target] = version.to_i if version
9
9
  ::Sequel::Migrator.run(::Sequel::Model.db, migrations_dir, opts)
@@ -16,10 +16,10 @@ module SequelRails
16
16
  !::Sequel::Migrator.is_current?(::Sequel::Model.db, migrations_dir)
17
17
  end
18
18
 
19
- def dump_schema_information(opts={})
19
+ def dump_schema_information(opts = {})
20
20
  sql = opts.fetch :sql
21
21
  db = ::Sequel::Model.db
22
- res = ""
22
+ res = ''
23
23
 
24
24
  if available_migrations?
25
25
  migrator_class = ::Sequel::Migrator.send(:migrator_class, migrations_dir)
@@ -40,7 +40,7 @@ module SequelRails
40
40
  end
41
41
 
42
42
  def migrations_dir
43
- Rails.root.join("db/migrate")
43
+ Rails.root.join('db/migrate')
44
44
  end
45
45
 
46
46
  def available_migrations?
@@ -1,7 +1,7 @@
1
- require "sequel"
1
+ require 'sequel'
2
2
 
3
- require "rails"
4
- require "active_model/railtie"
3
+ require 'rails'
4
+ require 'active_model/railtie'
5
5
 
6
6
  # Comment taken from active_record/railtie.rb
7
7
  #
@@ -9,37 +9,35 @@ require "active_model/railtie"
9
9
  # rails, so let's make sure that it gets required before
10
10
  # here. This is needed for correctly setting up the middleware.
11
11
  # In the future, this might become an optional require.
12
- require "action_controller/railtie"
12
+ require 'action_controller/railtie'
13
13
 
14
- require "sequel_rails/configuration"
15
- require "sequel_rails/migrations"
16
- require "sequel_rails/railties/log_subscriber"
17
- require "sequel_rails/railties/i18n_support"
18
- require "sequel_rails/railties/controller_runtime"
19
- require "sequel_rails/sequel/database/active_support_notification"
14
+ require 'sequel_rails/configuration'
15
+ require 'sequel_rails/migrations'
16
+ require 'sequel_rails/railties/log_subscriber'
17
+ require 'sequel_rails/railties/i18n_support'
18
+ require 'sequel_rails/railties/controller_runtime'
19
+ require 'sequel_rails/sequel/database/active_support_notification'
20
20
 
21
21
  module SequelRails
22
+ autoload :SessionStore, 'sequel_rails/session_store'
22
23
 
23
24
  class Railtie < Rails::Railtie
24
-
25
25
  ::SequelRails::Railties::LogSubscriber.attach_to :sequel
26
26
 
27
27
  config.app_generators.orm :sequel, :migration => true
28
28
  config.rails_fancy_pants_logging = true
29
29
 
30
30
  config.action_dispatch.rescue_responses.merge!(
31
- "Sequel::Plugins::RailsExtensions::ModelNotFound" => :not_found,
32
- "Sequel::NoMatchingRow" => :not_found,
33
- "Sequel::ValidationFailed" => :unprocessable_entity,
34
- "Sequel::NoExistingObject" => :unprocessable_entity
31
+ 'Sequel::Plugins::RailsExtensions::ModelNotFound' => :not_found,
32
+ 'Sequel::NoMatchingRow' => :not_found,
33
+ 'Sequel::ValidationFailed' => :unprocessable_entity,
34
+ 'Sequel::NoExistingObject' => :unprocessable_entity
35
35
  )
36
36
 
37
37
  config.sequel = ::SequelRails::Configuration.new
38
38
 
39
39
  rake_tasks do |app|
40
- if app.config.sequel.load_database_tasks
41
- load "sequel_rails/railties/database.rake"
42
- end
40
+ load 'sequel_rails/railties/database.rake' if app.config.sequel.load_database_tasks
43
41
  end
44
42
 
45
43
  initializer 'sequel.configuration' do |app|
@@ -84,7 +82,5 @@ module SequelRails
84
82
  def setup_logger(app, logger)
85
83
  app.config.sequel.logger = logger
86
84
  end
87
-
88
85
  end
89
-
90
86
  end
@@ -1,10 +1,8 @@
1
- require "active_support/core_ext/module/attr_internal"
1
+ require 'active_support/core_ext/module/attr_internal'
2
2
 
3
3
  module SequelRails
4
4
  module Railties
5
-
6
5
  module ControllerRuntime
7
-
8
6
  extend ActiveSupport::Concern
9
7
 
10
8
  protected
@@ -25,16 +23,12 @@ module SequelRails
25
23
  end
26
24
 
27
25
  module ClassMethods
28
-
29
26
  def log_process_action(payload)
30
27
  messages, db_runtime = super, payload[:db_runtime]
31
- messages << ("Models: %.1fms" % db_runtime.to_f) if db_runtime
28
+ messages << sprintf('Models: %.1fms', db_runtime.to_f) if db_runtime
32
29
  messages
33
30
  end
34
-
35
31
  end
36
-
37
32
  end
38
-
39
33
  end
40
34
  end
@@ -8,59 +8,59 @@ namespace :db do
8
8
  end
9
9
 
10
10
  # desc "Raises an error if there are pending migrations"
11
- task :abort_if_pending_migrations => [:environment, "db:migrate:load"] do
11
+ task :abort_if_pending_migrations => [:environment, 'db:migrate:load'] do
12
12
  if SequelRails::Migrations.pending_migrations?
13
- puts "You have pending migrations:"
14
- abort %{Run `rake db:migrate` to update your database then try again.}
13
+ puts 'You have pending migrations:'
14
+ abort 'Run `rake db:migrate` to update your database then try again.'
15
15
  end
16
16
  end
17
17
 
18
18
  namespace :schema do
19
- desc "Create a db/schema.rb file that can be portably used against any DB supported by Sequel"
19
+ desc 'Create a db/schema.rb file that can be portably used against any DB supported by Sequel'
20
20
  task :dump => :environment do
21
21
  db_for_current_env.extension :schema_dumper
22
22
  filename = ENV['SCHEMA'] || "#{Rails.root}/db/schema.rb"
23
- File.open filename, "w" do |file|
23
+ File.open filename, 'w' do |file|
24
24
  file << db_for_current_env.dump_schema_migration(:same_db => true)
25
25
  file << SequelRails::Migrations.dump_schema_information(:sql => false)
26
26
  end
27
- Rake::Task["db:schema:dump"].reenable
27
+ Rake::Task['db:schema:dump'].reenable
28
28
  end
29
29
 
30
- desc "Load a schema.rb file into the database"
30
+ desc 'Load a schema.rb file into the database'
31
31
  task :load => :environment do
32
32
  file = ENV['SCHEMA'] || "#{Rails.root}/db/schema.rb"
33
33
  if File.exists?(file)
34
34
  require 'sequel/extensions/migration'
35
35
  load(file)
36
- ::Sequel::Migration.descendants.each{|m| m.apply(db_for_current_env, :up)}
36
+ ::Sequel::Migration.descendants.each { |m| m.apply(db_for_current_env, :up) }
37
37
  else
38
- abort %{#{file} doesn't exist yet. Run "rake db:migrate" to create it then try again. If you do not intend to use a database, you should instead alter #{Rails.root}/config/boot.rb to limit the frameworks that will be loaded}
38
+ abort "#{file} doesn't exist yet. Run 'rake db:migrate' to create it, then try again."
39
39
  end
40
40
  end
41
41
  end
42
42
 
43
43
  namespace :structure do
44
- desc "Dump the database structure to db/structure.sql. Specify another file with DB_STRUCTURE=db/my_structure.sql"
44
+ desc 'Dump the database structure to db/structure.sql'
45
45
  task :dump, [:env] => :environment do |t, args|
46
46
  args.with_defaults(:env => Rails.env)
47
47
 
48
- filename = ENV['DB_STRUCTURE'] || File.join(Rails.root, "db", "structure.sql")
48
+ filename = ENV['DB_STRUCTURE'] || File.join(Rails.root, 'db', 'structure.sql')
49
49
  if SequelRails::Storage.dump_environment args.env, filename
50
- ::File.open filename, "a" do |file|
50
+ ::File.open filename, 'a' do |file|
51
51
  file << SequelRails::Migrations.dump_schema_information(:sql => true)
52
52
  end
53
53
  else
54
54
  abort "Could not dump structure for #{args.env}."
55
55
  end
56
56
 
57
- Rake::Task["db:structure:dump"].reenable
57
+ Rake::Task['db:structure:dump'].reenable
58
58
  end
59
59
 
60
60
  task :load, [:env] => :environment do |t, args|
61
61
  args.with_defaults(:env => Rails.env)
62
62
 
63
- filename = ENV['DB_STRUCTURE'] || File.join(Rails.root, "db", "structure.sql")
63
+ filename = ENV['DB_STRUCTURE'] || File.join(Rails.root, 'db', 'structure.sql')
64
64
  unless SequelRails::Storage.load_environment args.env, filename
65
65
  abort "Could not load structure for #{args.env}."
66
66
  end
@@ -70,9 +70,9 @@ namespace :db do
70
70
  task :dump => :environment do
71
71
  case (SequelRails.configuration.schema_format ||= :ruby)
72
72
  when :ruby
73
- Rake::Task["db:schema:dump"].invoke
73
+ Rake::Task['db:schema:dump'].invoke
74
74
  when :sql
75
- Rake::Task["db:structure:dump"].invoke
75
+ Rake::Task['db:structure:dump'].invoke
76
76
  else
77
77
  abort "unknown schema format #{SequelRails.configuration.schema_format}"
78
78
  end
@@ -81,9 +81,9 @@ namespace :db do
81
81
  task :load => :environment do
82
82
  case (SequelRails.configuration.schema_format ||= :ruby)
83
83
  when :ruby
84
- Rake::Task["db:schema:load"].invoke
84
+ Rake::Task['db:schema:load'].invoke
85
85
  when :sql
86
- Rake::Task["db:structure:load"].invoke
86
+ Rake::Task['db:structure:load'].invoke
87
87
  else
88
88
  abort "unknown schema format #{SequelRails.configuration.schema_format}"
89
89
  end
@@ -92,13 +92,11 @@ namespace :db do
92
92
  namespace :create do
93
93
  desc 'Create all the local databases defined in config/database.yml'
94
94
  task :all => :environment do
95
- unless SequelRails::Storage.create_all
96
- abort "Could not create all databases."
97
- end
95
+ abort 'Could not create all databases.' unless SequelRails::Storage.create_all
98
96
  end
99
97
  end
100
98
 
101
- desc "Create the database defined in config/database.yml for the current Rails.env"
99
+ desc 'Create the database defined in config/database.yml for the current Rails.env'
102
100
  task :create, [:env] => :environment do |t, args|
103
101
  args.with_defaults(:env => Rails.env)
104
102
 
@@ -110,13 +108,11 @@ namespace :db do
110
108
  namespace :drop do
111
109
  desc 'Drops all the local databases defined in config/database.yml'
112
110
  task :all => :environment do
113
- unless SequelRails::Storage.drop_all
114
- warn "Couldn't drop all databases"
115
- end
111
+ warn "Couldn't drop all databases" unless SequelRails::Storage.drop_all
116
112
  end
117
113
  end
118
114
 
119
- desc "Drop the database defined in config/database.yml for the current Rails.env"
115
+ desc 'Drop the database defined in config/database.yml for the current Rails.env'
120
116
  task :drop, [:env] => :environment do |t, args|
121
117
  args.with_defaults(:env => Rails.env)
122
118
 
@@ -132,39 +128,39 @@ namespace :db do
132
128
 
133
129
  desc 'Rollbacks the database one migration and re migrate up. If you want to rollback more than one step, define STEP=x. Target specific version with VERSION=x.'
134
130
  task :redo => :load do
135
- if ENV["VERSION"]
136
- Rake::Task["db:migrate:down"].invoke
137
- Rake::Task["db:migrate:up"].invoke
131
+ if ENV['VERSION']
132
+ Rake::Task['db:migrate:down'].invoke
133
+ Rake::Task['db:migrate:up'].invoke
138
134
  else
139
- Rake::Task["db:rollback"].invoke
140
- Rake::Task["db:migrate"].invoke
135
+ Rake::Task['db:rollback'].invoke
136
+ Rake::Task['db:migrate'].invoke
141
137
  end
142
138
  end
143
139
 
144
140
  desc 'Resets your database using your migrations for the current environment'
145
- task :reset => ["db:drop", "db:create", "db:migrate"]
141
+ task :reset => %w(db:drop db:create db:migrate)
146
142
 
147
143
  desc 'Runs the "up" for a given migration VERSION.'
148
144
  task :up => :load do
149
- version = ENV["VERSION"] ? ENV["VERSION"].to_i : nil
150
- raise "VERSION is required" unless version
145
+ version = ENV['VERSION'] ? ENV['VERSION'].to_i : nil
146
+ fail 'VERSION is required' unless version
151
147
  SequelRails::Migrations.migrate_up!(version)
152
- Rake::Task["db:dump"].invoke if SequelRails.configuration.schema_dump
148
+ Rake::Task['db:dump'].invoke if SequelRails.configuration.schema_dump
153
149
  end
154
150
 
155
151
  desc 'Runs the "down" for a given migration VERSION.'
156
152
  task :down => :load do
157
- version = ENV["VERSION"] ? ENV["VERSION"].to_i : nil
158
- raise "VERSION is required" unless version
153
+ version = ENV['VERSION'] ? ENV['VERSION'].to_i : nil
154
+ fail 'VERSION is required' unless version
159
155
  SequelRails::Migrations.migrate_down!(version)
160
- Rake::Task["db:dump"].invoke if SequelRails.configuration.schema_dump
156
+ Rake::Task['db:dump'].invoke if SequelRails.configuration.schema_dump
161
157
  end
162
158
  end
163
159
 
164
160
  desc 'Migrate the database to the latest version'
165
- task :migrate => "migrate:load" do
166
- SequelRails::Migrations.migrate_up!(ENV["VERSION"] ? ENV["VERSION"].to_i : nil)
167
- Rake::Task["db:dump"].invoke if SequelRails.configuration.schema_dump
161
+ task :migrate => 'migrate:load' do
162
+ SequelRails::Migrations.migrate_up!(ENV['VERSION'] ? ENV['VERSION'].to_i : nil)
163
+ Rake::Task['db:dump'].invoke if SequelRails.configuration.schema_dump
168
164
  end
169
165
 
170
166
  desc 'Load the seed data from db/seeds.rb'
@@ -174,10 +170,10 @@ namespace :db do
174
170
  end
175
171
 
176
172
  desc 'Create the database, load the schema, and initialize with the seed data'
177
- task :setup => [ 'db:create', 'db:load', 'db:seed' ]
173
+ task :setup => %w(db:create db:load db:seed)
178
174
 
179
175
  desc 'Drops and recreates the database from db/schema.rb for the current environment and loads the seeds.'
180
- task :reset => [ 'db:drop', 'db:setup' ]
176
+ task :reset => %w(db:drop db:setup)
181
177
 
182
178
  desc 'Forcibly close any open connections to the current env database (PostgreSQL specific)'
183
179
  task :force_close_open_connections, [:env] => :environment do |t, args|
@@ -186,8 +182,8 @@ namespace :db do
186
182
  end
187
183
 
188
184
  namespace :test do
189
- desc "Prepare test database (ensure all migrations ran, drop and re-create database then load schema). This task can be run in the same invocation as other task (eg: rake db:migrate db:test:prepare)."
190
- task :prepare => "db:abort_if_pending_migrations" do
185
+ desc 'Prepare test database (ensure all migrations ran, drop and re-create database then load schema). This task can be run in the same invocation as other task (eg: rake db:migrate db:test:prepare).'
186
+ task :prepare => 'db:abort_if_pending_migrations' do
191
187
  previous_env, Rails.env = Rails.env, 'test'
192
188
  Rake::Task['db:drop'].execute
193
189
  Rake::Task['db:create'].execute
@@ -200,4 +196,4 @@ namespace :db do
200
196
  end
201
197
  end
202
198
 
203
- task "test:prepare" => "db:test:prepare"
199
+ task 'test:prepare' => 'db:test:prepare'
@@ -1,10 +1,8 @@
1
1
  module SequelRails
2
-
3
2
  module I18nSupport
4
3
  # Set the i18n scope to overwrite ActiveModel.
5
4
  def i18n_scope #:nodoc:
6
5
  :sequel
7
6
  end
8
7
  end
9
-
10
8
  end
@@ -1,4 +1,4 @@
1
- require "sequel_rails/sequel/plugins/rails_extensions"
1
+ require 'sequel_rails/sequel/plugins/rails_extensions'
2
2
 
3
3
  ::Sequel::Model.plugin :active_model
4
4
  ::Sequel::Model.plugin :validation_helpers
@@ -1,14 +1,12 @@
1
1
  module SequelRails
2
2
  module Railties
3
-
4
3
  class LogSubscriber < ActiveSupport::LogSubscriber
5
-
6
4
  def self.runtime=(value)
7
- Thread.current["sequel_sql_runtime"] = value
5
+ Thread.current['sequel_sql_runtime'] = value
8
6
  end
9
7
 
10
8
  def self.runtime
11
- Thread.current["sequel_sql_runtime"] ||= 0
9
+ Thread.current['sequel_sql_runtime'] ||= 0
12
10
  end
13
11
 
14
12
  def self.reset_runtime
@@ -22,14 +20,14 @@ module SequelRails
22
20
 
23
21
  payload = event.payload
24
22
 
25
- name = '%s (%.1fms)' % [payload[:name], event.duration]
23
+ name = sprintf('%s (%.1fms)', payload[:name], event.duration)
26
24
  sql = payload[:sql].squeeze(' ')
27
25
  binds = nil
28
26
 
29
27
  unless (payload[:binds] || []).empty?
30
- binds = " " + payload[:binds].map { |col,v|
28
+ binds = ' ' + payload[:binds].map do |col, v|
31
29
  [col.name, v]
32
- }.inspect
30
+ end.inspect
33
31
  end
34
32
 
35
33
  if odd?
@@ -49,8 +47,6 @@ module SequelRails
49
47
  def logger
50
48
  ::SequelRails.configuration.logger
51
49
  end
52
-
53
50
  end
54
-
55
51
  end
56
52
  end
@@ -1,15 +1,14 @@
1
- require "sequel/database/logging"
2
- require "active_support/notifications"
1
+ require 'sequel/database/logging'
2
+ require 'active_support/notifications'
3
3
 
4
4
  module Sequel
5
5
  class Database
6
-
7
- def log_yield(sql, args=nil)
6
+ def log_yield(sql, args = nil)
8
7
  sql_for_log = args ? "#{sql}; #{args.inspect}" : sql
9
8
  start = Time.now
10
9
  begin
11
10
  ::ActiveSupport::Notifications.instrument(
12
- "sql.sequel",
11
+ 'sql.sequel',
13
12
  :sql => sql,
14
13
  :name => self.class,
15
14
  :binds => args
@@ -23,6 +22,5 @@ module Sequel
23
22
  log_duration(Time.now - start, sql_for_log) unless e || @loggers.empty?
24
23
  end
25
24
  end
26
-
27
25
  end
28
26
  end
@@ -1,4 +1,4 @@
1
- require "sequel"
1
+ require 'sequel'
2
2
 
3
3
  module Sequel
4
4
  module Plugins
@@ -25,11 +25,10 @@ module Sequel
25
25
  module ClassMethods
26
26
  def find!(args)
27
27
  m = self[args]
28
- raise ModelNotFound, "Couldn't find #{self} matching #{args}." unless m
28
+ fail ModelNotFound, "Couldn't find #{self} matching #{args}." unless m
29
29
  m
30
30
  end
31
31
  end
32
-
33
32
  end
34
33
  end
35
34
  end
@@ -1,49 +1,15 @@
1
- require "sequel"
1
+ require 'sequel'
2
2
 
3
3
  # Implements Sequel-specific session store.
4
4
 
5
5
  module SequelRails
6
-
7
6
  class SessionStore < ActionDispatch::Session::AbstractStore
8
-
9
- class Session < ::Sequel::Model
10
-
11
- # property :id, Serial
12
- # property :session_id, String, :required => true, :unique => true, :unique_index => true
13
- # property :data, Object, :required => true, :default => ActiveSupport::Base64.encode64(Marshal.dump({}))
14
- # property :updated_at, DateTime, :required => false, :index => true
15
-
16
- class << self
17
-
18
- def auto_migrate!
19
- self.db.create_table :sessions do
20
- primary_key :id
21
- column :session_id, String,
22
- :null => false,
23
- :unique => true,
24
- :index => true
25
-
26
- column :data, :text,
27
- :null => false
28
-
29
- column :updated_at, DateTime,
30
- :null => true,
31
- :index => true
32
- end
33
- end
34
-
35
- end
36
-
37
- def self.name
38
- 'session'
39
- end
40
-
41
- end
42
-
43
7
  SESSION_RECORD_KEY = 'rack.session.record'.freeze
44
8
 
45
9
  cattr_accessor :session_class
46
- self.session_class = Session
10
+ def self.session_class
11
+ @@session_class ||= Class.new(Sequel::Model(:sessions))
12
+ end
47
13
 
48
14
  private
49
15
 
@@ -51,7 +17,7 @@ module SequelRails
51
17
  sid ||= generate_sid
52
18
  session = find_session(sid)
53
19
  env[SESSION_RECORD_KEY] = session
54
- [ sid, session.data ]
20
+ [sid, session.data]
55
21
  end
56
22
 
57
23
  def set_session(env, sid, session_data)
@@ -71,10 +37,8 @@ module SequelRails
71
37
 
72
38
  def find_session(sid)
73
39
  klass = self.class.session_class
74
-
40
+
75
41
  klass.where(:session_id => sid).first || klass.new(:session_id => sid)
76
42
  end
77
-
78
43
  end
79
-
80
44
  end