sequel-rails 0.4.1 → 0.4.2

Sign up to get free protection for your applications and to get access to all the features.
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