activerecord 3.0.9 → 3.0.10.rc1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of activerecord might be problematic. Click here for more details.
- data/CHANGELOG +21 -1
- data/lib/active_record/associations.rb +19 -22
- data/lib/active_record/associations/belongs_to_polymorphic_association.rb +1 -1
- data/lib/active_record/base.rb +2 -1
- data/lib/active_record/callbacks.rb +1 -1
- data/lib/active_record/connection_adapters/postgresql_adapter.rb +1 -1
- data/lib/active_record/persistence.rb +7 -0
- data/lib/active_record/railties/databases.rake +38 -27
- data/lib/active_record/railties/jdbcmysql_error.rb +16 -0
- data/lib/active_record/relation/batches.rb +0 -2
- data/lib/active_record/schema_dumper.rb +4 -0
- data/lib/active_record/version.rb +2 -2
- metadata +20 -25
data/CHANGELOG
CHANGED
@@ -1,4 +1,24 @@
|
|
1
|
-
*Rails 3.0.
|
1
|
+
* Rails 3.0.10 (unreleased)
|
2
|
+
|
3
|
+
* Magic encoding comment added to schema.rb files
|
4
|
+
|
5
|
+
* schema.rb is written as UTF-8 by default.
|
6
|
+
|
7
|
+
* Ensuring an established connection when running `rake db:schema:dump`
|
8
|
+
|
9
|
+
* Association conditions will not clobber join conditions.
|
10
|
+
|
11
|
+
* Destroying a record will destroy the HABTM record before destroying itself.
|
12
|
+
GH #402.
|
13
|
+
|
14
|
+
* Make `ActiveRecord::Batches#find_each` to not return `self`.
|
15
|
+
|
16
|
+
* Update `table_exists?` in PG to to always use current search_path or schema
|
17
|
+
if explictly set.
|
18
|
+
|
19
|
+
*Rails 3.0.9 (June 16, 2011)*
|
20
|
+
|
21
|
+
*Rails 3.0.8 (June 7, 2011)*
|
2
22
|
|
3
23
|
* Fix various problems with using :primary_key and :foreign_key options in conjunction with
|
4
24
|
:through associations. [Jon Leighton]
|
@@ -1411,7 +1411,7 @@ module ActiveRecord
|
|
1411
1411
|
reflection = create_has_and_belongs_to_many_reflection(association_id, options, &extension)
|
1412
1412
|
collection_accessor_methods(reflection, HasAndBelongsToManyAssociation)
|
1413
1413
|
|
1414
|
-
|
1414
|
+
configure_destroy_hook_for_has_and_belongs_to_many(reflection)
|
1415
1415
|
|
1416
1416
|
add_association_callbacks(reflection.name, options)
|
1417
1417
|
end
|
@@ -1705,15 +1705,16 @@ module ActiveRecord
|
|
1705
1705
|
end
|
1706
1706
|
end
|
1707
1707
|
|
1708
|
-
def
|
1709
|
-
|
1710
|
-
|
1711
|
-
|
1712
|
-
|
1713
|
-
|
1714
|
-
|
1715
|
-
|
1716
|
-
|
1708
|
+
def configure_destroy_hook_for_has_and_belongs_to_many(reflection)
|
1709
|
+
include(Module.new {
|
1710
|
+
class_eval <<-RUBY, __FILE__, __LINE__ + 1
|
1711
|
+
def destroy_associations
|
1712
|
+
association = #{reflection.name}
|
1713
|
+
association.delete_all if association
|
1714
|
+
super
|
1715
|
+
end
|
1716
|
+
RUBY
|
1717
|
+
})
|
1717
1718
|
end
|
1718
1719
|
|
1719
1720
|
def delete_all_has_many_dependencies(record, reflection_name, association_class, dependent_conditions)
|
@@ -2144,6 +2145,7 @@ module ActiveRecord
|
|
2144
2145
|
parent_table = Arel::Table.new(parent.table_name, :as => parent.aliased_table_name,
|
2145
2146
|
:engine => arel_engine,
|
2146
2147
|
:columns => parent.active_record.columns)
|
2148
|
+
as_conditions = reflection.options[:conditions] && process_conditions(reflection.options[:conditions], aliased_table_name)
|
2147
2149
|
|
2148
2150
|
@join = case reflection.macro
|
2149
2151
|
when :has_and_belongs_to_many
|
@@ -2153,11 +2155,12 @@ module ActiveRecord
|
|
2153
2155
|
|
2154
2156
|
[
|
2155
2157
|
join_table[fk].eq(parent_table[reflection.active_record.primary_key]),
|
2156
|
-
aliased_table[klass.primary_key].eq(join_table[klass_fk])
|
2158
|
+
[aliased_table[klass.primary_key].eq(join_table[klass_fk]), as_conditions].reject{ |x| x.blank? }
|
2157
2159
|
]
|
2158
2160
|
when :has_many, :has_one
|
2159
2161
|
if reflection.options[:through]
|
2160
2162
|
join_table = Arel::Table.new(through_reflection.klass.table_name, :as => aliased_join_table_name, :engine => arel_engine)
|
2163
|
+
jt_as_conditions = through_reflection.options[:conditions] && process_conditions(through_reflection.options[:conditions], aliased_table_name)
|
2161
2164
|
jt_as_extra = jt_source_extra = jt_sti_extra = nil
|
2162
2165
|
first_key = second_key = as_extra = nil
|
2163
2166
|
|
@@ -2198,19 +2201,19 @@ module ActiveRecord
|
|
2198
2201
|
end
|
2199
2202
|
|
2200
2203
|
[
|
2201
|
-
[parent_table[jt_primary_key].eq(join_table[jt_foreign_key]), jt_as_extra, jt_source_extra, jt_sti_extra].reject{|x| x.blank? },
|
2202
|
-
[aliased_table[first_key].eq(join_table[second_key]), as_extra].reject{ |x| x.blank? }
|
2204
|
+
[parent_table[jt_primary_key].eq(join_table[jt_foreign_key]), jt_as_extra, jt_source_extra, jt_sti_extra, jt_as_conditions].reject{|x| x.blank? },
|
2205
|
+
[aliased_table[first_key].eq(join_table[second_key]), as_extra, as_conditions].reject{ |x| x.blank? }
|
2203
2206
|
]
|
2204
2207
|
elsif reflection.options[:as]
|
2205
2208
|
id_rel = aliased_table["#{reflection.options[:as]}_id"].eq(parent_table[parent.primary_key])
|
2206
2209
|
type_rel = aliased_table["#{reflection.options[:as]}_type"].eq(parent.active_record.base_class.name)
|
2207
|
-
[id_rel, type_rel]
|
2210
|
+
[id_rel, type_rel, as_conditions].reject{ |x| x.blank?}
|
2208
2211
|
else
|
2209
2212
|
foreign_key = options[:foreign_key] || reflection.active_record.name.foreign_key
|
2210
|
-
[aliased_table[foreign_key].eq(parent_table[reflection.options[:primary_key] || parent.primary_key])]
|
2213
|
+
[aliased_table[foreign_key].eq(parent_table[reflection.options[:primary_key] || parent.primary_key]), as_conditions].reject{ |x| x.blank? }
|
2211
2214
|
end
|
2212
2215
|
when :belongs_to
|
2213
|
-
[aliased_table[options[:primary_key] || reflection.klass.primary_key].eq(parent_table[options[:foreign_key] || reflection.primary_key_name])]
|
2216
|
+
[aliased_table[options[:primary_key] || reflection.klass.primary_key].eq(parent_table[options[:foreign_key] || reflection.primary_key_name]), as_conditions].reject{ |x| x.blank? }
|
2214
2217
|
end
|
2215
2218
|
|
2216
2219
|
unless klass.descends_from_active_record?
|
@@ -2221,12 +2224,6 @@ module ActiveRecord
|
|
2221
2224
|
@join << sti_condition
|
2222
2225
|
end
|
2223
2226
|
|
2224
|
-
[through_reflection, reflection].each do |ref|
|
2225
|
-
if ref && ref.options[:conditions]
|
2226
|
-
@join << process_conditions(ref.options[:conditions], aliased_table_name)
|
2227
|
-
end
|
2228
|
-
end
|
2229
|
-
|
2230
2227
|
@join
|
2231
2228
|
end
|
2232
2229
|
|
@@ -75,7 +75,7 @@ module ActiveRecord
|
|
75
75
|
end
|
76
76
|
|
77
77
|
def association_class
|
78
|
-
@owner[@reflection.options[:foreign_type]] ? @owner[@reflection.options[:foreign_type]].constantize : nil
|
78
|
+
@owner[@reflection.options[:foreign_type]].present? ? @owner[@reflection.options[:foreign_type]].constantize : nil
|
79
79
|
end
|
80
80
|
end
|
81
81
|
end
|
data/lib/active_record/base.rb
CHANGED
@@ -1497,7 +1497,8 @@ MSG
|
|
1497
1497
|
when new_record?
|
1498
1498
|
"#{self.class.model_name.cache_key}/new"
|
1499
1499
|
when timestamp = self[:updated_at]
|
1500
|
-
|
1500
|
+
timestamp = timestamp.utc.to_s(:number)
|
1501
|
+
"#{self.class.model_name.cache_key}/#{id}-#{timestamp}"
|
1501
1502
|
else
|
1502
1503
|
"#{self.class.model_name.cache_key}/#{id}"
|
1503
1504
|
end
|
@@ -262,7 +262,7 @@ module ActiveRecord
|
|
262
262
|
|
263
263
|
def deprecated_callback_method(symbol) #:nodoc:
|
264
264
|
if respond_to?(symbol, true)
|
265
|
-
ActiveSupport::Deprecation.warn("Overwriting #{symbol} in your models has been deprecated, please use Base
|
265
|
+
ActiveSupport::Deprecation.warn("Overwriting #{symbol} in your models has been deprecated, please use Base.#{symbol} :method_name instead")
|
266
266
|
send(symbol)
|
267
267
|
end
|
268
268
|
end
|
@@ -636,7 +636,7 @@ module ActiveRecord
|
|
636
636
|
SELECT COUNT(*)
|
637
637
|
FROM pg_tables
|
638
638
|
WHERE tablename = '#{table.gsub(/(^"|"$)/,'')}'
|
639
|
-
#{schema ? "
|
639
|
+
AND schemaname = #{schema ? "'#{schema}'" : "ANY (current_schemas(false))"}
|
640
640
|
SQL
|
641
641
|
end
|
642
642
|
|
@@ -79,6 +79,8 @@ module ActiveRecord
|
|
79
79
|
# Deletes the record in the database and freezes this instance to reflect
|
80
80
|
# that no changes should be made (since they can't be persisted).
|
81
81
|
def destroy
|
82
|
+
destroy_associations
|
83
|
+
|
82
84
|
if persisted?
|
83
85
|
self.class.unscoped.where(self.class.arel_table[self.class.primary_key].eq(id)).delete_all
|
84
86
|
end
|
@@ -245,6 +247,11 @@ module ActiveRecord
|
|
245
247
|
end
|
246
248
|
|
247
249
|
private
|
250
|
+
|
251
|
+
# A hook to be overriden by association modules.
|
252
|
+
def destroy_associations
|
253
|
+
end
|
254
|
+
|
248
255
|
def create_or_update
|
249
256
|
raise ReadOnlyRecord if readonly?
|
250
257
|
result = new_record? ? create : update
|
@@ -35,6 +35,12 @@ namespace :db do
|
|
35
35
|
create_database(ActiveRecord::Base.configurations[Rails.env])
|
36
36
|
end
|
37
37
|
|
38
|
+
def mysql_creation_options(config)
|
39
|
+
@charset = ENV['CHARSET'] || 'utf8'
|
40
|
+
@collation = ENV['COLLATION'] || 'utf8_unicode_ci'
|
41
|
+
{:charset => (config['charset'] || @charset), :collation => (config['collation'] || @collation)}
|
42
|
+
end
|
43
|
+
|
38
44
|
def create_database(config)
|
39
45
|
begin
|
40
46
|
if config['adapter'] =~ /sqlite/
|
@@ -57,15 +63,18 @@ namespace :db do
|
|
57
63
|
end
|
58
64
|
rescue
|
59
65
|
case config['adapter']
|
60
|
-
when
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
66
|
+
when /^(jdbc)?mysql/
|
67
|
+
if config['adapter'] =~ /jdbc/
|
68
|
+
#FIXME After Jdbcmysql gives this class
|
69
|
+
require 'active_record/railties/jdbcmysql_error'
|
70
|
+
error_class = ArJdbcMySQL::Error
|
71
|
+
else
|
72
|
+
error_class = config['adapter'] =~ /mysql2/ ? Mysql2::Error : Mysql::Error
|
73
|
+
end
|
65
74
|
access_denied_error = 1045
|
66
75
|
begin
|
67
76
|
ActiveRecord::Base.establish_connection(config.merge('database' => nil))
|
68
|
-
ActiveRecord::Base.connection.create_database(config['database'],
|
77
|
+
ActiveRecord::Base.connection.create_database(config['database'], mysql_creation_options(config))
|
69
78
|
ActiveRecord::Base.establish_connection(config)
|
70
79
|
rescue error_class => sqlerr
|
71
80
|
if sqlerr.errno == access_denied_error
|
@@ -85,7 +94,7 @@ namespace :db do
|
|
85
94
|
$stderr.puts "(if you set the charset manually, make sure you have a matching collation)" if config['charset']
|
86
95
|
end
|
87
96
|
end
|
88
|
-
when
|
97
|
+
when /^(jdbc)?postgresql$/
|
89
98
|
@encoding = config['encoding'] || ENV['CHARSET'] || 'utf8'
|
90
99
|
begin
|
91
100
|
ActiveRecord::Base.establish_connection(config.merge('database' => 'postgres', 'schema_search_path' => 'public'))
|
@@ -226,13 +235,13 @@ namespace :db do
|
|
226
235
|
task :charset => :environment do
|
227
236
|
config = ActiveRecord::Base.configurations[Rails.env || 'development']
|
228
237
|
case config['adapter']
|
229
|
-
when
|
238
|
+
when /^(jdbc)?mysql/
|
230
239
|
ActiveRecord::Base.establish_connection(config)
|
231
240
|
puts ActiveRecord::Base.connection.charset
|
232
|
-
when
|
241
|
+
when /^(jdbc)?postgresql$/
|
233
242
|
ActiveRecord::Base.establish_connection(config)
|
234
243
|
puts ActiveRecord::Base.connection.encoding
|
235
|
-
when
|
244
|
+
when /^(jdbc)?sqlite/
|
236
245
|
ActiveRecord::Base.establish_connection(config)
|
237
246
|
puts ActiveRecord::Base.connection.encoding
|
238
247
|
else
|
@@ -244,7 +253,7 @@ namespace :db do
|
|
244
253
|
task :collation => :environment do
|
245
254
|
config = ActiveRecord::Base.configurations[Rails.env || 'development']
|
246
255
|
case config['adapter']
|
247
|
-
when
|
256
|
+
when /^(jdbc)?mysql/
|
248
257
|
ActiveRecord::Base.establish_connection(config)
|
249
258
|
puts ActiveRecord::Base.connection.collation
|
250
259
|
else
|
@@ -323,7 +332,9 @@ namespace :db do
|
|
323
332
|
desc "Create a db/schema.rb file that can be portably used against any DB supported by AR"
|
324
333
|
task :dump => :environment do
|
325
334
|
require 'active_record/schema_dumper'
|
326
|
-
|
335
|
+
filename = ENV['SCHEMA'] || "#{Rails.root}/db/schema.rb"
|
336
|
+
File.open(filename, "w:utf-8") do |file|
|
337
|
+
ActiveRecord::Base.establish_connection(Rails.env)
|
327
338
|
ActiveRecord::SchemaDumper.dump(ActiveRecord::Base.connection, file)
|
328
339
|
end
|
329
340
|
Rake::Task["db:schema:dump"].reenable
|
@@ -345,10 +356,10 @@ namespace :db do
|
|
345
356
|
task :dump => :environment do
|
346
357
|
abcs = ActiveRecord::Base.configurations
|
347
358
|
case abcs[Rails.env]["adapter"]
|
348
|
-
when
|
359
|
+
when /^(jdbc)?mysql/, "oci", "oracle"
|
349
360
|
ActiveRecord::Base.establish_connection(abcs[Rails.env])
|
350
361
|
File.open("#{Rails.root}/db/#{Rails.env}_structure.sql", "w+") { |f| f << ActiveRecord::Base.connection.structure_dump }
|
351
|
-
when
|
362
|
+
when /^(jdbc)?postgresql$/
|
352
363
|
ENV['PGHOST'] = abcs[Rails.env]["host"] if abcs[Rails.env]["host"]
|
353
364
|
ENV['PGPORT'] = abcs[Rails.env]["port"].to_s if abcs[Rails.env]["port"]
|
354
365
|
ENV['PGPASSWORD'] = abcs[Rails.env]["password"].to_s if abcs[Rails.env]["password"]
|
@@ -358,9 +369,9 @@ namespace :db do
|
|
358
369
|
end
|
359
370
|
`pg_dump -i -U "#{abcs[Rails.env]["username"]}" -s -x -O -f db/#{Rails.env}_structure.sql #{search_path} #{abcs[Rails.env]["database"]}`
|
360
371
|
raise "Error dumping database" if $?.exitstatus == 1
|
361
|
-
when
|
372
|
+
when /^(jdbc)?sqlite/
|
362
373
|
dbfile = abcs[Rails.env]["database"] || abcs[Rails.env]["dbfile"]
|
363
|
-
|
374
|
+
`sqlite3 #{dbfile} .schema > db/#{Rails.env}_structure.sql`
|
364
375
|
when "sqlserver"
|
365
376
|
`scptxfr /s #{abcs[Rails.env]["host"]} /d #{abcs[Rails.env]["database"]} /I /f db\\#{Rails.env}_structure.sql /q /A /r`
|
366
377
|
`scptxfr /s #{abcs[Rails.env]["host"]} /d #{abcs[Rails.env]["database"]} /I /F db\ /q /A /r`
|
@@ -393,20 +404,20 @@ namespace :db do
|
|
393
404
|
task :clone_structure => [ "db:structure:dump", "db:test:purge" ] do
|
394
405
|
abcs = ActiveRecord::Base.configurations
|
395
406
|
case abcs["test"]["adapter"]
|
396
|
-
when
|
407
|
+
when /^(jdbc)?mysql/
|
397
408
|
ActiveRecord::Base.establish_connection(:test)
|
398
409
|
ActiveRecord::Base.connection.execute('SET foreign_key_checks = 0')
|
399
410
|
IO.readlines("#{Rails.root}/db/#{Rails.env}_structure.sql").join.split("\n\n").each do |table|
|
400
411
|
ActiveRecord::Base.connection.execute(table)
|
401
412
|
end
|
402
|
-
when
|
413
|
+
when /^(jdbc)?postgresql$/
|
403
414
|
ENV['PGHOST'] = abcs["test"]["host"] if abcs["test"]["host"]
|
404
415
|
ENV['PGPORT'] = abcs["test"]["port"].to_s if abcs["test"]["port"]
|
405
416
|
ENV['PGPASSWORD'] = abcs["test"]["password"].to_s if abcs["test"]["password"]
|
406
417
|
`psql -U "#{abcs["test"]["username"]}" -f #{Rails.root}/db/#{Rails.env}_structure.sql #{abcs["test"]["database"]}`
|
407
|
-
when
|
418
|
+
when /^(jdbc)?sqlite/
|
408
419
|
dbfile = abcs["test"]["database"] || abcs["test"]["dbfile"]
|
409
|
-
|
420
|
+
`sqlite3 #{dbfile} < #{Rails.root}/db/#{Rails.env}_structure.sql`
|
410
421
|
when "sqlserver"
|
411
422
|
`osql -E -S #{abcs["test"]["host"]} -d #{abcs["test"]["database"]} -i db\\#{Rails.env}_structure.sql`
|
412
423
|
when "oci", "oracle"
|
@@ -427,14 +438,14 @@ namespace :db do
|
|
427
438
|
task :purge => :environment do
|
428
439
|
abcs = ActiveRecord::Base.configurations
|
429
440
|
case abcs["test"]["adapter"]
|
430
|
-
when
|
441
|
+
when /^(jdbc)?mysql/
|
431
442
|
ActiveRecord::Base.establish_connection(:test)
|
432
|
-
ActiveRecord::Base.connection.recreate_database(abcs["test"]["database"], abcs["test"])
|
433
|
-
when
|
443
|
+
ActiveRecord::Base.connection.recreate_database(abcs["test"]["database"], mysql_creation_options(abcs["test"]))
|
444
|
+
when /^(jdbc)?postgresql$/
|
434
445
|
ActiveRecord::Base.clear_active_connections!
|
435
446
|
drop_database(abcs['test'])
|
436
447
|
create_database(abcs['test'])
|
437
|
-
when
|
448
|
+
when /^(jdbc)?sqlite/
|
438
449
|
dbfile = abcs["test"]["database"] || abcs["test"]["dbfile"]
|
439
450
|
File.delete(dbfile) if File.exist?(dbfile)
|
440
451
|
when "sqlserver"
|
@@ -483,16 +494,16 @@ task 'test:prepare' => 'db:test:prepare'
|
|
483
494
|
|
484
495
|
def drop_database(config)
|
485
496
|
case config['adapter']
|
486
|
-
when
|
497
|
+
when /^(jdbc)?mysql/
|
487
498
|
ActiveRecord::Base.establish_connection(config)
|
488
499
|
ActiveRecord::Base.connection.drop_database config['database']
|
489
|
-
when /^sqlite/
|
500
|
+
when /^(jdbc)?sqlite/
|
490
501
|
require 'pathname'
|
491
502
|
path = Pathname.new(config['database'])
|
492
503
|
file = path.absolute? ? path.to_s : File.join(Rails.root, path)
|
493
504
|
|
494
505
|
FileUtils.rm(file)
|
495
|
-
when
|
506
|
+
when /^(jdbc)?postgresql$/
|
496
507
|
ActiveRecord::Base.establish_connection(config.merge('database' => 'postgres', 'schema_search_path' => 'public'))
|
497
508
|
ActiveRecord::Base.connection.drop_database config['database']
|
498
509
|
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
#FIXME Remove if ArJdbcMysql will give.
|
2
|
+
module ArJdbcMySQL
|
3
|
+
class Error < StandardError
|
4
|
+
attr_accessor :error_number, :sql_state
|
5
|
+
|
6
|
+
def initialize msg
|
7
|
+
super
|
8
|
+
@error_number = nil
|
9
|
+
@sql_state = nil
|
10
|
+
end
|
11
|
+
|
12
|
+
# Mysql gem compatibility
|
13
|
+
alias_method :errno, :error_number
|
14
|
+
alias_method :error, :message
|
15
|
+
end
|
16
|
+
end
|
@@ -40,6 +40,10 @@ module ActiveRecord
|
|
40
40
|
def header(stream)
|
41
41
|
define_params = @version ? ":version => #{@version}" : ""
|
42
42
|
|
43
|
+
if stream.respond_to?(:external_encoding)
|
44
|
+
stream.puts "# encoding: #{stream.external_encoding.name}"
|
45
|
+
end
|
46
|
+
|
43
47
|
stream.puts <<HEADER
|
44
48
|
# This file is auto-generated from the current state of the database. Instead
|
45
49
|
# of editing this file, please use the migrations feature of Active Record to
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activerecord
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
prerelease:
|
4
|
+
prerelease: true
|
6
5
|
segments:
|
7
6
|
- 3
|
8
7
|
- 0
|
9
|
-
-
|
10
|
-
|
8
|
+
- 10
|
9
|
+
- rc1
|
10
|
+
version: 3.0.10.rc1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- David Heinemeier Hansson
|
@@ -15,49 +15,46 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
18
|
+
date: 2011-08-04 00:00:00 -07:00
|
19
|
+
default_executable:
|
19
20
|
dependencies:
|
20
21
|
- !ruby/object:Gem::Dependency
|
21
22
|
name: activesupport
|
22
23
|
prerelease: false
|
23
24
|
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
-
none: false
|
25
25
|
requirements:
|
26
26
|
- - "="
|
27
27
|
- !ruby/object:Gem::Version
|
28
|
-
hash: 21
|
29
28
|
segments:
|
30
29
|
- 3
|
31
30
|
- 0
|
32
|
-
-
|
33
|
-
|
31
|
+
- 10
|
32
|
+
- rc1
|
33
|
+
version: 3.0.10.rc1
|
34
34
|
type: :runtime
|
35
35
|
version_requirements: *id001
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: activemodel
|
38
38
|
prerelease: false
|
39
39
|
requirement: &id002 !ruby/object:Gem::Requirement
|
40
|
-
none: false
|
41
40
|
requirements:
|
42
41
|
- - "="
|
43
42
|
- !ruby/object:Gem::Version
|
44
|
-
hash: 21
|
45
43
|
segments:
|
46
44
|
- 3
|
47
45
|
- 0
|
48
|
-
-
|
49
|
-
|
46
|
+
- 10
|
47
|
+
- rc1
|
48
|
+
version: 3.0.10.rc1
|
50
49
|
type: :runtime
|
51
50
|
version_requirements: *id002
|
52
51
|
- !ruby/object:Gem::Dependency
|
53
52
|
name: arel
|
54
53
|
prerelease: false
|
55
54
|
requirement: &id003 !ruby/object:Gem::Requirement
|
56
|
-
none: false
|
57
55
|
requirements:
|
58
56
|
- - ~>
|
59
57
|
- !ruby/object:Gem::Version
|
60
|
-
hash: 27
|
61
58
|
segments:
|
62
59
|
- 2
|
63
60
|
- 0
|
@@ -69,11 +66,9 @@ dependencies:
|
|
69
66
|
name: tzinfo
|
70
67
|
prerelease: false
|
71
68
|
requirement: &id004 !ruby/object:Gem::Requirement
|
72
|
-
none: false
|
73
69
|
requirements:
|
74
70
|
- - ~>
|
75
71
|
- !ruby/object:Gem::Version
|
76
|
-
hash: 61
|
77
72
|
segments:
|
78
73
|
- 0
|
79
74
|
- 3
|
@@ -150,6 +145,7 @@ files:
|
|
150
145
|
- lib/active_record/railtie.rb
|
151
146
|
- lib/active_record/railties/controller_runtime.rb
|
152
147
|
- lib/active_record/railties/databases.rake
|
148
|
+
- lib/active_record/railties/jdbcmysql_error.rb
|
153
149
|
- lib/active_record/reflection.rb
|
154
150
|
- lib/active_record/relation/batches.rb
|
155
151
|
- lib/active_record/relation/calculations.rb
|
@@ -183,6 +179,7 @@ files:
|
|
183
179
|
- lib/rails/generators/active_record/session_migration/session_migration_generator.rb
|
184
180
|
- lib/rails/generators/active_record/session_migration/templates/migration.rb
|
185
181
|
- lib/rails/generators/active_record.rb
|
182
|
+
has_rdoc: true
|
186
183
|
homepage: http://www.rubyonrails.org
|
187
184
|
licenses: []
|
188
185
|
|
@@ -193,29 +190,27 @@ rdoc_options:
|
|
193
190
|
require_paths:
|
194
191
|
- lib
|
195
192
|
required_ruby_version: !ruby/object:Gem::Requirement
|
196
|
-
none: false
|
197
193
|
requirements:
|
198
194
|
- - ">="
|
199
195
|
- !ruby/object:Gem::Version
|
200
|
-
hash: 57
|
201
196
|
segments:
|
202
197
|
- 1
|
203
198
|
- 8
|
204
199
|
- 7
|
205
200
|
version: 1.8.7
|
206
201
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
207
|
-
none: false
|
208
202
|
requirements:
|
209
|
-
- - "
|
203
|
+
- - ">"
|
210
204
|
- !ruby/object:Gem::Version
|
211
|
-
hash: 3
|
212
205
|
segments:
|
213
|
-
-
|
214
|
-
|
206
|
+
- 1
|
207
|
+
- 3
|
208
|
+
- 1
|
209
|
+
version: 1.3.1
|
215
210
|
requirements: []
|
216
211
|
|
217
212
|
rubyforge_project: activerecord
|
218
|
-
rubygems_version: 1.
|
213
|
+
rubygems_version: 1.3.6
|
219
214
|
signing_key:
|
220
215
|
specification_version: 3
|
221
216
|
summary: Object-relational mapper framework (part of Rails).
|