schema_plus 1.8.6 → 1.8.7

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: ed2c43411e4ae250a4e15339b46e0e176194ec62
4
- data.tar.gz: ec456a93a6e83999e083f7f2f0c4525d429516dc
3
+ metadata.gz: dceee81f9c7bd38bbbc3f07765b6cc0318d13efe
4
+ data.tar.gz: dbccc00e2a96548bd1a1aee0650dea2f07cbb791
5
5
  SHA512:
6
- metadata.gz: 3f1a7064f366f8bd02bb1399b913928f0f4644ad48a89412d87a0847deb7d76eed6690e6c20f88d31c53651a21bfe101331a136b66994ab0c6e5fb2a26166cf5
7
- data.tar.gz: 96f64a7d81ade052b0ca70fc1c3cda652c9de42cebb20fef3b80094807c5c543c30b95b98b0aa5dc8d3481958fbd274476a8a71df91d86db6e95c72df8eb804b
6
+ metadata.gz: 952c02e9cafdc50a2ae72221ec1f8a2011b9bc96541a85f02265100c9cfca51a3fc83dbde3d4a6bc11683aa440ff8ed7d8cc6b70829effca31d9cb4425d24b07
7
+ data.tar.gz: 01cd8a88036ce14e328b6754a51eb4b44f6ae2384e05b11ea01843033301cb0e2fab2cf32a1013e27b55e7a38bc2043f40c5fb519712acc534d9eb6a8351a446
data/CHANGELOG.md CHANGED
@@ -2,6 +2,13 @@
2
2
 
3
3
  ## Change Log
4
4
 
5
+ ## 1.8.7
6
+
7
+ * Bug fix: Postgres schema dump failed when using case_sensitive => false and operator_class together (#204). Thanks to [@mikeauclair](https://github.com/mikeauclair)
8
+
9
+ * Bug fix: With complex cyclic foreign key dependencies, schema dump would issue constraint before table definition (#203). Thanks to [@konjoot](https://github.com/konjoot)
10
+
11
+
5
12
  ## 1.8.6
6
13
 
7
14
  * Bug fix: Don't drop column `array: true` for ActiveRecord 4.2. (#199)
@@ -119,7 +126,7 @@
119
126
  * Add support for :deferrable => :initially_deferred (thanks to
120
127
  [@bhavinkamani](https://github.com/bhavinkamani))
121
128
  * Works with PostGIS (thanks to [@pete](https://github.com/pete))
122
- * Bug fix: Circular Reference/Stack Level Too Deep in Column#to_json.
129
+ * Bug fix: Circular Reference/Stack Level Too Deep in Column#to_json.
123
130
  Thanks to [@robdimarco](https://github.com/robdimarco) for tracking down the problem
124
131
  * Bug fix: More robust handling of foreign keys with schema namespaces
125
132
 
@@ -170,7 +177,7 @@
170
177
  by [@betelgeuse](https://github.com/betelgeuse)
171
178
  * 0.3.4 - Bug fix: regression causing :default => false to be ignored
172
179
  * 0.3.3 - Bug fix: properly handle boolean defaults in mysql
173
- * 0.3.2 - Bug fix: make sure rake db:schema:load initializes schema_plus
180
+ * 0.3.2 - Bug fix: make sure rake db:schema:load initializes schema_plus
174
181
  * 0.3.1 - Bug fix for PostgreSQL schema dump after change_column_default(...
175
182
  nil)
176
183
  * 0.3.0 - Add :default => expressions (Thanks to Luke Saunders). support
data/MIT-LICENSE CHANGED
@@ -1,5 +1,5 @@
1
1
  Copyright (c) 2006 RedHill Consulting, Pty. Ltd.
2
- Copyright (c) 2009 Michal Lomnicki & Ronen Barzel
2
+ Copyright (c) 2009 Michal Lomnicki & Ronen Barzel
3
3
 
4
4
  Permission is hereby granted, free of charge, to any person obtaining
5
5
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -258,7 +258,7 @@ resolves to:
258
258
  NOW() # PostgreSQL
259
259
  (DATETIME('now')) # SQLite3
260
260
  invalid # MySQL
261
-
261
+
262
262
  If you are using Postgresql with a `json` column, the default value may be an unadorned hash. A hash having just one key `:expr` or `:value` will be taken as schema_plus syntax; i.e, these two are equivalent:
263
263
 
264
264
  t.json :fields, default: { field1: 'a', field2: 'b' }
@@ -4,5 +4,3 @@ gemspec :path => File.expand_path('..', __FILE__)
4
4
  platform :ruby do
5
5
  gem "byebug" if RUBY_VERSION > "2"
6
6
  end
7
-
8
- File.exist?(gemfile_local = File.expand_path('../Gemfile.local', __FILE__)) and eval File.read(gemfile_local), binding, gemfile_local
@@ -65,7 +65,7 @@ module SchemaPlus
65
65
 
66
66
  ACTIONS = { :cascade => "CASCADE", :restrict => "RESTRICT", :set_null => "SET NULL", :set_default => "SET DEFAULT", :no_action => "NO ACTION" }.freeze
67
67
 
68
- def initialize(from_table, to_table, options)
68
+ def initialize(from_table, to_table, options)
69
69
  super
70
70
  @from_table = unquote(from_table)
71
71
  @to_table = unquote(to_table)
@@ -1,7 +1,7 @@
1
1
  module SchemaPlus
2
2
  module ActiveRecord
3
3
  module ConnectionAdapters
4
- #
4
+ #
5
5
  # SchemaPlus extends the IndexDefinition object to return information
6
6
  # about partial indexes and case sensitivity (i.e. Postgresql
7
7
  # support).
@@ -9,7 +9,7 @@ module SchemaPlus
9
9
  def self.included(base) #:nodoc:
10
10
  base.alias_method_chain :initialize, :schema_plus
11
11
  end
12
-
12
+
13
13
  attr_accessor :conditions
14
14
  attr_reader :expression
15
15
  attr_reader :kind
@@ -7,7 +7,7 @@ module SchemaPlus
7
7
  module MysqlAdapter
8
8
 
9
9
  #:enddoc:
10
-
10
+
11
11
  def self.included(base)
12
12
  base.class_eval do
13
13
  alias_method_chain :tables, :schema_plus
@@ -218,8 +218,8 @@ module SchemaPlus
218
218
  opclass_name[oid.to_s] = opcname
219
219
  end
220
220
  operator_classes = {}
221
- index_keys.zip(opclasses).each do |index_key, opclass|
222
- operator_classes[columns[index_key]] = opclass_name[opclass]
221
+ column_names.zip(opclasses).each do |column_name, opclass|
222
+ operator_classes[column_name] = opclass_name[opclass]
223
223
  end
224
224
  operator_classes.delete_if{|k,v| v.nil?}
225
225
 
@@ -63,7 +63,7 @@ module SchemaPlus::ActiveRecord::ConnectionAdapters
63
63
  raise unless e.message.match(/["']([^"']+)["'].*already exists/)
64
64
  name = $1
65
65
  existing = connection.indexes(table).find{|i| i.name == name}
66
- attempted = ::ActiveRecord::ConnectionAdapters::IndexDefinition.new(table, columns, options.merge(:name => name))
66
+ attempted = ::ActiveRecord::ConnectionAdapters::IndexDefinition.new(table, columns, options.merge(:name => name))
67
67
  raise if attempted != existing
68
68
  ::ActiveRecord::Base.logger.warn "[schema_plus] Index name #{name.inspect}' on table #{table.inspect} already exists. Skipping."
69
69
  end
@@ -21,7 +21,7 @@ module SchemaPlus
21
21
  end
22
22
 
23
23
  # SchemaPlus includes an Sqlite3 implementation of the AbstractAdapter
24
- # extensions.
24
+ # extensions.
25
25
  module Sqlite3Adapter
26
26
 
27
27
  # :enddoc:
@@ -34,7 +34,7 @@ module SchemaPlus::ActiveRecord::ConnectionAdapters
34
34
  # SchemaPlus also supports creation of foreign key constraints analogously, using Migration::ClassMethods#add_foreign_key or TableDefinition#foreign_key or as part of the column definition, for example:
35
35
  #
36
36
  # create_table :posts do |t| # not DRY
37
- # t.integer :author_id
37
+ # t.integer :author_id
38
38
  # end
39
39
  # add_foreign_key :posts, :author_id, :references => :authors
40
40
  #
@@ -144,7 +144,7 @@ module SchemaPlus::ActiveRecord::ConnectionAdapters
144
144
  sql
145
145
  end
146
146
 
147
- # Define an index for the current
147
+ # Define an index for the current
148
148
  if ::ActiveRecord::VERSION::MAJOR.to_i < 4
149
149
  def index(column_name, options={})
150
150
  @indexes << ::ActiveRecord::ConnectionAdapters::IndexDefinition.new(self.name, column_name, options)
@@ -2,7 +2,7 @@ require 'singleton'
2
2
 
3
3
  module SchemaPlus
4
4
  module ActiveRecord
5
- class DbDefault
5
+ class DbDefault
6
6
  include Singleton
7
7
  def to_s
8
8
  'DEFAULT'
@@ -9,7 +9,7 @@ module SchemaPlus::ActiveRecord
9
9
  # The <tt>:index</tt> option takes a hash of parameters to pass to ActiveRecord::Migration.add_index. Thus
10
10
  #
11
11
  # add_column('books', 'isbn', :string, :index => {:name => "ISBN-index", :unique => true })
12
- #
12
+ #
13
13
  # is equivalent to:
14
14
  #
15
15
  # add_column('books', 'isbn', :string)
@@ -19,7 +19,7 @@ module SchemaPlus::ActiveRecord
19
19
  # In order to support multi-column indexes, an special parameter <tt>:with</tt> may be specified, which takes another column name or an array of column names to include in the index. Thus
20
20
  #
21
21
  # add_column('contacts', 'phone_number', :string, :index => { :with => [:country_code, :area_code], :unique => true })
22
- #
22
+ #
23
23
  # is equivalent to:
24
24
  #
25
25
  # add_column('contacts', 'phone_number', :string)
@@ -111,7 +111,7 @@ module SchemaPlus::ActiveRecord
111
111
  # add_column('widgets', 'color', :integer, :references => 'colors', :index => true)
112
112
  #
113
113
  # If you want to pass options to the index, you can explcitly pass
114
- # index options, such as <tt>:index => :unique</tt>.
114
+ # index options, such as <tt>:index => :unique</tt>.
115
115
  #
116
116
  # If you don't want an index to be created, specify
117
117
  # <tt>:index => nil</tt>.
@@ -23,7 +23,7 @@ module SchemaPlus
23
23
  end
24
24
 
25
25
  # seems like this is fixing a rails bug:
26
- # change_table foo, :bulk => true { |t| t.references :bar }
26
+ # change_table foo, :bulk => true { |t| t.references :bar }
27
27
  # results in an 'unknown method :add_reference_sql' (with mysql2)
28
28
  #
29
29
  # should track it down separately and submit a patch/fix to rails
@@ -66,7 +66,7 @@ module SchemaPlus
66
66
  def add_foreign_key(*args)
67
67
  record(:add_foreign_key, args)
68
68
  end
69
-
69
+
70
70
  def invert_add_foreign_key(args)
71
71
  table_name, column_names, references_table_name, references_column_names, options = args
72
72
  [:remove_foreign_key, [table_name, column_names, references_table_name, references_column_names, (options||{}).merge(if_exists: true)]]
@@ -39,7 +39,7 @@ module SchemaPlus
39
39
 
40
40
  def break_fk_cycles #:nodoc:
41
41
  strongly_connected_components.select{|component| component.size > 1}.each do |tables|
42
- table = tables.sort.first
42
+ table = tables.sort.last
43
43
  backref_fks = @inline_fks[table].select{|fk| tables.include?(fk.references_table_name)}
44
44
  @inline_fks[table] -= backref_fks
45
45
  @dump_dependencies[table] -= backref_fks.collect(&:references_table_name)
@@ -149,7 +149,7 @@ module SchemaPlus
149
149
  dump << " :name => #{index.name.inspect}"
150
150
  dump << ", :unique => true" if index.unique
151
151
  dump << ", :kind => \"#{index.kind}\"" unless index.kind.blank?
152
- unless index.columns.blank?
152
+ unless index.columns.blank?
153
153
  dump << ", :case_sensitive => false" unless index.case_sensitive?
154
154
  dump << ", :conditions => #{index.conditions.inspect}" unless index.conditions.blank?
155
155
  index_lengths = index.lengths.compact if index.lengths.is_a?(Array)
@@ -1,3 +1,3 @@
1
1
  module SchemaPlus
2
- VERSION = "1.8.6"
2
+ VERSION = "1.8.7"
3
3
  end
@@ -135,7 +135,7 @@ describe "Column definition" do
135
135
  end
136
136
  end
137
137
 
138
- private
138
+ private
139
139
 
140
140
  def define_test_column(type, *args)
141
141
  ActiveRecord::Migration.suppress_messages do
data/spec/column_spec.rb CHANGED
@@ -5,7 +5,7 @@ describe "Column" do
5
5
  before(:all) do
6
6
  class User < ::ActiveRecord::Base ; end
7
7
  end
8
-
8
+
9
9
  let(:migration) { ::ActiveRecord::Migration }
10
10
 
11
11
  context "JSON serialization" do
@@ -32,7 +32,7 @@ describe "Column" do
32
32
 
33
33
  context "if not unique" do
34
34
 
35
- before(:each) do
35
+ before(:each) do
36
36
  create_table(User, :login => { :index => true})
37
37
  @login = User.columns.find{|column| column.name == "login"}
38
38
  end
@@ -48,7 +48,7 @@ describe "Column" do
48
48
  end
49
49
 
50
50
  context "if unique single column" do
51
- before(:each) do
51
+ before(:each) do
52
52
  create_table(User, :login => { :index => :unique})
53
53
  @login = User.columns.find{|column| column.name == "login"}
54
54
  end
@@ -64,7 +64,7 @@ describe "Column" do
64
64
 
65
65
  context "if unique multicolumn" do
66
66
 
67
- before(:each) do
67
+ before(:each) do
68
68
  create_table(User, :first => {}, :middle => {}, :last => { :index => {:with => [:first, :middle], :unique => true}})
69
69
  @first = User.columns.find{|column| column.name == "first"}
70
70
  @middle = User.columns.find{|column| column.name == "middle"}
@@ -4,7 +4,7 @@ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
4
4
  describe "Index definition" do
5
5
 
6
6
  let(:migration) { ::ActiveRecord::Migration }
7
-
7
+
8
8
  before(:all) do
9
9
  define_schema(:auto_create => false) do
10
10
  create_table :users, :force => true do |t|
@@ -8,7 +8,7 @@ ActiveRecord::Schema.define do
8
8
  create_table :members, :force => true do |t|
9
9
  t.string :login
10
10
  end
11
-
11
+
12
12
  create_table :comments, :force => true do |t|
13
13
  t.string :content
14
14
  t.integer :user
@@ -160,7 +160,7 @@ describe "Schema dump" do
160
160
  expect(dump_posts).to match(to_regexp(%q{t.index ["user_id"], :name => "custom_name"}))
161
161
  end
162
162
  end
163
-
163
+
164
164
  it "should define unique index" do
165
165
  with_index Post, :user_id, :name => "posts_user_id_index", :unique => true do
166
166
  expect(dump_posts).to match(to_regexp(%q{t.index ["user_id"], :name => "posts_user_id_index", :unique => true}))
@@ -229,6 +229,12 @@ describe "Schema dump" do
229
229
  end
230
230
  end
231
231
 
232
+ it 'should dump proper operator_class with case_sensitive => false' do
233
+ with_index Post, :body, :operator_class => 'text_pattern_ops', :case_sensitive => false do
234
+ expect(dump_posts).to match(to_regexp(%q{t.index ["body"], :name => "index_posts_on_body", :case_sensitive => false, :operator_class => {"body" => "text_pattern_ops"}}))
235
+ end
236
+ end
237
+
232
238
  it "should dump unique: true with expression (Issue #142)" do
233
239
  with_index Post, :name => "posts_user_body_index", :unique => true, :expression => "BTRIM(LOWER(body))" do
234
240
  expect(dump_posts).to match(%r{#{to_regexp(%q{t.index :name => "posts_user_body_index", :unique => true, :expression => "btrim(lower(body))"})}$})
@@ -278,6 +284,97 @@ describe "Schema dump" do
278
284
  expect(dump_schema).to match(%r{create_table "users".*foreign_key.*\["commenter_id"\], "users", \["id"\]}m)
279
285
  expect(dump_schema).to match(%r{create_table "users".*foreign_key.*\["user_id"\], "users", \["id"\]}m)
280
286
  end
287
+
288
+ context 'with complicated schemas' do
289
+ before(:all) do
290
+
291
+ SchemaPlus.setup do |config|
292
+ config.foreign_keys.auto_create = false
293
+ end
294
+ ActiveRecord::Migration.suppress_messages do
295
+ ActiveRecord::Schema.define do
296
+ connection.tables.each do |table| drop_table table, :cascade => true end
297
+
298
+ create_table :period_types, force: true do |t|
299
+ t.string :name
300
+ end
301
+
302
+ create_table :grade_systems, force: true do |t|
303
+ t.string :name
304
+ t.integer :school_id
305
+ t.integer :parent_id
306
+ t.integer :profile_id
307
+ end
308
+
309
+ create_table :schools, force: true do |t|
310
+ t.string :name
311
+ t.integer :default_grade_system_id
312
+ end
313
+
314
+ create_table :academic_years, force: true do |t|
315
+ t.string :name
316
+ t.integer :school_id
317
+ t.integer :period_type_id
318
+ end
319
+
320
+ create_table :buildings, force: true do |t|
321
+ t.string :name
322
+ t.integer :school_id
323
+ end
324
+
325
+ create_table :publishing_houses, force: true do |t|
326
+ t.string :name
327
+ end
328
+
329
+ create_table :profiles, force: true do |t|
330
+ t.integer :school_id
331
+ t.integer :publishing_house_id
332
+ t.integer :building_id
333
+ end
334
+
335
+ create_table :class_units, force: true do |t|
336
+ t.string :name
337
+ t.integer :school_id
338
+ t.integer :mentor_id
339
+ t.integer :building_id
340
+ end
341
+ end
342
+ end
343
+
344
+ class ::AcademicYear < ActiveRecord::Base ; end
345
+ class ::Building < ActiveRecord::Base ; end
346
+ class ::ClassUnit < ActiveRecord::Base ; end
347
+ class ::GradeSystem < ActiveRecord::Base ; end
348
+ class ::Profile < ActiveRecord::Base ; end
349
+ class ::PublishingHouse < ActiveRecord::Base ; end
350
+ class ::PeriodType < ActiveRecord::Base ; end
351
+ class ::School < ActiveRecord::Base ; end
352
+
353
+ ActiveRecord::Base.connection.add_foreign_key(School.table_name, :default_grade_system_id, GradeSystem.table_name, :id)
354
+ ActiveRecord::Base.connection.add_foreign_key(GradeSystem.table_name, :school_id, School.table_name, :id)
355
+ ActiveRecord::Base.connection.add_foreign_key(GradeSystem.table_name, :parent_id, GradeSystem.table_name, :id)
356
+ ActiveRecord::Base.connection.add_foreign_key(GradeSystem.table_name, :profile_id, Profile.table_name, :id)
357
+ ActiveRecord::Base.connection.add_foreign_key(Profile.table_name, :building_id, Building.table_name, :id)
358
+ ActiveRecord::Base.connection.add_foreign_key(Profile.table_name, :school_id, School.table_name, :id)
359
+ ActiveRecord::Base.connection.add_foreign_key(ClassUnit.table_name, :school_id, School.table_name, :id)
360
+ ActiveRecord::Base.connection.add_foreign_key(ClassUnit.table_name, :building_id, Building.table_name, :id)
361
+ ActiveRecord::Base.connection.add_foreign_key(ClassUnit.table_name, :mentor_id, Profile.table_name, :id)
362
+ ActiveRecord::Base.connection.add_foreign_key(Building.table_name, :school_id, School.table_name, :id)
363
+ ActiveRecord::Base.connection.add_foreign_key(AcademicYear.table_name, :school_id, School.table_name, :id)
364
+ ActiveRecord::Base.connection.add_foreign_key(AcademicYear.table_name, :period_type_id, PeriodType.table_name, :id)
365
+ ActiveRecord::Base.connection.add_foreign_key(Profile.table_name, :publishing_house_id, PublishingHouse.table_name, :id)
366
+ end
367
+
368
+ it "should not raise an error" do
369
+ expect { dump_schema }.to_not raise_error
370
+ end
371
+
372
+ it "should dump each constraint after both related tables were defined" do
373
+ expect(dump_schema.scan(%r{add_foreign_key}m).count).to eq 1
374
+ expect(dump_schema).to match(%r{create_table "schools".*add_foreign_key\s+"schools".*\["default_grade_system_id"\], "grade_systems", \["id"\]}m)
375
+ expect(dump_schema).to match(%r{create_table "grade_systems".*add_foreign_key\s+"schools".*\["default_grade_system_id"\], "grade_systems", \["id"\]}m)
376
+ end
377
+ end
281
378
  end
282
379
 
283
380
  context 'with enum', :postgresql => :only do
@@ -372,7 +469,7 @@ describe "Schema dump" do
372
469
  end
373
470
 
374
471
  def determine_foreign_key_name(model, columns, options)
375
- name = options[:name]
472
+ name = options[:name]
376
473
  name ||= model.foreign_keys.detect { |fk| fk.table_name == model.table_name.to_s && fk.column_names == Array(columns).collect(&:to_s) }.name
377
474
  end
378
475
 
@@ -5,7 +5,7 @@ module SchemaPlusMatchers
5
5
  @column_names = @on_update = @on_delete = @deferrable = @name = @references_table_name = @references_column_names = nil
6
6
  unless expected.empty?
7
7
  @references_column_names = Array(expected).collect(&:to_s)
8
- @references_table_name = @references_column_names.shift
8
+ @references_table_name = @references_column_names.shift
9
9
  end
10
10
  end
11
11
 
@@ -13,8 +13,8 @@ module SchemaPlusMatchers
13
13
  @model = model
14
14
  if @references_table_name
15
15
  @result = @model.foreign_keys.select do |fk|
16
- fk.references_table_name == @references_table_name &&
17
- @references_column_names.empty? ? true : fk.references_column_names == @references_column_names
16
+ fk.references_table_name == @references_table_name &&
17
+ @references_column_names.empty? ? true : fk.references_column_names == @references_column_names
18
18
  end
19
19
  else
20
20
  @result = @model.foreign_keys
@@ -28,7 +28,7 @@ module SchemaPlusMatchers
28
28
  end
29
29
 
30
30
  def failure_message(should_not = false)
31
- target_column_names = @column_names.present? ? "(#{@column_names.join(', ')})" : ""
31
+ target_column_names = @column_names.present? ? "(#{@column_names.join(', ')})" : ""
32
32
  destinantion_column_names = @references_table_name ? "#{@references_table_name}(#{@references_column_names.join(', ')})" : "anything"
33
33
  invert = should_not ? 'not' : ''
34
34
  msg = "Expected #{@model.table_name}#{target_column_names} to #{invert} reference #{destinantion_column_names}"
@@ -44,7 +44,7 @@ module SchemaPlusMatchers
44
44
  def failure_message_when_negated
45
45
  failure_message(true)
46
46
  end
47
-
47
+
48
48
  def on(*column_names)
49
49
  @column_names = column_names.collect(&:to_s)
50
50
  self
data/spec/views_spec.rb CHANGED
@@ -49,7 +49,7 @@ describe ActiveRecord do
49
49
  end
50
50
 
51
51
  it "should be included in schema dump in dependency order" do
52
- expect(dump).to match(%r{create_table "items".*create_view "a_ones".*create_view "ab_ones"}m)
52
+ expect(dump).to match(%r{create_table "items".*create_view "a_ones".*create_view "ab_ones"}m)
53
53
  end
54
54
 
55
55
  it "should not be included in schema if listed in ignore_tables" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: schema_plus
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.6
4
+ version: 1.8.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ronen Barzel
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-01-26 00:00:00.000000000 Z
12
+ date: 2015-02-13 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activerecord