sequel-rails 0.9.9 → 0.9.10

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