sequel-rails 0.5.0 → 0.5.1
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 +6 -14
- data/.gitignore +2 -0
- data/.travis.yml +4 -4
- data/History.md +8 -0
- data/README.md +18 -0
- data/lib/sequel_rails/configuration.rb +13 -0
- data/lib/sequel_rails/migrations.rb +19 -0
- data/lib/sequel_rails/railties/database.rake +20 -14
- data/lib/sequel_rails/storage.rb +1 -1
- data/lib/sequel_rails/storage/abstract.rb +2 -2
- data/lib/sequel_rails/storage/jdbc.rb +1 -1
- data/lib/sequel_rails/storage/mysql.rb +2 -2
- data/lib/sequel_rails/storage/postgres.rb +5 -5
- data/lib/sequel_rails/storage/sqlite.rb +10 -0
- data/lib/sequel_rails/version.rb +1 -1
- data/spec/internal/db/migrate/1273253849_add_twitter_handle_to_users.rb +9 -0
- data/spec/internal/db/{schema.rb → schema.rb.init} +0 -0
- data/spec/lib/sequel_rails/configuration_spec.rb +38 -26
- data/spec/lib/sequel_rails/railties/database_rake_spec.rb +64 -0
- data/spec/spec_helper.rb +6 -1
- data/tasks/spec.rake +1 -1
- metadata +34 -30
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
metadata.gz: !binary |-
|
9
|
-
ZjJlOGExNjc3Nzc3YTg0ZDExNTkzYjdjMTAyOTg5YWYwYjhjNmI0Y2Y0NTk2
|
10
|
-
YzYyMjc2ODY5ODAwNmFlZDg3OGQxYThmNmYyNGU5ZmM5OTc1Y2Q4MWEyMDNk
|
11
|
-
ZjYwODk5MTdiY2U1YTU0OGRiMzhlM2RkZjRjODdjY2Y1NTQwMjQ=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
ZDhjZjQ0MTRhNjM4ZDkzM2YzNTU2N2QzYzQwNzNhYThiZGM5NWZiYjM4ZTAz
|
14
|
-
NjRhYzE4NzljNGE1MGU2ZDRkNzcwYjUxMGIwODc4ZjhjZDVkODcwZDc0ODYz
|
15
|
-
ZDZhMjA0ZjliMGU2YzEyNzg5YmRjMDkxYmJiYWFlZGI4ZTUxNzc=
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: d8ea9bc9710a82354d3df888106dc2c6b971eb41
|
4
|
+
data.tar.gz: bb493d857f3236c479356890e1790906ff7ed3ab
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: a7f6e7394c214be105146096a8f65e7f0eda0b33d7525a67f51b0a2611454a52f8baf352a6868d317e1e2488b4e283d0d2169d2a3fa8dbbf2044bcb6f07cbda4
|
7
|
+
data.tar.gz: cd45198031727fdefee6ca5a4c68a80db03d7c3e7bc3111cb0ddd3169577030bd0815a5c00b2f76085832c250ce051b451899baf86743ad752ebbab3c65566b7
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
@@ -8,11 +8,11 @@ env:
|
|
8
8
|
- "TEST_ADAPTER=postgresql TEST_OWNER=postgres TEST_USERNAME=postgres SEQUEL='~> 3.28'"
|
9
9
|
- "TEST_ADAPTER=mysql TEST_USERNAME=root TEST_ENCODING=utf8 SEQUEL='~> 3.28'"
|
10
10
|
- "TEST_ADAPTER=mysql2 TEST_USERNAME=root TEST_ENCODING=utf8 SEQUEL='~> 3.28'"
|
11
|
-
- "TEST_ADAPTER=sqlite3 TEST_DATABASE='
|
11
|
+
- "TEST_ADAPTER=sqlite3 TEST_DATABASE='db/database.sqlite3' SEQUEL='~> 3.28'"
|
12
12
|
- "TEST_ADAPTER=postgresql TEST_OWNER=postgres TEST_USERNAME=postgres SEQUEL='~> 4.0.0'"
|
13
13
|
- "TEST_ADAPTER=mysql TEST_USERNAME=root TEST_ENCODING=utf8 SEQUEL='~> 4.0.0'"
|
14
14
|
- "TEST_ADAPTER=mysql2 TEST_USERNAME=root TEST_ENCODING=utf8 SEQUEL='~> 4.0.0'"
|
15
|
-
- "TEST_ADAPTER=sqlite3 TEST_DATABASE='
|
15
|
+
- "TEST_ADAPTER=sqlite3 TEST_DATABASE='db/database.sqlite3' SEQUEL='~> 4.0.0'"
|
16
16
|
gemfile:
|
17
17
|
- ci/rails-3.2.gemfile
|
18
18
|
- ci/rails-4.0.gemfile
|
@@ -31,7 +31,7 @@ matrix:
|
|
31
31
|
env: "TEST_ADAPTER=postgresql TEST_OWNER=postgres TEST_USERNAME=postgres SEQUEL='~> 3.28'"
|
32
32
|
gemfile: ci/rails-4.0.gemfile
|
33
33
|
- rvm: jruby-18mode
|
34
|
-
env: "TEST_ADAPTER=sqlite3 TEST_DATABASE='
|
34
|
+
env: "TEST_ADAPTER=sqlite3 TEST_DATABASE='db/database.sqlite3' SEQUEL='~> 3.28'"
|
35
35
|
gemfile: ci/rails-4.0.gemfile
|
36
36
|
- rvm: jruby-19mode
|
37
37
|
env: "TEST_ADAPTER=mysql2 TEST_USERNAME=root TEST_ENCODING=utf8 SEQUEL='~> 3.28'"
|
@@ -52,7 +52,7 @@ matrix:
|
|
52
52
|
env: "TEST_ADAPTER=postgresql TEST_OWNER=postgres TEST_USERNAME=postgres SEQUEL='~> 4.0.0'"
|
53
53
|
gemfile: ci/rails-4.0.gemfile
|
54
54
|
- rvm: jruby-18mode
|
55
|
-
env: "TEST_ADAPTER=sqlite3 TEST_DATABASE='
|
55
|
+
env: "TEST_ADAPTER=sqlite3 TEST_DATABASE='db/database.sqlite3' SEQUEL='~> 4.0.0'"
|
56
56
|
gemfile: ci/rails-4.0.gemfile
|
57
57
|
- rvm: jruby-19mode
|
58
58
|
env: "TEST_ADAPTER=mysql2 TEST_USERNAME=root TEST_ENCODING=utf8 SEQUEL='~> 4.0.0'"
|
data/History.md
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
0.5.1 (2013-08-05)
|
2
|
+
==================
|
3
|
+
|
4
|
+
* Allow setting if schema should be dumped (Rafał Rzepecki) [#37](https://github.com/TalentBox/sequel-rails/issues/37)
|
5
|
+
* Allow `rake db:dump` and `rake db:load` to work on `sqlite3` [#31](https://github.com/TalentBox/sequel-rails/issues/31)
|
6
|
+
* Append migrations schema information to `schema.rb` and `structure.sql` [#31](https://github.com/TalentBox/sequel-rails/issues/31)
|
7
|
+
* Allow setting the search path in app config (Rafał Rzepecki) [#36](https://github.com/TalentBox/sequel-rails/issues/36)
|
8
|
+
|
1
9
|
0.5.0 (2013-07-08)
|
2
10
|
==================
|
3
11
|
|
data/README.md
CHANGED
@@ -52,6 +52,24 @@ require "sequel_rails/railties/legacy_model_config"
|
|
52
52
|
|
53
53
|
After those changes, you should be good to go!
|
54
54
|
|
55
|
+
Configuration
|
56
|
+
====================================
|
57
|
+
You can configure some options with the usual rails mechanism, in
|
58
|
+
`config/application.rb` and/or in `config/environments/*.rb`.
|
59
|
+
|
60
|
+
```ruby
|
61
|
+
# Allowed options: :sql, :ruby.
|
62
|
+
config.sequel.schema_format = :sql
|
63
|
+
|
64
|
+
# Whether to dump the schema after successful migrations.
|
65
|
+
# Defaults to false in production and test, true otherwise.
|
66
|
+
config.sequel.schema_dump = true
|
67
|
+
|
68
|
+
# These override corresponding settings from the database config.
|
69
|
+
config.sequel.max_connections = 16
|
70
|
+
config.sequel.search_path = %w(mine public)
|
71
|
+
```
|
72
|
+
|
55
73
|
Available sequel specific rake tasks
|
56
74
|
====================================
|
57
75
|
|
@@ -35,8 +35,16 @@ module SequelRails
|
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
38
|
+
def schema_dump
|
39
|
+
super.nil? ? (schema_dump = default_schema_dump) : super
|
40
|
+
end
|
41
|
+
|
38
42
|
private
|
39
43
|
|
44
|
+
def default_schema_dump
|
45
|
+
not %w(test production).include? Rails.env
|
46
|
+
end
|
47
|
+
|
40
48
|
def initialize(root, database_yml_hash)
|
41
49
|
super()
|
42
50
|
@root, @raw = root, database_yml_hash
|
@@ -75,12 +83,17 @@ module SequelRails
|
|
75
83
|
|
76
84
|
# override max connections if requested in app configuration
|
77
85
|
config['max_connections'] = max_connections if max_connections
|
86
|
+
config['search_path'] = search_path if search_path
|
78
87
|
|
79
88
|
# some adapters only support an url
|
80
89
|
if config['adapter'] && config['adapter'] =~ /^(jdbc|do):/
|
81
90
|
params = {}
|
82
91
|
config.each do |k, v|
|
83
92
|
next if ['adapter', 'host', 'port', 'database'].include?(k)
|
93
|
+
if k == 'search_path'
|
94
|
+
v = v.split(',').map &:strip unless v.is_a? Array
|
95
|
+
v = URI::escape(v.join(','))
|
96
|
+
end
|
84
97
|
params[k] = v
|
85
98
|
end
|
86
99
|
params_str = params.map { |k, v| "#{k}=#{v}" }.join('&')
|
@@ -15,6 +15,25 @@ module SequelRails
|
|
15
15
|
return false unless File.exists?(Rails.root.join("db/migrate"))
|
16
16
|
!::Sequel::Migrator.is_current?(::Sequel::Model.db, Rails.root.join("db/migrate"))
|
17
17
|
end
|
18
|
+
|
19
|
+
def dump_schema_information(opts={})
|
20
|
+
sql = opts.fetch :sql
|
21
|
+
db = ::Sequel::Model.db
|
22
|
+
migrator = ::Sequel::TimestampMigrator.new db, "db/migrate"
|
23
|
+
|
24
|
+
inserts = migrator.applied_migrations.map do |migration_name|
|
25
|
+
insert = migrator.ds.insert_sql(migrator.column => migration_name)
|
26
|
+
sql ? insert : " self << #{insert.inspect}"
|
27
|
+
end
|
28
|
+
|
29
|
+
res = ""
|
30
|
+
if inserts.any?
|
31
|
+
res << "Sequel.migration do\n change do\n" unless sql
|
32
|
+
res << inserts.join("\n")
|
33
|
+
res << "\n end\nend\n" unless sql
|
34
|
+
end
|
35
|
+
res
|
36
|
+
end
|
18
37
|
end
|
19
38
|
end
|
20
39
|
end
|
@@ -19,8 +19,10 @@ namespace :db do
|
|
19
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
|
-
|
23
|
-
|
22
|
+
filename = ENV['SCHEMA'] || "#{Rails.root}/db/schema.rb"
|
23
|
+
File.open filename, "w" do |file|
|
24
|
+
file << db_for_current_env.dump_schema_migration(:same_db => true)
|
25
|
+
file << SequelRails::Migrations.dump_schema_information(:sql => false)
|
24
26
|
end
|
25
27
|
Rake::Task["db:schema:dump"].reenable
|
26
28
|
end
|
@@ -42,26 +44,30 @@ namespace :db do
|
|
42
44
|
desc "Dump the database structure to db/structure.sql. Specify another file with DB_STRUCTURE=db/my_structure.sql"
|
43
45
|
task :dump, [:env] => :environment do |t, args|
|
44
46
|
args.with_defaults(:env => Rails.env)
|
45
|
-
|
47
|
+
|
46
48
|
filename = ENV['DB_STRUCTURE'] || File.join(Rails.root, "db", "structure.sql")
|
47
|
-
|
49
|
+
if SequelRails::Storage.dump_environment args.env, filename
|
50
|
+
::File.open filename, "a" do |file|
|
51
|
+
file << SequelRails::Migrations.dump_schema_information(:sql => true)
|
52
|
+
end
|
53
|
+
else
|
48
54
|
abort "Could not dump structure for #{args.env}."
|
49
55
|
end
|
50
|
-
|
56
|
+
|
51
57
|
Rake::Task["db:structure:dump"].reenable
|
52
58
|
end
|
53
59
|
|
54
60
|
task :load, [:env] => :environment do |t, args|
|
55
61
|
args.with_defaults(:env => Rails.env)
|
56
|
-
|
62
|
+
|
57
63
|
filename = ENV['DB_STRUCTURE'] || File.join(Rails.root, "db", "structure.sql")
|
58
64
|
unless SequelRails::Storage.load_environment args.env, filename
|
59
65
|
abort "Could not load structure for #{args.env}."
|
60
66
|
end
|
61
67
|
end
|
62
68
|
end
|
63
|
-
|
64
|
-
task dump
|
69
|
+
|
70
|
+
task :dump => :environment do
|
65
71
|
case (SequelRails.configuration.schema_format ||= :ruby)
|
66
72
|
when :ruby
|
67
73
|
Rake::Task["db:schema:dump"].invoke
|
@@ -71,8 +77,8 @@ namespace :db do
|
|
71
77
|
abort "unknown schema format #{SequelRails.configuration.schema_format}"
|
72
78
|
end
|
73
79
|
end
|
74
|
-
|
75
|
-
task load
|
80
|
+
|
81
|
+
task :load => :environment do
|
76
82
|
case (SequelRails.configuration.schema_format ||= :ruby)
|
77
83
|
when :ruby
|
78
84
|
Rake::Task["db:schema:load"].invoke
|
@@ -82,7 +88,7 @@ namespace :db do
|
|
82
88
|
abort "unknown schema format #{SequelRails.configuration.schema_format}"
|
83
89
|
end
|
84
90
|
end
|
85
|
-
|
91
|
+
|
86
92
|
namespace :create do
|
87
93
|
desc 'Create all the local databases defined in config/database.yml'
|
88
94
|
task :all => :environment do
|
@@ -143,7 +149,7 @@ namespace :db do
|
|
143
149
|
version = ENV["VERSION"] ? ENV["VERSION"].to_i : nil
|
144
150
|
raise "VERSION is required" unless version
|
145
151
|
SequelRails::Migrations.migrate_up!(version)
|
146
|
-
Rake::Task["db:dump"].invoke
|
152
|
+
Rake::Task["db:dump"].invoke if SequelRails.configuration.schema_dump
|
147
153
|
end
|
148
154
|
|
149
155
|
desc 'Runs the "down" for a given migration VERSION.'
|
@@ -151,14 +157,14 @@ namespace :db do
|
|
151
157
|
version = ENV["VERSION"] ? ENV["VERSION"].to_i : nil
|
152
158
|
raise "VERSION is required" unless version
|
153
159
|
SequelRails::Migrations.migrate_down!(version)
|
154
|
-
Rake::Task["db:dump"].invoke
|
160
|
+
Rake::Task["db:dump"].invoke if SequelRails.configuration.schema_dump
|
155
161
|
end
|
156
162
|
end
|
157
163
|
|
158
164
|
desc 'Migrate the database to the latest version'
|
159
165
|
task :migrate => "migrate:load" do
|
160
166
|
SequelRails::Migrations.migrate_up!(ENV["VERSION"] ? ENV["VERSION"].to_i : nil)
|
161
|
-
Rake::Task["db:dump"].invoke
|
167
|
+
Rake::Task["db:dump"].invoke if SequelRails.configuration.schema_dump
|
162
168
|
end
|
163
169
|
|
164
170
|
desc 'Load the seed data from db/seeds.rb'
|
data/lib/sequel_rails/storage.rb
CHANGED
@@ -21,13 +21,13 @@ module SequelRails
|
|
21
21
|
res
|
22
22
|
end
|
23
23
|
|
24
|
-
def dump
|
24
|
+
def dump(filename)
|
25
25
|
res = _dump filename
|
26
26
|
puts "[sequel] Dumped structure of database '#{database}' to '#{filename}'" if res
|
27
27
|
res
|
28
28
|
end
|
29
29
|
|
30
|
-
def load
|
30
|
+
def load(filename)
|
31
31
|
res = _load filename
|
32
32
|
puts "[sequel] Loaded structure of database '#{database}' from '#{filename}'" if res
|
33
33
|
res
|
@@ -42,7 +42,7 @@ module SequelRails
|
|
42
42
|
def _drop
|
43
43
|
if _is_sqlite?
|
44
44
|
return if in_memory?
|
45
|
-
|
45
|
+
FileUtils.rm db_name if File.exists? db_name
|
46
46
|
elsif _is_mysql?
|
47
47
|
::Sequel.connect("#{_root_url}#{_params}") do |db|
|
48
48
|
db.execute("DROP DATABASE IF EXISTS `#{db_name}`")
|
@@ -11,7 +11,7 @@ module SequelRails
|
|
11
11
|
execute("DROP DATABASE IF EXISTS `#{database}`")
|
12
12
|
end
|
13
13
|
|
14
|
-
def _dump
|
14
|
+
def _dump(filename)
|
15
15
|
commands = %w(mysqldump --no-data)
|
16
16
|
commands << "--user=#{Shellwords.escape(username)}" unless username.blank?
|
17
17
|
commands << "--password=#{Shellwords.escape(password)}" unless password.blank?
|
@@ -21,7 +21,7 @@ module SequelRails
|
|
21
21
|
system(*commands)
|
22
22
|
end
|
23
23
|
|
24
|
-
def _load
|
24
|
+
def _load(filename)
|
25
25
|
commands = %w(mysql)
|
26
26
|
commands << "--user=#{Shellwords.escape(username)}" unless username.blank?
|
27
27
|
commands << "--password=#{Shellwords.escape(password)}" unless password.blank?
|
@@ -25,8 +25,8 @@ module SequelRails
|
|
25
25
|
ENV["PGPASSWORD"] = nil unless password.blank?
|
26
26
|
res
|
27
27
|
end
|
28
|
-
|
29
|
-
def _dump
|
28
|
+
|
29
|
+
def _dump(filename)
|
30
30
|
ENV["PGPASSWORD"] = password unless password.blank?
|
31
31
|
commands = %w(pg_dump -i -s -x -O)
|
32
32
|
commands << "-f" << filename
|
@@ -39,7 +39,7 @@ module SequelRails
|
|
39
39
|
res
|
40
40
|
end
|
41
41
|
|
42
|
-
def _load
|
42
|
+
def _load(filename)
|
43
43
|
ENV["PGPASSWORD"] = password unless password.blank?
|
44
44
|
commands = %w(psql)
|
45
45
|
commands << "-f" << filename
|
@@ -63,8 +63,8 @@ module SequelRails
|
|
63
63
|
WHERE datname = '#{database}';
|
64
64
|
SQL
|
65
65
|
rescue => _
|
66
|
-
# Will raise an error as it kills existing process running this
|
67
|
-
# command. Seems to be only way to ensure *all* test connections
|
66
|
+
# Will raise an error as it kills existing process running this
|
67
|
+
# command. Seems to be only way to ensure *all* test connections
|
68
68
|
# are closed
|
69
69
|
end
|
70
70
|
end
|
@@ -11,6 +11,16 @@ module SequelRails
|
|
11
11
|
path.unlink if path.file?
|
12
12
|
end
|
13
13
|
|
14
|
+
def _dump(filename)
|
15
|
+
return if in_memory?
|
16
|
+
system "sqlite3 \"#{path.to_s}\" .schema > \"#{filename}\""
|
17
|
+
end
|
18
|
+
|
19
|
+
def _load(filename)
|
20
|
+
return if in_memory?
|
21
|
+
system "sqlite3 \"#{path.to_s}\" < \"#{filename}\""
|
22
|
+
end
|
23
|
+
|
14
24
|
private
|
15
25
|
|
16
26
|
def in_memory?
|
data/lib/sequel_rails/version.rb
CHANGED
File without changes
|
@@ -42,32 +42,21 @@ describe SequelRails::Configuration do
|
|
42
42
|
|
43
43
|
describe ".setup" do
|
44
44
|
|
45
|
-
|
46
|
-
let(:max_connections) { 31337 }
|
47
|
-
before do
|
48
|
-
environments[environment]["max_connections"] = 7
|
49
|
-
SequelRails.configuration.max_connections = max_connections
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
shared_examples "max_connections_c" do
|
45
|
+
shared_examples "max_connections" do
|
54
46
|
context "with max_connections config option" do
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
end
|
60
|
-
subject
|
47
|
+
let(:max_connections) { 31337 }
|
48
|
+
before do
|
49
|
+
environments[environment]["max_connections"] = 7
|
50
|
+
SequelRails.configuration.max_connections = max_connections
|
61
51
|
end
|
62
|
-
end
|
63
|
-
end
|
64
52
|
|
65
|
-
shared_examples "max_connections_j" do
|
66
|
-
context "with max_connections config option" do
|
67
|
-
include_context "max_connections"
|
68
53
|
it "overrides the option from the configuration" do
|
69
|
-
::Sequel.should_receive(:connect) do |
|
70
|
-
|
54
|
+
::Sequel.should_receive(:connect) do |hash_or_url, *_|
|
55
|
+
if hash_or_url.is_a? Hash
|
56
|
+
hash_or_url['max_connections'].should == max_connections
|
57
|
+
else
|
58
|
+
hash_or_url.should include("max_connections=#{max_connections}")
|
59
|
+
end
|
71
60
|
end
|
72
61
|
subject
|
73
62
|
end
|
@@ -76,11 +65,33 @@ describe SequelRails::Configuration do
|
|
76
65
|
|
77
66
|
context "for a postgres connection" do
|
78
67
|
|
68
|
+
shared_examples "search_path" do
|
69
|
+
context "with search_path config option" do
|
70
|
+
let(:search_path) { ['secret', 'private', 'public'] }
|
71
|
+
before do
|
72
|
+
environments[environment]["search_path"] = "private, public"
|
73
|
+
SequelRails.configuration.search_path = search_path
|
74
|
+
end
|
75
|
+
|
76
|
+
it "overrides the option from the configuration" do
|
77
|
+
::Sequel.should_receive(:connect) do |hash_or_url, *_|
|
78
|
+
if hash_or_url.is_a? Hash
|
79
|
+
hash_or_url['search_path'].should == search_path
|
80
|
+
else
|
81
|
+
hash_or_url.should include("search_path=secret,private,public")
|
82
|
+
end
|
83
|
+
end
|
84
|
+
subject
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
79
89
|
let(:environment) { 'development' }
|
80
90
|
|
81
91
|
context "in C-Ruby" do
|
82
92
|
|
83
|
-
include_examples "
|
93
|
+
include_examples "max_connections"
|
94
|
+
include_examples "search_path"
|
84
95
|
|
85
96
|
it "produces a sane config without url" do
|
86
97
|
::Sequel.should_receive(:connect) do |hash|
|
@@ -93,7 +104,8 @@ describe SequelRails::Configuration do
|
|
93
104
|
|
94
105
|
context "in JRuby" do
|
95
106
|
|
96
|
-
include_examples "
|
107
|
+
include_examples "max_connections"
|
108
|
+
include_examples "search_path"
|
97
109
|
|
98
110
|
let(:is_jruby) { true }
|
99
111
|
|
@@ -114,7 +126,7 @@ describe SequelRails::Configuration do
|
|
114
126
|
|
115
127
|
context "in C-Ruby" do
|
116
128
|
|
117
|
-
include_examples "
|
129
|
+
include_examples "max_connections"
|
118
130
|
|
119
131
|
it "produces a config without url" do
|
120
132
|
::Sequel.should_receive(:connect) do |hash|
|
@@ -126,7 +138,7 @@ describe SequelRails::Configuration do
|
|
126
138
|
|
127
139
|
context "in JRuby" do
|
128
140
|
|
129
|
-
include_examples "
|
141
|
+
include_examples "max_connections"
|
130
142
|
|
131
143
|
let(:is_jruby) { true }
|
132
144
|
|
@@ -0,0 +1,64 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe "Database rake tasks" do
|
4
|
+
|
5
|
+
let(:app) { Combustion::Application }
|
6
|
+
let(:app_root) { app.root }
|
7
|
+
|
8
|
+
around do |example|
|
9
|
+
begin
|
10
|
+
FileUtils.rm schema if File.exists? schema
|
11
|
+
example.run
|
12
|
+
ensure
|
13
|
+
FileUtils.rm schema if File.exists? schema
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
describe "db:schema:dump" do
|
18
|
+
let(:schema) { "#{app_root}/db/schema.rb" }
|
19
|
+
|
20
|
+
it "dumps the schema in 'db/schema.rb'" do
|
21
|
+
Dir.chdir app_root do
|
22
|
+
`rake db:schema:dump`
|
23
|
+
File.exists?(schema).should be_true
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
it "append the migration schema information if any" do
|
28
|
+
Dir.chdir app_root do
|
29
|
+
`rake db:migrate db:schema:dump`
|
30
|
+
sql = Sequel::Model.db.from(:schema_migrations).
|
31
|
+
insert_sql(:filename => "1273253849_add_twitter_handle_to_users.rb")
|
32
|
+
File.read(schema).should include <<-EOS
|
33
|
+
Sequel.migration do
|
34
|
+
change do
|
35
|
+
self << #{sql.inspect}
|
36
|
+
end
|
37
|
+
end
|
38
|
+
EOS
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
describe "db:structure:dump", :skip_jdbc do
|
44
|
+
let(:schema) { "#{app_root}/db/structure.sql" }
|
45
|
+
|
46
|
+
it "dumps the schema in 'db/structure.sql'" do
|
47
|
+
Dir.chdir app_root do
|
48
|
+
`rake db:structure:dump`
|
49
|
+
File.exists?(schema).should be_true
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
it "append the migration schema information if any" do
|
54
|
+
Dir.chdir app_root do
|
55
|
+
`rake db:migrate db:structure:dump`
|
56
|
+
|
57
|
+
sql = Sequel::Model.db.from(:schema_migrations).
|
58
|
+
insert_sql(:filename => "1273253849_add_twitter_handle_to_users.rb")
|
59
|
+
File.read(schema).should include sql
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -9,7 +9,12 @@ Combustion.initialize! "sequel_rails"
|
|
9
9
|
# Load support files
|
10
10
|
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
|
11
11
|
|
12
|
+
rspec_exclusions = {}
|
13
|
+
rspec_exclusions[:skip_jdbc] = true if SequelRails.jruby?
|
14
|
+
|
12
15
|
RSpec.configure do |config|
|
16
|
+
config.treat_symbols_as_metadata_keys_with_true_values = true
|
17
|
+
config.filter_run_excluding rspec_exclusions
|
13
18
|
config.around :each do |example|
|
14
19
|
Sequel::Model.db.transaction(:rollback => :always) do
|
15
20
|
example.run
|
@@ -26,7 +31,7 @@ begin
|
|
26
31
|
end
|
27
32
|
|
28
33
|
require 'sequel/extensions/migration'
|
29
|
-
load "#{Rails.root}/db/schema.rb"
|
34
|
+
load "#{Rails.root}/db/schema.rb.init"
|
30
35
|
Sequel::Migration.descendants.first.apply Sequel::Model.db, :up
|
31
36
|
rescue Sequel::DatabaseConnectionError => e
|
32
37
|
puts "Database connection error: #{e.message}"
|
data/tasks/spec.rake
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sequel-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brasten Sager (brasten)
|
@@ -9,98 +9,98 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-08-05 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
|
+
name: sequel
|
15
16
|
requirement: !ruby/object:Gem::Requirement
|
16
17
|
requirements:
|
17
|
-
- -
|
18
|
+
- - '>='
|
18
19
|
- !ruby/object:Gem::Version
|
19
20
|
version: '3.28'
|
20
21
|
- - <
|
21
22
|
- !ruby/object:Gem::Version
|
22
23
|
version: 4.1.0
|
24
|
+
type: :runtime
|
25
|
+
prerelease: false
|
23
26
|
version_requirements: !ruby/object:Gem::Requirement
|
24
27
|
requirements:
|
25
|
-
- -
|
28
|
+
- - '>='
|
26
29
|
- !ruby/object:Gem::Version
|
27
30
|
version: '3.28'
|
28
31
|
- - <
|
29
32
|
- !ruby/object:Gem::Version
|
30
33
|
version: 4.1.0
|
31
|
-
type: :runtime
|
32
|
-
prerelease: false
|
33
|
-
name: sequel
|
34
34
|
- !ruby/object:Gem::Dependency
|
35
|
+
name: railties
|
35
36
|
requirement: !ruby/object:Gem::Requirement
|
36
37
|
requirements:
|
37
|
-
- -
|
38
|
+
- - '>='
|
38
39
|
- !ruby/object:Gem::Version
|
39
40
|
version: 3.2.0
|
41
|
+
type: :runtime
|
42
|
+
prerelease: false
|
40
43
|
version_requirements: !ruby/object:Gem::Requirement
|
41
44
|
requirements:
|
42
|
-
- -
|
45
|
+
- - '>='
|
43
46
|
- !ruby/object:Gem::Version
|
44
47
|
version: 3.2.0
|
45
|
-
type: :runtime
|
46
|
-
prerelease: false
|
47
|
-
name: railties
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
|
+
name: rake
|
49
50
|
requirement: !ruby/object:Gem::Requirement
|
50
51
|
requirements:
|
51
|
-
- -
|
52
|
+
- - '>='
|
52
53
|
- !ruby/object:Gem::Version
|
53
54
|
version: 0.8.7
|
55
|
+
type: :development
|
56
|
+
prerelease: false
|
54
57
|
version_requirements: !ruby/object:Gem::Requirement
|
55
58
|
requirements:
|
56
|
-
- -
|
59
|
+
- - '>='
|
57
60
|
- !ruby/object:Gem::Version
|
58
61
|
version: 0.8.7
|
59
|
-
type: :development
|
60
|
-
prerelease: false
|
61
|
-
name: rake
|
62
62
|
- !ruby/object:Gem::Dependency
|
63
|
+
name: rspec
|
63
64
|
requirement: !ruby/object:Gem::Requirement
|
64
65
|
requirements:
|
65
66
|
- - ~>
|
66
67
|
- !ruby/object:Gem::Version
|
67
68
|
version: 2.7.0
|
69
|
+
type: :development
|
70
|
+
prerelease: false
|
68
71
|
version_requirements: !ruby/object:Gem::Requirement
|
69
72
|
requirements:
|
70
73
|
- - ~>
|
71
74
|
- !ruby/object:Gem::Version
|
72
75
|
version: 2.7.0
|
73
|
-
type: :development
|
74
|
-
prerelease: false
|
75
|
-
name: rspec
|
76
76
|
- !ruby/object:Gem::Dependency
|
77
|
+
name: combustion
|
77
78
|
requirement: !ruby/object:Gem::Requirement
|
78
79
|
requirements:
|
79
80
|
- - ~>
|
80
81
|
- !ruby/object:Gem::Version
|
81
82
|
version: 0.5.0
|
83
|
+
type: :development
|
84
|
+
prerelease: false
|
82
85
|
version_requirements: !ruby/object:Gem::Requirement
|
83
86
|
requirements:
|
84
87
|
- - ~>
|
85
88
|
- !ruby/object:Gem::Version
|
86
89
|
version: 0.5.0
|
87
|
-
type: :development
|
88
|
-
prerelease: false
|
89
|
-
name: combustion
|
90
90
|
- !ruby/object:Gem::Dependency
|
91
|
+
name: generator_spec
|
91
92
|
requirement: !ruby/object:Gem::Requirement
|
92
93
|
requirements:
|
93
94
|
- - ~>
|
94
95
|
- !ruby/object:Gem::Version
|
95
96
|
version: 0.9.0
|
97
|
+
type: :development
|
98
|
+
prerelease: false
|
96
99
|
version_requirements: !ruby/object:Gem::Requirement
|
97
100
|
requirements:
|
98
101
|
- - ~>
|
99
102
|
- !ruby/object:Gem::Version
|
100
103
|
version: 0.9.0
|
101
|
-
type: :development
|
102
|
-
prerelease: false
|
103
|
-
name: generator_spec
|
104
104
|
description: Integrate Sequel with Rails 3
|
105
105
|
email:
|
106
106
|
- brasten@gmail.com
|
@@ -158,12 +158,14 @@ files:
|
|
158
158
|
- spec/internal/config/database.yml
|
159
159
|
- spec/internal/config/initializers/session.rb
|
160
160
|
- spec/internal/config/routes.rb
|
161
|
-
- spec/internal/db/
|
161
|
+
- spec/internal/db/migrate/1273253849_add_twitter_handle_to_users.rb
|
162
|
+
- spec/internal/db/schema.rb.init
|
162
163
|
- spec/internal/public/favicon.ico
|
163
164
|
- spec/lib/generators/sequel/migration_spec.rb
|
164
165
|
- spec/lib/sequel_rails/configuration_spec.rb
|
165
166
|
- spec/lib/sequel_rails/migrations_spec.rb
|
166
167
|
- spec/lib/sequel_rails/railtie_spec.rb
|
168
|
+
- spec/lib/sequel_rails/railties/database_rake_spec.rb
|
167
169
|
- spec/lib/sequel_rails/railties/log_subscriber_spec.rb
|
168
170
|
- spec/lib/sequel_rails/storage_spec.rb
|
169
171
|
- spec/spec_helper.rb
|
@@ -178,12 +180,12 @@ require_paths:
|
|
178
180
|
- lib
|
179
181
|
required_ruby_version: !ruby/object:Gem::Requirement
|
180
182
|
requirements:
|
181
|
-
- -
|
183
|
+
- - '>='
|
182
184
|
- !ruby/object:Gem::Version
|
183
185
|
version: '0'
|
184
186
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
185
187
|
requirements:
|
186
|
-
- -
|
188
|
+
- - '>='
|
187
189
|
- !ruby/object:Gem::Version
|
188
190
|
version: '0'
|
189
191
|
requirements: []
|
@@ -198,12 +200,14 @@ test_files:
|
|
198
200
|
- spec/internal/config/database.yml
|
199
201
|
- spec/internal/config/initializers/session.rb
|
200
202
|
- spec/internal/config/routes.rb
|
201
|
-
- spec/internal/db/
|
203
|
+
- spec/internal/db/migrate/1273253849_add_twitter_handle_to_users.rb
|
204
|
+
- spec/internal/db/schema.rb.init
|
202
205
|
- spec/internal/public/favicon.ico
|
203
206
|
- spec/lib/generators/sequel/migration_spec.rb
|
204
207
|
- spec/lib/sequel_rails/configuration_spec.rb
|
205
208
|
- spec/lib/sequel_rails/migrations_spec.rb
|
206
209
|
- spec/lib/sequel_rails/railtie_spec.rb
|
210
|
+
- spec/lib/sequel_rails/railties/database_rake_spec.rb
|
207
211
|
- spec/lib/sequel_rails/railties/log_subscriber_spec.rb
|
208
212
|
- spec/lib/sequel_rails/storage_spec.rb
|
209
213
|
- spec/spec_helper.rb
|