schema_plus 0.1.1 → 0.1.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.
data/.gitignore CHANGED
@@ -23,3 +23,4 @@ pkg
23
23
  *.log
24
24
  *.sqlite3
25
25
  Gemfile.lock
26
+ gemfiles/*.lock
@@ -0,0 +1,18 @@
1
+ rvm:
2
+ - 1.8.7
3
+ - 1.9.2
4
+ gemfile:
5
+ - gemfiles/Gemfile.rails-2.3
6
+ - gemfiles/Gemfile.rails-3.0
7
+ - gemfiles/Gemfile.rails-3.1
8
+ before_script:
9
+ - "mysql -e 'create database schema_plus_unittest;' > /dev/null"
10
+ - "psql -c 'create database schema_plus_unittest;' -U postgres > /dev/null"
11
+ after_script:
12
+ - "mysql -e 'drop database schema_plus_unittest;' > /dev/null"
13
+ - "psql -c 'drop database schema_plus_unittest;' -U postgres > /dev/null"
14
+ env: 'POSTGRES_DB_USER=postgres MYSQL_DB_USER=""'
15
+ notifications:
16
+ recipients:
17
+ - michal.lomnicki@gmail.com
18
+ - ronen@barzel.org
data/Gemfile CHANGED
@@ -1,3 +1,7 @@
1
1
  source "http://rubygems.org"
2
2
 
3
3
  gemspec
4
+
5
+ platforms :ruby_19 do
6
+ gem "ruby-debug19"
7
+ end
@@ -64,7 +64,7 @@ You can also create multi-column indexes, for example:
64
64
 
65
65
  t.string :country_code
66
66
  t.string :area_code
67
- t.string :local_number :index => { :width => [:country_code, :area_code], :unique => true }
67
+ t.string :local_number :index => { :with => [:country_code, :area_code], :unique => true }
68
68
 
69
69
  If you're using Postgresql, SchemaPlus provides support for conditions, expressions, index methods, and case-insensitive indexes; see doc at SchemaPlus::ActiveRecord::ConnectionAdapters::PostgresqlAdapter and SchemaPlus::ActiveRecord::ConnectionAdapters::IndexDefinition
70
70
 
@@ -146,7 +146,7 @@ running. Create database user "schema_plus" with permissions for database
146
146
  $ ./runspecs --install # do this once to install gem dependencies for all versions (slow)
147
147
  $ ./runspecs # as many times as you like
148
148
 
149
- You can also pick a specific version of rails and ruby to use, such as:
149
+ See <tt>./runspecs --help</tt> for more options. You can also manually pick a specific version of rails and ruby to use, such as:
150
150
  $ rvm use 1.9.2
151
151
  $ export SCHEMA_ASSOCIATIONS_RAILS_VERSION=3.1
152
152
  $ bundle update --local rails mysql2 # different versions of rails require different mysql2's
@@ -0,0 +1,6 @@
1
+ source "http://rubygems.org"
2
+
3
+ puts __FILE__
4
+ gemspec :path => File.expand_path('../..', __FILE__)
5
+ gem "rails", "~> 2.3"
6
+ gem "mysql2", "~> 0.2.7"
@@ -0,0 +1,5 @@
1
+ source "http://rubygems.org"
2
+
3
+ gemspec :path => File.expand_path('../..', __FILE__)
4
+ gem "rails", "~> 3.0.0"
5
+ gem "mysql2", "~> 0.2.7"
@@ -0,0 +1,5 @@
1
+ source "http://rubygems.org"
2
+
3
+ gemspec :path => File.expand_path('../..', __FILE__)
4
+ gem "rails", "~> 3.1.0.rc5"
5
+ gem "mysql2"
@@ -11,7 +11,7 @@ require 'schema_plus/active_record/connection_adapters/abstract_adapter'
11
11
  require 'schema_plus/active_record/connection_adapters/column'
12
12
  require 'schema_plus/active_record/connection_adapters/foreign_key_definition'
13
13
  require 'schema_plus/active_record/connection_adapters/index_definition'
14
- require 'schema_plus/railtie' if defined?(Rails)
14
+ require 'schema_plus/railtie' if defined?(Rails::Railtie)
15
15
 
16
16
  module SchemaPlus
17
17
  module ActiveRecord
@@ -1,3 +1,3 @@
1
1
  module SchemaPlus
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
data/runspecs CHANGED
@@ -1,36 +1,61 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  require 'optparse'
4
+ require 'ostruct'
5
+
6
+ PROJECT = File.basename(File.expand_path('..', __FILE__))
4
7
 
5
8
  RUBY_VERSIONS = %W[1.8.7 1.9.2]
6
9
  RAILS_VERSIONS = %W[2.3 3.0 3.1]
7
10
 
8
- options = {}
11
+ o = OpenStruct.new
12
+ o.ruby_versions = RUBY_VERSIONS
13
+ o.rails_versions = RAILS_VERSIONS
14
+ o.run_cmd = "rake spec"
15
+
9
16
  OptionParser.new do |opts|
10
17
  opts.banner = "Usage: #{$0} [options]"
11
18
 
12
19
  opts.on("--install", "Install gem dependencies") do |v|
13
- options[:install] = v
20
+ o.install = v
21
+ end
22
+
23
+ opts.on("--db adapter", String, "Choose which db adapter to run: postgresql, mysql, mysql2, or sqlite3. Default is all of them" ) do |adapter|
24
+ p adapter
25
+ o.run_cmd = "rake #{adapter}:spec"
26
+ end
27
+
28
+ opts.on("--ruby version", String, "Choose which version(s) of ruby to run. Default is: #{o.ruby_versions.join(' ')}") do |ruby|
29
+ o.ruby_versions = ruby.split(' ')
14
30
  end
31
+
32
+ opts.on("--rails version", String, "Choose which version(s) of rails to run. Default is: #{o.rails_versions.join(' ')}") do |rails|
33
+ o.rails_versions = rails.split(' ')
34
+ end
35
+
36
+ opts.on("--quick", "quick run on Postgres, ruby #{RUBY_VERSIONS.last} and rails #{RAILS_VERSIONS.last}") do
37
+ o.ruby_versions = [RUBY_VERSIONS.last]
38
+ o.rails_versions = [RAILS_VERSIONS.last]
39
+ o.run_cmd = "rake postgresql:spec"
40
+ end
41
+
15
42
  end.parse!
16
43
 
17
- cmds = if options [:install]
18
- ['bundle update']
44
+ cmds = if o.install
45
+ "bundle install"
19
46
  else
20
- ['bundle update --local rails mysql2 | egrep "rails|mysql2"', 'rake spec']
47
+ "bundle exec #{o.run_cmd}"
21
48
  end
22
49
 
23
50
  n = 1
24
- total = RUBY_VERSIONS.size * RAILS_VERSIONS.size
25
- RUBY_VERSIONS.each do |ruby|
26
- RAILS_VERSIONS.each do |rails|
51
+ GEMFILES_DIR = File.expand_path('../gemfiles', __FILE__)
52
+ total = o.ruby_versions.size * o.rails_versions.size
53
+ o.ruby_versions.each do |ruby|
54
+ o.rails_versions.each do |rails|
27
55
  puts "\n\n*** ruby version #{ruby} - rails version #{rails} [#{n} of #{total}]\n\n"
56
+ gemfile = File.join(GEMFILES_DIR, "Gemfile.rails-#{rails}")
28
57
  n += 1
29
- allcmds = []
30
- allcmds << "rvm use #{ruby}"
31
- allcmds << "export SCHEMA_PLUS_RAILS_VERSION=#{rails}"
32
- allcmds += cmds
33
- allcmds << 'exit'
34
- system %Q{echo '#{allcmds.join(' \n ')}' | bash -i} or abort "aborting #{$0}"
58
+ command = %Q{BUNDLE_GEMFILE="#{gemfile}" rvm #{ruby} exec #{cmds}}
59
+ system(command)
35
60
  end
36
61
  end
@@ -22,20 +22,6 @@ Gem::Specification.new do |s|
22
22
 
23
23
  s.add_dependency("rails")
24
24
  s.add_dependency("valuable")
25
-
26
- case ENV['SCHEMA_PLUS_RAILS_VERSION']
27
- when '2.3'
28
- s.add_development_dependency("rails", "~> 2.3")
29
- s.add_development_dependency("mysql2", "~> 0.2.6")
30
- when '3.0'
31
- s.add_development_dependency("rails", "~> 3.0")
32
- s.add_development_dependency("mysql2", "~> 0.2.6")
33
- when '3.1'
34
- s.add_development_dependency("rails", ">= 3.1.0.rc1")
35
- s.add_development_dependency("mysql2")
36
- else
37
- s.add_development_dependency("mysql2")
38
- end
39
25
 
40
26
  s.add_development_dependency("rake", "~> 0.8.7")
41
27
  s.add_development_dependency("rspec")
@@ -44,6 +30,5 @@ Gem::Specification.new do |s|
44
30
  s.add_development_dependency("sqlite3")
45
31
  s.add_development_dependency("simplecov")
46
32
  s.add_development_dependency("simplecov-gem-adapter")
47
- s.add_development_dependency("ruby-debug19") if RUBY_VERSION >= "1.9.2"
48
33
  end
49
34
 
@@ -7,9 +7,8 @@ ActiveRecord::Base.configurations = {
7
7
  'schema_plus' => {
8
8
  :adapter => 'mysql',
9
9
  :database => 'schema_plus_unittest',
10
- :username => 'schema_plus',
10
+ :username => ENV.fetch('MYSQL_DB_USER', 'schema_plus'),
11
11
  :encoding => 'utf8',
12
- :socket => '/tmp/mysql.sock',
13
12
  :min_messages => 'warning'
14
13
  }
15
14
 
@@ -7,9 +7,8 @@ ActiveRecord::Base.configurations = {
7
7
  'schema_plus' => {
8
8
  :adapter => 'mysql2',
9
9
  :database => 'schema_plus_unittest',
10
- :username => 'schema_plus',
10
+ :username => ENV.fetch('MYSQL_DB_USER', 'schema_plus'),
11
11
  :encoding => 'utf8',
12
- :socket => '/tmp/mysql.sock',
13
12
  :min_messages => 'warning'
14
13
  }
15
14
 
@@ -6,6 +6,7 @@ ActiveRecord::Base.logger = Logger.new(File.open("postgresql.log", "w"))
6
6
  ActiveRecord::Base.configurations = {
7
7
  'schema_plus' => {
8
8
  :adapter => 'postgresql',
9
+ :username => ENV['POSTGRES_DB_USER'],
9
10
  :database => 'schema_plus_unittest',
10
11
  :min_messages => 'warning'
11
12
  }
@@ -12,3 +12,4 @@ ActiveRecord::Base.configurations = {
12
12
  }
13
13
 
14
14
  ActiveRecord::Base.establish_connection 'schema_plus'
15
+ ActiveRecord::Base.connection.execute "PRAGMA synchronous = OFF"
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: schema_plus
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.1.1
5
+ version: 0.1.2
6
6
  platform: ruby
7
7
  authors:
8
8
  - Ronen Barzel
@@ -11,7 +11,7 @@ autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
13
 
14
- date: 2011-07-26 00:00:00 -07:00
14
+ date: 2011-08-04 00:00:00 -07:00
15
15
  default_executable:
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
@@ -37,40 +37,40 @@ dependencies:
37
37
  type: :runtime
38
38
  version_requirements: *id002
39
39
  - !ruby/object:Gem::Dependency
40
- name: rails
40
+ name: rake
41
41
  prerelease: false
42
42
  requirement: &id003 !ruby/object:Gem::Requirement
43
43
  none: false
44
44
  requirements:
45
45
  - - ~>
46
46
  - !ruby/object:Gem::Version
47
- version: "2.3"
47
+ version: 0.8.7
48
48
  type: :development
49
49
  version_requirements: *id003
50
50
  - !ruby/object:Gem::Dependency
51
- name: mysql2
51
+ name: rspec
52
52
  prerelease: false
53
53
  requirement: &id004 !ruby/object:Gem::Requirement
54
54
  none: false
55
55
  requirements:
56
- - - ~>
56
+ - - ">="
57
57
  - !ruby/object:Gem::Version
58
- version: 0.2.6
58
+ version: "0"
59
59
  type: :development
60
60
  version_requirements: *id004
61
61
  - !ruby/object:Gem::Dependency
62
- name: rake
62
+ name: pg
63
63
  prerelease: false
64
64
  requirement: &id005 !ruby/object:Gem::Requirement
65
65
  none: false
66
66
  requirements:
67
- - - ~>
67
+ - - ">="
68
68
  - !ruby/object:Gem::Version
69
- version: 0.8.7
69
+ version: "0"
70
70
  type: :development
71
71
  version_requirements: *id005
72
72
  - !ruby/object:Gem::Dependency
73
- name: rspec
73
+ name: mysql
74
74
  prerelease: false
75
75
  requirement: &id006 !ruby/object:Gem::Requirement
76
76
  none: false
@@ -81,7 +81,7 @@ dependencies:
81
81
  type: :development
82
82
  version_requirements: *id006
83
83
  - !ruby/object:Gem::Dependency
84
- name: pg
84
+ name: sqlite3
85
85
  prerelease: false
86
86
  requirement: &id007 !ruby/object:Gem::Requirement
87
87
  none: false
@@ -92,7 +92,7 @@ dependencies:
92
92
  type: :development
93
93
  version_requirements: *id007
94
94
  - !ruby/object:Gem::Dependency
95
- name: mysql
95
+ name: simplecov
96
96
  prerelease: false
97
97
  requirement: &id008 !ruby/object:Gem::Requirement
98
98
  none: false
@@ -103,7 +103,7 @@ dependencies:
103
103
  type: :development
104
104
  version_requirements: *id008
105
105
  - !ruby/object:Gem::Dependency
106
- name: sqlite3
106
+ name: simplecov-gem-adapter
107
107
  prerelease: false
108
108
  requirement: &id009 !ruby/object:Gem::Requirement
109
109
  none: false
@@ -113,39 +113,6 @@ dependencies:
113
113
  version: "0"
114
114
  type: :development
115
115
  version_requirements: *id009
116
- - !ruby/object:Gem::Dependency
117
- name: simplecov
118
- prerelease: false
119
- requirement: &id010 !ruby/object:Gem::Requirement
120
- none: false
121
- requirements:
122
- - - ">="
123
- - !ruby/object:Gem::Version
124
- version: "0"
125
- type: :development
126
- version_requirements: *id010
127
- - !ruby/object:Gem::Dependency
128
- name: simplecov-gem-adapter
129
- prerelease: false
130
- requirement: &id011 !ruby/object:Gem::Requirement
131
- none: false
132
- requirements:
133
- - - ">="
134
- - !ruby/object:Gem::Version
135
- version: "0"
136
- type: :development
137
- version_requirements: *id011
138
- - !ruby/object:Gem::Dependency
139
- name: ruby-debug19
140
- prerelease: false
141
- requirement: &id012 !ruby/object:Gem::Requirement
142
- none: false
143
- requirements:
144
- - - ">="
145
- - !ruby/object:Gem::Version
146
- version: "0"
147
- type: :development
148
- version_requirements: *id012
149
116
  description: "SchemaPlus is an ActiveRecord extension that provides enhanced capabilities for schema definition and querying, including: enhanced and more DRY index capabilities, support and automation for foreign key constraints, and support for views."
150
117
  email:
151
118
  - ronen@barzel.org
@@ -158,10 +125,14 @@ extra_rdoc_files: []
158
125
 
159
126
  files:
160
127
  - .gitignore
128
+ - .travis.yml
161
129
  - Gemfile
162
130
  - MIT-LICENSE
163
131
  - README.rdoc
164
132
  - Rakefile
133
+ - gemfiles/Gemfile.rails-2.3
134
+ - gemfiles/Gemfile.rails-3.0
135
+ - gemfiles/Gemfile.rails-3.1
165
136
  - init.rb
166
137
  - lib/schema_plus.rb
167
138
  - lib/schema_plus/active_record/base.rb