sequel-rails 0.9.9 → 0.9.10

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 478a4c84f58ba853c223252af5ad88e61e5f4e15
4
- data.tar.gz: 62818e8f6828c8ae34f5502113033545aa6ab43d
3
+ metadata.gz: eba946c66e7d9fa0575c3ca8be8d9b2814aea6f5
4
+ data.tar.gz: d2babb6feab008ba8a5351cdc8a8be90bad8b2d2
5
5
  SHA512:
6
- metadata.gz: 10b648fb7f3f3b25d4afc48d0424f138986ca47a1d4b03a84e39c928db07345b0a58ee8e770f5fb2be36836f9963517782d77514f51c3aec8301b7a82d078b3c
7
- data.tar.gz: 7538540f3a377f6a32c6d6d9563bfb947306d14d3937307d5489533670824bebb545a277336d362341669c9d6d52bb9a22bbd50827b69a8c8f228f948806f3d3
6
+ metadata.gz: 51725615f608c37dca7faafb45abd22861438d3b26d428c37577062703c9d9a6712a0585c7af3f0967419d823ff70d3b53c38ccf269f3d76af1dbd3b99754a24
7
+ data.tar.gz: 0df87880f42c040b73b312f397b65e82411109db500043ed6ae32def27c59c397851284cc7ed0628d4d3cb3129dccd0e6bfa226d7160c2b1efa00647f8abdc8e
data/.gitignore CHANGED
@@ -5,6 +5,10 @@
5
5
  *.tmproj
6
6
  tmtags
7
7
 
8
+ ## IntelliJ IDEA
9
+
10
+ *.iml
11
+
8
12
  ## EMACS
9
13
  *~
10
14
  \#*
data/History.md CHANGED
@@ -1,3 +1,12 @@
1
+ 0.9.10 (2015-02-26)
2
+ ===================
3
+
4
+ * Set `search_path` on PostgreSQL when dumping migration informations
5
+ [#86](https://github.com/TalentBox/sequel-rails/pull/86)
6
+ * Add `ActiveSupport.on_load :sequel` support (kr3ssh) [#85](https://github.com/TalentBox/sequel-rails/pull/85)
7
+ * Added option to skip connect after Rails initialize with new option
8
+ `config.sequel.skip_connect = true`. (Alexander Birkner) [#83](https://github.com/TalentBox/sequel-rails/pull/83)
9
+
1
10
  0.9.9 (2015-01-04)
2
11
  ==================
3
12
 
data/README.md CHANGED
@@ -152,6 +152,9 @@ You can configure some options with the usual rails mechanism, in
152
152
  # Configure whether database's rake tasks will be loaded or not
153
153
  # Defaults to true
154
154
  config.sequel.load_database_tasks = false
155
+
156
+ # This setting disabled the automatic connect after Rails init
157
+ config.sequel.skip_connect = true
155
158
  ```
156
159
 
157
160
  The connection settings are read from the file `config/database.yml` and is
@@ -349,6 +352,8 @@ Improvements has been made by those awesome contributors:
349
352
  * a3gis (a3gis)
350
353
  * Andrey Chernih (andreychernih)
351
354
  * Nico Rieck (gix)
355
+ * Alexander Birkner (BirknerAlex)
356
+ * kr3ssh (kressh)
352
357
 
353
358
  Credits
354
359
  =======
data/Rakefile CHANGED
@@ -39,6 +39,7 @@ begin
39
39
  configs.each do |adapter, config|
40
40
  desc "Run specs for #{adapter} adapter"
41
41
  task adapter do
42
+ puts "running spec:#{adapter}"
42
43
  clean_env
43
44
  Rake::Task['spec'].reenable
44
45
  ENV['TEST_ADAPTER'] = adapter
@@ -27,6 +27,7 @@ module SequelRails
27
27
  self.schema_dump = default_schema_dump
28
28
  self.load_database_tasks = true
29
29
  self.after_connect = nil
30
+ self.skip_connect = nil
30
31
  end
31
32
 
32
33
  def environment_for(name)
@@ -18,23 +18,14 @@ module SequelRails
18
18
 
19
19
  def dump_schema_information(opts = {})
20
20
  sql = opts.fetch :sql
21
+ adapter = SequelRails::Storage.adapter_for(Rails.env)
21
22
  db = ::Sequel::Model.db
22
23
  res = ''
23
24
 
24
25
  if available_migrations?
25
26
  migrator_class = ::Sequel::Migrator.send(:migrator_class, migrations_dir)
26
27
  migrator = migrator_class.new db, migrations_dir
27
-
28
- inserts = migrator.ds.map do |hash|
29
- insert = migrator.ds.insert_sql(hash)
30
- sql ? "#{insert};" : " self << #{insert.inspect}"
31
- end
32
-
33
- if inserts.any?
34
- res << "Sequel.migration do\n change do\n" unless sql
35
- res << inserts.join("\n")
36
- res << "\n end\nend\n" unless sql
37
- end
28
+ res << adapter.schema_information_dump(migrator, sql)
38
29
  end
39
30
  res
40
31
  end
@@ -39,6 +39,10 @@ module SequelRails
39
39
  load 'sequel_rails/railties/database.rake' if app.config.sequel.load_database_tasks
40
40
  end
41
41
 
42
+ initializer 'sequel.load_hooks' do |app|
43
+ ::ActiveSupport.run_load_hooks(:sequel, ::Sequel::Model)
44
+ end
45
+
42
46
  initializer 'sequel.configuration' do |app|
43
47
  configure_sequel app
44
48
  end
@@ -56,8 +60,10 @@ module SequelRails
56
60
  setup_controller_runtime
57
61
  end
58
62
 
59
- initializer 'sequel.connect' do |_app|
60
- ::SequelRails.setup ::Rails.env
63
+ initializer 'sequel.connect' do |app|
64
+ unless app.config.sequel[:skip_connect]
65
+ ::SequelRails.setup ::Rails.env
66
+ end
61
67
  end
62
68
 
63
69
  # Support overwriting crucial steps in subclasses
@@ -69,6 +69,28 @@ module SequelRails
69
69
  @collation ||= config['collation'] || ENV['COLLATION']
70
70
  end
71
71
 
72
+ def search_path
73
+ @search_path ||= config['search_path'] || '"$user", public'
74
+ end
75
+
76
+ def schema_information_dump(migrator, sql_dump)
77
+ res = ''
78
+ inserts = schema_information_inserts(migrator, sql_dump)
79
+ if inserts.any?
80
+ res = inserts.join("\n")
81
+ unless sql_dump
82
+ res = <<-EOS.strip_heredoc
83
+ Sequel.migration do
84
+ change do
85
+ #{res}
86
+ end
87
+ end
88
+ EOS
89
+ end
90
+ end
91
+ res
92
+ end
93
+
72
94
  private
73
95
 
74
96
  def add_option(commands, name, value)
@@ -92,6 +114,35 @@ module SequelRails
92
114
  def safe_exec(args)
93
115
  exec SequelRails::Shellwords.join(Array(args))
94
116
  end
117
+
118
+ def schema_information_inserts(migrator, sql_dump)
119
+ migrator.ds.map do |hash|
120
+ insert = migrator.ds.insert_sql(hash)
121
+ sql_dump ? "#{insert};" : "self << #{insert.inspect}"
122
+ end
123
+ end
124
+
125
+ def schema_information_dump_with_search_path(migrator, sql_dump)
126
+ res = ''
127
+ inserts = schema_information_inserts(migrator, sql_dump)
128
+ if inserts.any?
129
+ set_search_path_sql = "SET search_path TO #{search_path}"
130
+ res = inserts.join("\n")
131
+ if sql_dump
132
+ res = "#{set_search_path_sql};\n#{res}"
133
+ else
134
+ res = <<-EOS.strip_heredoc
135
+ Sequel.migration do
136
+ change do
137
+ self << #{set_search_path_sql.inspect}
138
+ #{res}
139
+ end
140
+ end
141
+ EOS
142
+ end
143
+ end
144
+ res
145
+ end
95
146
  end
96
147
  end
97
148
  end
@@ -71,6 +71,14 @@ module SequelRails
71
71
  end
72
72
  end
73
73
 
74
+ def schema_information_dump(migrator, sql_dump)
75
+ if _is_postgres?
76
+ schema_information_dump_with_search_path(migrator, sql_dump)
77
+ else
78
+ super
79
+ end
80
+ end
81
+
74
82
  private
75
83
 
76
84
  def collation
@@ -91,6 +91,10 @@ module SequelRails
91
91
  @maintenance_db ||= config['maintenance_db'] || ''
92
92
  end
93
93
 
94
+ def schema_information_dump(migrator, sql_dump)
95
+ schema_information_dump_with_search_path(migrator, sql_dump)
96
+ end
97
+
94
98
  private
95
99
 
96
100
  def with_pgpassword
@@ -1,3 +1,3 @@
1
1
  module SequelRails
2
- VERSION = '0.9.9'
2
+ VERSION = '0.9.10'
3
3
  end
@@ -83,6 +83,22 @@ describe SequelRails::Configuration do
83
83
  end
84
84
  end
85
85
 
86
+ describe '#skip_connect' do
87
+ subject { described_class.new }
88
+
89
+ it 'defaults to nil' do
90
+ expect(subject.skip_connect).to be nil
91
+ end
92
+ it 'can be assigned' do
93
+ subject.skip_connect = true
94
+ expect(subject.skip_connect).to be true
95
+ end
96
+ it 'can be set from merging another hash' do
97
+ subject.merge!(:skip_connect => true)
98
+ expect(subject.skip_connect).to be true
99
+ end
100
+ end
101
+
86
102
  describe '#connect' do
87
103
  let(:environments) do
88
104
  {
@@ -347,5 +363,6 @@ describe SequelRails::Configuration do
347
363
  subject.connect environment
348
364
  end
349
365
  end
366
+
350
367
  end
351
368
  end
@@ -127,4 +127,13 @@ describe SequelRails::Railtie do
127
127
  end
128
128
  end
129
129
  end
130
+
131
+ it 'run load hooks for :sequel passing ::Sequel::Model' do
132
+ class_context = nil
133
+ ::ActiveSupport.on_load :sequel do
134
+ class_context = self
135
+ end
136
+ app
137
+ expect( class_context ).to be ::Sequel::Model
138
+ end
130
139
  end
@@ -29,13 +29,25 @@ describe 'Database rake tasks', :no_transaction => true do
29
29
  sql = Sequel::Model.db.from(
30
30
  :schema_migrations
31
31
  ).insert_sql(:filename => '1273253849_add_twitter_handle_to_users.rb')
32
- expect(File.read(schema)).to include <<-EOS
33
- Sequel.migration do
34
- change do
35
- self << #{sql.inspect}
36
- end
37
- end
38
- EOS
32
+ content = if ENV['TEST_ADAPTER']=='postgresql'
33
+ <<-EOS.strip_heredoc
34
+ Sequel.migration do
35
+ change do
36
+ self << "SET search_path TO \\"$user\\", public"
37
+ self << #{sql.inspect}
38
+ end
39
+ end
40
+ EOS
41
+ else
42
+ <<-EOS.strip_heredoc
43
+ Sequel.migration do
44
+ change do
45
+ self << #{sql.inspect}
46
+ end
47
+ end
48
+ EOS
49
+ end
50
+ expect(File.read(schema)).to include content
39
51
  end
40
52
  end
41
53
  end
metadata CHANGED
@@ -1,190 +1,176 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sequel-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.9
4
+ version: 0.9.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brasten Sager (brasten)
8
8
  - Jonathan TRON
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-01-04 00:00:00.000000000 Z
12
+ date: 2015-02-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: activemodel
16
15
  requirement: !ruby/object:Gem::Requirement
17
16
  requirements:
18
- - - ">="
17
+ - - '>='
19
18
  - !ruby/object:Gem::Version
20
19
  version: '0'
21
- type: :runtime
20
+ name: activemodel
22
21
  prerelease: false
22
+ type: :runtime
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - ">="
25
+ - - '>='
26
26
  - !ruby/object:Gem::Version
27
27
  version: '0'
28
28
  - !ruby/object:Gem::Dependency
29
- name: railties
30
29
  requirement: !ruby/object:Gem::Requirement
31
30
  requirements:
32
- - - ">="
31
+ - - '>='
33
32
  - !ruby/object:Gem::Version
34
33
  version: 3.2.0
35
- type: :runtime
34
+ name: railties
36
35
  prerelease: false
36
+ type: :runtime
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - ">="
39
+ - - '>='
40
40
  - !ruby/object:Gem::Version
41
41
  version: 3.2.0
42
42
  - !ruby/object:Gem::Dependency
43
- name: actionpack
44
43
  requirement: !ruby/object:Gem::Requirement
45
44
  requirements:
46
- - - ">="
45
+ - - '>='
47
46
  - !ruby/object:Gem::Version
48
47
  version: 3.2.0
49
- type: :runtime
48
+ name: actionpack
50
49
  prerelease: false
50
+ type: :runtime
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
- - - ">="
53
+ - - '>='
54
54
  - !ruby/object:Gem::Version
55
55
  version: 3.2.0
56
56
  - !ruby/object:Gem::Dependency
57
- name: sequel
58
57
  requirement: !ruby/object:Gem::Requirement
59
58
  requirements:
60
- - - ">="
59
+ - - '>='
61
60
  - !ruby/object:Gem::Version
62
61
  version: '3.28'
63
- - - "<"
62
+ - - <
64
63
  - !ruby/object:Gem::Version
65
64
  version: '5.0'
66
- type: :runtime
65
+ name: sequel
67
66
  prerelease: false
67
+ type: :runtime
68
68
  version_requirements: !ruby/object:Gem::Requirement
69
69
  requirements:
70
- - - ">="
70
+ - - '>='
71
71
  - !ruby/object:Gem::Version
72
72
  version: '3.28'
73
- - - "<"
73
+ - - <
74
74
  - !ruby/object:Gem::Version
75
75
  version: '5.0'
76
76
  - !ruby/object:Gem::Dependency
77
- name: combustion
78
77
  requirement: !ruby/object:Gem::Requirement
79
78
  requirements:
80
- - - ">="
79
+ - - '>='
81
80
  - !ruby/object:Gem::Version
82
81
  version: '0'
83
- type: :development
82
+ name: combustion
84
83
  prerelease: false
84
+ type: :development
85
85
  version_requirements: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ">="
87
+ - - '>='
88
88
  - !ruby/object:Gem::Version
89
89
  version: '0'
90
90
  - !ruby/object:Gem::Dependency
91
- name: generator_spec
92
91
  requirement: !ruby/object:Gem::Requirement
93
92
  requirements:
94
- - - ">="
93
+ - - '>='
95
94
  - !ruby/object:Gem::Version
96
95
  version: '0'
97
- type: :development
96
+ name: generator_spec
98
97
  prerelease: false
98
+ type: :development
99
99
  version_requirements: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ">="
101
+ - - '>='
102
102
  - !ruby/object:Gem::Version
103
103
  version: '0'
104
104
  - !ruby/object:Gem::Dependency
105
- name: rake
106
105
  requirement: !ruby/object:Gem::Requirement
107
106
  requirements:
108
- - - ">="
107
+ - - '>='
109
108
  - !ruby/object:Gem::Version
110
109
  version: 0.8.7
111
- type: :development
110
+ name: rake
112
111
  prerelease: false
112
+ type: :development
113
113
  version_requirements: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - ">="
115
+ - - '>='
116
116
  - !ruby/object:Gem::Version
117
117
  version: 0.8.7
118
118
  - !ruby/object:Gem::Dependency
119
- name: rspec
120
119
  requirement: !ruby/object:Gem::Requirement
121
120
  requirements:
122
- - - "~>"
121
+ - - ~>
123
122
  - !ruby/object:Gem::Version
124
123
  version: '3.1'
125
- type: :development
124
+ name: rspec
126
125
  prerelease: false
126
+ type: :development
127
127
  version_requirements: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - "~>"
129
+ - - ~>
130
130
  - !ruby/object:Gem::Version
131
131
  version: '3.1'
132
132
  - !ruby/object:Gem::Dependency
133
- name: rspec-rails
134
133
  requirement: !ruby/object:Gem::Requirement
135
134
  requirements:
136
- - - "~>"
135
+ - - ~>
137
136
  - !ruby/object:Gem::Version
138
137
  version: '3.1'
139
- type: :development
138
+ name: rspec-rails
140
139
  prerelease: false
140
+ type: :development
141
141
  version_requirements: !ruby/object:Gem::Requirement
142
142
  requirements:
143
- - - "~>"
143
+ - - ~>
144
144
  - !ruby/object:Gem::Version
145
145
  version: '3.1'
146
146
  - !ruby/object:Gem::Dependency
147
- name: rubocop
148
147
  requirement: !ruby/object:Gem::Requirement
149
148
  requirements:
150
- - - "~>"
149
+ - - ~>
151
150
  - !ruby/object:Gem::Version
152
151
  version: 0.28.0
153
- type: :development
152
+ name: rubocop
154
153
  prerelease: false
154
+ type: :development
155
155
  version_requirements: !ruby/object:Gem::Requirement
156
156
  requirements:
157
- - - "~>"
157
+ - - ~>
158
158
  - !ruby/object:Gem::Version
159
159
  version: 0.28.0
160
160
  - !ruby/object:Gem::Dependency
161
- name: ammeter
162
161
  requirement: !ruby/object:Gem::Requirement
163
162
  requirements:
164
163
  - - '='
165
164
  - !ruby/object:Gem::Version
166
165
  version: 1.1.2
167
- type: :development
166
+ name: ammeter
168
167
  prerelease: false
168
+ type: :development
169
169
  version_requirements: !ruby/object:Gem::Requirement
170
170
  requirements:
171
171
  - - '='
172
172
  - !ruby/object:Gem::Version
173
173
  version: 1.1.2
174
- - !ruby/object:Gem::Dependency
175
- name: test-unit
176
- requirement: !ruby/object:Gem::Requirement
177
- requirements:
178
- - - ">="
179
- - !ruby/object:Gem::Version
180
- version: '0'
181
- type: :development
182
- prerelease: false
183
- version_requirements: !ruby/object:Gem::Requirement
184
- requirements:
185
- - - ">="
186
- - !ruby/object:Gem::Version
187
- version: '0'
188
174
  description: Integrate Sequel with Rails (3.x and 4.x)
189
175
  email:
190
176
  - brasten@gmail.com
@@ -195,10 +181,10 @@ extra_rdoc_files:
195
181
  - LICENSE
196
182
  - README.md
197
183
  files:
198
- - ".gitignore"
199
- - ".rspec"
200
- - ".rubocop.yml"
201
- - ".travis.yml"
184
+ - .gitignore
185
+ - .rspec
186
+ - .rubocop.yml
187
+ - .travis.yml
202
188
  - Gemfile
203
189
  - History.md
204
190
  - LICENSE
@@ -274,25 +260,25 @@ homepage: http://talentbox.github.io/sequel-rails/
274
260
  licenses:
275
261
  - MIT
276
262
  metadata: {}
277
- post_install_message:
263
+ post_install_message:
278
264
  rdoc_options:
279
- - "--charset=UTF-8"
265
+ - --charset=UTF-8
280
266
  require_paths:
281
267
  - lib
282
268
  required_ruby_version: !ruby/object:Gem::Requirement
283
269
  requirements:
284
- - - ">="
270
+ - - '>='
285
271
  - !ruby/object:Gem::Version
286
272
  version: '0'
287
273
  required_rubygems_version: !ruby/object:Gem::Requirement
288
274
  requirements:
289
- - - ">="
275
+ - - '>='
290
276
  - !ruby/object:Gem::Version
291
277
  version: '0'
292
278
  requirements: []
293
- rubyforge_project:
294
- rubygems_version: 2.4.5
295
- signing_key:
279
+ rubyforge_project:
280
+ rubygems_version: 2.1.9
281
+ signing_key:
296
282
  specification_version: 4
297
283
  summary: Use Sequel with Rails (3.x and 4.x)
298
284
  test_files: