sequel-rails 0.4.1 → 0.4.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.
checksums.yaml ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ NTk2YTY3ZWMxMDZjZGUxZTljODFiODAwOTQ0YjA4ZGQ4NGZjYWRhYQ==
5
+ data.tar.gz: !binary |-
6
+ OTlhZGU5ODc5NzI2YTI2NmFhZTcxNDc3MDRlNGM3MmE3ZmQ2MGNkNQ==
7
+ !binary "U0hBNTEy":
8
+ metadata.gz: !binary |-
9
+ NDM4NGVkZTBhMWNlYzk1MTEyMTc3NGMwZDFmZTQyNzFjNzliNDc4MTEzNDEx
10
+ OGRmZmNhNWIzMGRiMzIwMTIzNWEwNzI1MjBkNjcxMWYyMDBjZDhiN2E3NzIx
11
+ NTY3NTlkNmNmOWY5NGJiZjgyZjIwN2FmNjFiNWY2YjM2NzM1YTM=
12
+ data.tar.gz: !binary |-
13
+ NGY0NjZjOWZmMGUzYjVhMDg0M2QwNjlhYmIzYzg1ODBjNWViMmIzMmM4NjQw
14
+ MGI4YzliZDEzNDFhYzlhY2M1MWU0ZjQ5ZDJiZDFhMDFjMTRlMDI1OGU2MTIx
15
+ ZDkzM2NkMWY2ZTk5ZTZlM2JjZjM1YTdlYzk2YjlhNWM4ZmQyZTI=
data/History.md CHANGED
@@ -1,3 +1,15 @@
1
+ 0.4.2 (2013-03-18)
2
+ ==================
3
+
4
+ * Add schema dump format option and sql dump/load for Postgresql (Rafał Rzepecki)
5
+
6
+ To make `rake db:dump` and `rake db:load` use sql format for schema instead
7
+ of the default ruby version, put in your `config/application.rb`:
8
+ ```ruby
9
+ config.sequel.schema_format = :sql
10
+ ```
11
+ * Improve detection of JRuby (Ed Ruder)
12
+
1
13
  0.4.1 (2013-03-12)
2
14
  ==================
3
15
 
data/README.md CHANGED
@@ -126,6 +126,7 @@ Improvements has been made by those awesome contributors:
126
126
  * Brian Donovan (eventualbuddha)
127
127
  * Jack Danger Canty (JackDanger)
128
128
  * Ed Ruder (edruder)
129
+ * Rafał Rzepecki (dividedmind)
129
130
 
130
131
  Credits
131
132
  =======
data/lib/sequel_rails.rb CHANGED
@@ -3,10 +3,6 @@ require "sequel_rails/railtie" if defined? Rails
3
3
 
4
4
  module SequelRails
5
5
  def self.jruby?
6
- @using_jruby ||= if defined?(RUBY_ENGINE)
7
- RUBY_ENGINE == "jruby"
8
- else
9
- ENV['RUBY_VERSION'].to_s =~ /jruby/
10
- end
6
+ (defined?(RUBY_ENGINE) && RUBY_ENGINE=="jruby") || defined?(JRUBY_VERSION)
11
7
  end
12
8
  end
@@ -13,7 +13,7 @@ module SequelRails
13
13
  end
14
14
  end
15
15
 
16
- class Configuration
16
+ class Configuration < ActiveSupport::OrderedOptions
17
17
 
18
18
  def self.for(root, database_yml_hash)
19
19
  ::SequelRails.configuration ||= new(root, database_yml_hash)
@@ -32,6 +32,8 @@ module SequelRails
32
32
  "Sequel::ValidationFailed" => :unprocessable_entity,
33
33
  "Sequel::NoExistingObject" => :unprocessable_entity
34
34
  )
35
+
36
+ config.sequel = ActiveSupport::OrderedOptions.new
35
37
 
36
38
  rake_tasks do
37
39
  load "sequel_rails/railties/database.rake"
@@ -62,7 +64,7 @@ module SequelRails
62
64
  def configure_sequel(app)
63
65
  app.config.sequel = ::SequelRails::Configuration.for(
64
66
  ::Rails.root, app.config.database_configuration
65
- )
67
+ ).merge!(app.config.sequel)
66
68
  end
67
69
 
68
70
  def setup_i18n_support(app)
@@ -38,6 +38,51 @@ namespace :db do
38
38
  end
39
39
  end
40
40
 
41
+ namespace :structure do
42
+ desc "Dump the database structure to db/structure.sql. Specify another file with DB_STRUCTURE=db/my_structure.sql"
43
+ task :dump, [:env] => :environment do |t, args|
44
+ args.with_defaults(:env => Rails.env)
45
+
46
+ filename = ENV['DB_STRUCTURE'] || File.join(Rails.root, "db", "structure.sql")
47
+ unless SequelRails::Storage.dump_environment args.env, filename
48
+ abort "Could not dump structure for #{args.env}."
49
+ end
50
+
51
+ Rake::Task["db:structure:dump"].reenable
52
+ end
53
+
54
+ task :load, [:env] => :environment do |t, args|
55
+ args.with_defaults(:env => Rails.env)
56
+
57
+ filename = ENV['DB_STRUCTURE'] || File.join(Rails.root, "db", "structure.sql")
58
+ unless SequelRails::Storage.load_environment args.env, filename
59
+ abort "Could not load structure for #{args.env}."
60
+ end
61
+ end
62
+ end
63
+
64
+ task dump: :environment do
65
+ case (SequelRails.configuration.schema_format ||= :ruby)
66
+ when :ruby
67
+ Rake::Task["db:schema:dump"].invoke
68
+ when :sql
69
+ Rake::Task["db:structure:dump"].invoke
70
+ else
71
+ abort "unknown schema format #{SequelRails.configuration.schema_format}"
72
+ end
73
+ end
74
+
75
+ task load: :environment do
76
+ case (SequelRails.configuration.schema_format ||= :ruby)
77
+ when :ruby
78
+ Rake::Task["db:schema:load"].invoke
79
+ when :sql
80
+ Rake::Task["db:structure:load"].invoke
81
+ else
82
+ abort "unknown schema format #{SequelRails.configuration.schema_format}"
83
+ end
84
+ end
85
+
41
86
  namespace :create do
42
87
  desc 'Create all the local databases defined in config/database.yml'
43
88
  task :all => :environment do
@@ -98,7 +143,7 @@ namespace :db do
98
143
  version = ENV["VERSION"] ? ENV["VERSION"].to_i : nil
99
144
  raise "VERSION is required" unless version
100
145
  SequelRails::Migrations.migrate_up!(version)
101
- Rake::Task["db:schema:dump"].invoke unless Rails.env.test?
146
+ Rake::Task["db:dump"].invoke unless Rails.env.test?
102
147
  end
103
148
 
104
149
  desc 'Runs the "down" for a given migration VERSION.'
@@ -106,14 +151,14 @@ namespace :db do
106
151
  version = ENV["VERSION"] ? ENV["VERSION"].to_i : nil
107
152
  raise "VERSION is required" unless version
108
153
  SequelRails::Migrations.migrate_down!(version)
109
- Rake::Task["db:schema:dump"].invoke unless Rails.env.test?
154
+ Rake::Task["db:dump"].invoke unless Rails.env.test?
110
155
  end
111
156
  end
112
157
 
113
158
  desc 'Migrate the database to the latest version'
114
159
  task :migrate => "migrate:load" do
115
160
  SequelRails::Migrations.migrate_up!(ENV["VERSION"] ? ENV["VERSION"].to_i : nil)
116
- Rake::Task["db:schema:dump"].invoke unless Rails.env.test?
161
+ Rake::Task["db:dump"].invoke unless Rails.env.test?
117
162
  end
118
163
 
119
164
  desc 'Load the seed data from db/seeds.rb'
@@ -123,7 +168,7 @@ namespace :db do
123
168
  end
124
169
 
125
170
  desc 'Create the database, load the schema, and initialize with the seed data'
126
- task :setup => [ 'db:create', 'db:schema:load', 'db:seed' ]
171
+ task :setup => [ 'db:create', 'db:load', 'db:seed' ]
127
172
 
128
173
  desc 'Drops and recreates the database from db/schema.rb for the current environment and loads the seeds.'
129
174
  task :reset => [ 'db:drop', 'db:setup' ]
@@ -140,7 +185,7 @@ namespace :db do
140
185
  previous_env, Rails.env = Rails.env, 'test'
141
186
  Rake::Task['db:drop'].execute
142
187
  Rake::Task['db:create'].execute
143
- Rake::Task['db:schema:load'].execute
188
+ Rake::Task['db:load'].execute
144
189
  Sequel::DATABASES.each do |db|
145
190
  db.disconnect
146
191
  end
@@ -24,6 +24,14 @@ module SequelRails
24
24
  adapter.close_connections
25
25
  adapter.drop
26
26
  end
27
+
28
+ def self.dump_environment(config_or_env, filename)
29
+ adapter_for(config_or_env).dump(filename)
30
+ end
31
+
32
+ def self.load_environment(config_or_env, filename)
33
+ adapter_for(config_or_env).load(filename)
34
+ end
27
35
 
28
36
  def self.close_all_connections
29
37
  with_all_repositories { |config| close_connections_environment(config) }
@@ -21,6 +21,18 @@ module SequelRails
21
21
  res
22
22
  end
23
23
 
24
+ def dump filename
25
+ res = _dump filename
26
+ puts "[sequel] Dumped structure of database '#{database}' to '#{filename}'" if res
27
+ res
28
+ end
29
+
30
+ def load filename
31
+ res = _load filename
32
+ puts "[sequel] Loaded structure of database '#{database}' from '#{filename}'" if res
33
+ res
34
+ end
35
+
24
36
  # To be overriden by subclasses
25
37
  def close_connections
26
38
  true
@@ -25,6 +25,32 @@ module SequelRails
25
25
  ENV["PGPASSWORD"] = nil unless password.blank?
26
26
  res
27
27
  end
28
+
29
+ def _dump filename
30
+ ENV["PGPASSWORD"] = password unless password.blank?
31
+ commands = %w(pg_dump -i -s -x -O)
32
+ commands << "-f" << filename
33
+ commands << "-U" << username unless username.blank?
34
+ commands << "--port" << port.to_s unless port.blank?
35
+ commands << "--host" << host unless host.blank?
36
+ commands << database
37
+ res = system(*commands)
38
+ ENV["PGPASSWORD"] = nil unless password.blank?
39
+ res
40
+ end
41
+
42
+ def _load filename
43
+ ENV["PGPASSWORD"] = password unless password.blank?
44
+ commands = %w(psql)
45
+ commands << "-f" << filename
46
+ commands << "-U" << username unless username.blank?
47
+ commands << "--port" << port.to_s unless port.blank?
48
+ commands << "--host" << host unless host.blank?
49
+ commands << database
50
+ res = system(*commands)
51
+ ENV["PGPASSWORD"] = nil unless password.blank?
52
+ res
53
+ end
28
54
 
29
55
  def close_connections
30
56
  begin
@@ -1,3 +1,3 @@
1
1
  module SequelRails
2
- VERSION = "0.4.1"
2
+ VERSION = "0.4.2"
3
3
  end
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sequel-rails
3
3
  version: !ruby/object:Gem::Version
4
- prerelease:
5
- version: 0.4.1
4
+ version: 0.4.2
6
5
  platform: ruby
7
6
  authors:
8
7
  - Brasten Sager (brasten)
@@ -10,104 +9,92 @@ authors:
10
9
  autorequire:
11
10
  bindir: bin
12
11
  cert_chain: []
13
- date: 2013-03-12 00:00:00.000000000 Z
12
+ date: 2013-03-18 00:00:00.000000000 Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
- name: sequel
17
- version_requirements: !ruby/object:Gem::Requirement
18
- none: false
15
+ requirement: !ruby/object:Gem::Requirement
19
16
  requirements:
20
17
  - - ~>
21
18
  - !ruby/object:Gem::Version
22
19
  version: '3.28'
23
- prerelease: false
24
20
  type: :runtime
25
- requirement: !ruby/object:Gem::Requirement
26
- none: false
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
27
23
  requirements:
28
24
  - - ~>
29
25
  - !ruby/object:Gem::Version
30
26
  version: '3.28'
27
+ name: sequel
31
28
  - !ruby/object:Gem::Dependency
32
- name: railties
33
- version_requirements: !ruby/object:Gem::Requirement
34
- none: false
29
+ requirement: !ruby/object:Gem::Requirement
35
30
  requirements:
36
31
  - - ! '>='
37
32
  - !ruby/object:Gem::Version
38
33
  version: 3.2.0
39
- prerelease: false
40
34
  type: :runtime
41
- requirement: !ruby/object:Gem::Requirement
42
- none: false
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
43
37
  requirements:
44
38
  - - ! '>='
45
39
  - !ruby/object:Gem::Version
46
40
  version: 3.2.0
41
+ name: railties
47
42
  - !ruby/object:Gem::Dependency
48
- name: rake
49
- version_requirements: !ruby/object:Gem::Requirement
50
- none: false
43
+ requirement: !ruby/object:Gem::Requirement
51
44
  requirements:
52
45
  - - ! '>='
53
46
  - !ruby/object:Gem::Version
54
47
  version: 0.8.7
55
- prerelease: false
56
48
  type: :development
57
- requirement: !ruby/object:Gem::Requirement
58
- none: false
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
59
51
  requirements:
60
52
  - - ! '>='
61
53
  - !ruby/object:Gem::Version
62
54
  version: 0.8.7
55
+ name: rake
63
56
  - !ruby/object:Gem::Dependency
64
- name: rspec
65
- version_requirements: !ruby/object:Gem::Requirement
66
- none: false
57
+ requirement: !ruby/object:Gem::Requirement
67
58
  requirements:
68
59
  - - ~>
69
60
  - !ruby/object:Gem::Version
70
61
  version: 2.7.0
71
- prerelease: false
72
62
  type: :development
73
- requirement: !ruby/object:Gem::Requirement
74
- none: false
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
75
65
  requirements:
76
66
  - - ~>
77
67
  - !ruby/object:Gem::Version
78
68
  version: 2.7.0
69
+ name: rspec
79
70
  - !ruby/object:Gem::Dependency
80
- name: combustion
81
- version_requirements: !ruby/object:Gem::Requirement
82
- none: false
71
+ requirement: !ruby/object:Gem::Requirement
83
72
  requirements:
84
73
  - - ~>
85
74
  - !ruby/object:Gem::Version
86
75
  version: 0.3.1
87
- prerelease: false
88
76
  type: :development
89
- requirement: !ruby/object:Gem::Requirement
90
- none: false
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
91
79
  requirements:
92
80
  - - ~>
93
81
  - !ruby/object:Gem::Version
94
82
  version: 0.3.1
83
+ name: combustion
95
84
  - !ruby/object:Gem::Dependency
96
- name: generator_spec
97
- version_requirements: !ruby/object:Gem::Requirement
98
- none: false
85
+ requirement: !ruby/object:Gem::Requirement
99
86
  requirements:
100
87
  - - ~>
101
88
  - !ruby/object:Gem::Version
102
89
  version: 0.8.7
103
- prerelease: false
104
90
  type: :development
105
- requirement: !ruby/object:Gem::Requirement
106
- none: false
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
107
93
  requirements:
108
94
  - - ~>
109
95
  - !ruby/object:Gem::Version
110
96
  version: 0.8.7
97
+ name: generator_spec
111
98
  description: Integrate Sequel with Rails 3
112
99
  email:
113
100
  - brasten@gmail.com
@@ -175,34 +162,27 @@ files:
175
162
  - tasks/spec.rake
176
163
  homepage: https://github.com/TalentBox/sequel-rails
177
164
  licenses: []
165
+ metadata: {}
178
166
  post_install_message:
179
167
  rdoc_options:
180
168
  - --charset=UTF-8
181
169
  require_paths:
182
170
  - lib
183
171
  required_ruby_version: !ruby/object:Gem::Requirement
184
- none: false
185
172
  requirements:
186
173
  - - ! '>='
187
174
  - !ruby/object:Gem::Version
188
- hash: 4606545589271147809
189
- segments:
190
- - 0
191
175
  version: '0'
192
176
  required_rubygems_version: !ruby/object:Gem::Requirement
193
- none: false
194
177
  requirements:
195
178
  - - ! '>='
196
179
  - !ruby/object:Gem::Version
197
- hash: 4606545589271147809
198
- segments:
199
- - 0
200
180
  version: '0'
201
181
  requirements: []
202
182
  rubyforge_project:
203
- rubygems_version: 1.8.23
183
+ rubygems_version: 2.0.3
204
184
  signing_key:
205
- specification_version: 3
185
+ specification_version: 4
206
186
  summary: Use Sequel with Rails 3
207
187
  test_files:
208
188
  - spec/internal/Rakefile