redhillonrails_core 1.1.3 → 1.2.0
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 +1 -0
 - data/CHANGELOG +5 -0
 - data/Gemfile.lock +15 -14
 - data/README.rdoc +8 -2
 - data/Rakefile +6 -5
 - data/lib/redhillonrails_core.rb +3 -0
 - data/lib/redhillonrails_core/active_record/base.rb +1 -1
 - data/lib/redhillonrails_core/active_record/connection_adapters/abstract_adapter.rb +2 -2
 - data/lib/redhillonrails_core/active_record/connection_adapters/foreign_key_definition.rb +8 -1
 - data/lib/redhillonrails_core/active_record/connection_adapters/mysql_adapter.rb +13 -0
 - data/lib/redhillonrails_core/active_record/connection_adapters/mysql_adapter_fixes.rb +22 -0
 - data/lib/redhillonrails_core/active_record/connection_adapters/schema_statements.rb +16 -0
 - data/lib/redhillonrails_core/active_record/connection_adapters/sqlite3_adapter.rb +8 -0
 - data/lib/redhillonrails_core/active_record/connection_adapters/table_definition.rb +3 -1
 - data/lib/redhillonrails_core/version.rb +1 -1
 - data/redhillonrails_core.gemspec +2 -1
 - data/spec/connections/mysql/connection.rb +2 -3
 - data/spec/connections/mysql2/connection.rb +2 -2
 - data/spec/connections/postgresql/connection.rb +1 -1
 - data/spec/foreign_key_definition_spec.rb +31 -2
 - data/spec/foreign_key_spec.rb +15 -2
 - data/spec/table_definition_spec.rb +28 -0
 - data/spec/view_spec.rb +41 -0
 - metadata +93 -100
 
    
        data/.gitignore
    CHANGED
    
    
    
        data/CHANGELOG
    CHANGED
    
    
    
        data/Gemfile.lock
    CHANGED
    
    | 
         @@ -1,29 +1,30 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            PATH
         
     | 
| 
       2 
2 
     | 
    
         
             
              remote: .
         
     | 
| 
       3 
3 
     | 
    
         
             
              specs:
         
     | 
| 
       4 
     | 
    
         
            -
                redhillonrails_core (1. 
     | 
| 
      
 4 
     | 
    
         
            +
                redhillonrails_core (1.2.0)
         
     | 
| 
       5 
5 
     | 
    
         
             
                  activerecord (>= 2)
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
7 
     | 
    
         
             
            GEM
         
     | 
| 
       8 
8 
     | 
    
         
             
              remote: http://rubygems.org/
         
     | 
| 
       9 
9 
     | 
    
         
             
              specs:
         
     | 
| 
       10 
     | 
    
         
            -
                activemodel (3.0. 
     | 
| 
       11 
     | 
    
         
            -
                  activesupport (= 3.0. 
     | 
| 
      
 10 
     | 
    
         
            +
                activemodel (3.0.9)
         
     | 
| 
      
 11 
     | 
    
         
            +
                  activesupport (= 3.0.9)
         
     | 
| 
       12 
12 
     | 
    
         
             
                  builder (~> 2.1.2)
         
     | 
| 
       13 
     | 
    
         
            -
                  i18n (~> 0. 
     | 
| 
       14 
     | 
    
         
            -
                activerecord (3.0. 
     | 
| 
       15 
     | 
    
         
            -
                  activemodel (= 3.0. 
     | 
| 
       16 
     | 
    
         
            -
                  activesupport (= 3.0. 
     | 
| 
       17 
     | 
    
         
            -
                  arel (~> 2.0. 
     | 
| 
      
 13 
     | 
    
         
            +
                  i18n (~> 0.5.0)
         
     | 
| 
      
 14 
     | 
    
         
            +
                activerecord (3.0.9)
         
     | 
| 
      
 15 
     | 
    
         
            +
                  activemodel (= 3.0.9)
         
     | 
| 
      
 16 
     | 
    
         
            +
                  activesupport (= 3.0.9)
         
     | 
| 
      
 17 
     | 
    
         
            +
                  arel (~> 2.0.10)
         
     | 
| 
       18 
18 
     | 
    
         
             
                  tzinfo (~> 0.3.23)
         
     | 
| 
       19 
     | 
    
         
            -
                activesupport (3.0. 
     | 
| 
       20 
     | 
    
         
            -
                arel (2.0. 
     | 
| 
      
 19 
     | 
    
         
            +
                activesupport (3.0.9)
         
     | 
| 
      
 20 
     | 
    
         
            +
                arel (2.0.10)
         
     | 
| 
       21 
21 
     | 
    
         
             
                builder (2.1.2)
         
     | 
| 
       22 
22 
     | 
    
         
             
                diff-lcs (1.1.2)
         
     | 
| 
       23 
23 
     | 
    
         
             
                i18n (0.5.0)
         
     | 
| 
       24 
24 
     | 
    
         
             
                mysql (2.8.1)
         
     | 
| 
       25 
     | 
    
         
            -
                mysql2 (0.2. 
     | 
| 
      
 25 
     | 
    
         
            +
                mysql2 (0.2.11)
         
     | 
| 
       26 
26 
     | 
    
         
             
                pg (0.10.1)
         
     | 
| 
      
 27 
     | 
    
         
            +
                rake (0.8.7)
         
     | 
| 
       27 
28 
     | 
    
         
             
                rspec (2.4.0)
         
     | 
| 
       28 
29 
     | 
    
         
             
                  rspec-core (~> 2.4.0)
         
     | 
| 
       29 
30 
     | 
    
         
             
                  rspec-expectations (~> 2.4.0)
         
     | 
| 
         @@ -35,16 +36,16 @@ GEM 
     | 
|
| 
       35 
36 
     | 
    
         
             
                sqlite3 (1.3.3)
         
     | 
| 
       36 
37 
     | 
    
         
             
                sqlite3-ruby (1.3.3)
         
     | 
| 
       37 
38 
     | 
    
         
             
                  sqlite3 (>= 1.3.3)
         
     | 
| 
       38 
     | 
    
         
            -
                tzinfo (0.3. 
     | 
| 
      
 39 
     | 
    
         
            +
                tzinfo (0.3.29)
         
     | 
| 
       39 
40 
     | 
    
         | 
| 
       40 
41 
     | 
    
         
             
            PLATFORMS
         
     | 
| 
       41 
42 
     | 
    
         
             
              ruby
         
     | 
| 
       42 
43 
     | 
    
         | 
| 
       43 
44 
     | 
    
         
             
            DEPENDENCIES
         
     | 
| 
       44 
     | 
    
         
            -
              activerecord (>= 2)
         
     | 
| 
       45 
45 
     | 
    
         
             
              mysql
         
     | 
| 
       46 
     | 
    
         
            -
              mysql2
         
     | 
| 
      
 46 
     | 
    
         
            +
              mysql2 (~> 0.2.11)
         
     | 
| 
       47 
47 
     | 
    
         
             
              pg
         
     | 
| 
      
 48 
     | 
    
         
            +
              rake
         
     | 
| 
       48 
49 
     | 
    
         
             
              redhillonrails_core!
         
     | 
| 
       49 
50 
     | 
    
         
             
              rspec (~> 2.4.0)
         
     | 
| 
       50 
51 
     | 
    
         
             
              sqlite3-ruby (~> 1.3.1)
         
     | 
    
        data/README.rdoc
    CHANGED
    
    | 
         @@ -162,7 +162,12 @@ First you have to fetch sources from github as specs are not inculded in a gem. 
     | 
|
| 
       162 
162 
     | 
    
         
             
              $ bundle exec rake spec
         
     | 
| 
       163 
163 
     | 
    
         | 
| 
       164 
164 
     | 
    
         
             
              # to run postgresql specs only
         
     | 
| 
       165 
     | 
    
         
            -
              $ bundle exec rake spec postgresql:spec 
     | 
| 
      
 165 
     | 
    
         
            +
              $ bundle exec rake spec postgresql:spec
         
     | 
| 
      
 166 
     | 
    
         
            +
             
     | 
| 
      
 167 
     | 
    
         
            +
            === Support
         
     | 
| 
      
 168 
     | 
    
         
            +
             
     | 
| 
      
 169 
     | 
    
         
            +
            Don't hesitate to ask questions on our mailing list.
         
     | 
| 
      
 170 
     | 
    
         
            +
            http://groups.google.com/group/rails-db
         
     | 
| 
       166 
171 
     | 
    
         | 
| 
       167 
172 
     | 
    
         
             
            === Contributors
         
     | 
| 
       168 
173 
     | 
    
         | 
| 
         @@ -170,4 +175,5 @@ First you have to fetch sources from github as specs are not inculded in a gem. 
     | 
|
| 
       170 
175 
     | 
    
         
             
            * François Beausoleil - https://github.com/francois
         
     | 
| 
       171 
176 
     | 
    
         
             
            * Greg Barnett
         
     | 
| 
       172 
177 
     | 
    
         
             
            * Romulo A. Ceccon - https://github.com/romuloceccon
         
     | 
| 
       173 
     | 
    
         
            -
             
     | 
| 
      
 178 
     | 
    
         
            +
            * Laurynas Butkus - http://lauris.night.lt
         
     | 
| 
      
 179 
     | 
    
         
            +
            * Fernando García Samblas - http://nando.lacoctelera.com
         
     | 
    
        data/Rakefile
    CHANGED
    
    | 
         @@ -19,15 +19,16 @@ end 
     | 
|
| 
       19 
19 
     | 
    
         | 
| 
       20 
20 
     | 
    
         
             
            task :default => :spec
         
     | 
| 
       21 
21 
     | 
    
         | 
| 
      
 22 
     | 
    
         
            +
            DBNAME = 'rhcore_test'
         
     | 
| 
       22 
23 
     | 
    
         
             
            namespace :postgresql do
         
     | 
| 
       23 
24 
     | 
    
         
             
              desc 'Build the PostgreSQL test databases'
         
     | 
| 
       24 
25 
     | 
    
         
             
              task :build_databases do
         
     | 
| 
       25 
     | 
    
         
            -
                %x( createdb -E UTF8  
     | 
| 
      
 26 
     | 
    
         
            +
                %x( createdb -E UTF8 #{DBNAME} )
         
     | 
| 
       26 
27 
     | 
    
         
             
              end
         
     | 
| 
       27 
28 
     | 
    
         | 
| 
       28 
29 
     | 
    
         
             
              desc 'Drop the PostgreSQL test databases'
         
     | 
| 
       29 
30 
     | 
    
         
             
              task :drop_databases do
         
     | 
| 
       30 
     | 
    
         
            -
                %x( dropdb  
     | 
| 
      
 31 
     | 
    
         
            +
                %x( dropdb #{DBNAME} )
         
     | 
| 
       31 
32 
     | 
    
         
             
              end
         
     | 
| 
       32 
33 
     | 
    
         | 
| 
       33 
34 
     | 
    
         
             
              desc 'Rebuild the PostgreSQL test databases'
         
     | 
| 
         @@ -38,16 +39,16 @@ task :build_postgresql_databases => 'postgresql:build_databases' 
     | 
|
| 
       38 
39 
     | 
    
         
             
            task :drop_postgresql_databases => 'postgresql:drop_databases'
         
     | 
| 
       39 
40 
     | 
    
         
             
            task :rebuild_postgresql_databases => 'postgresql:rebuild_databases'
         
     | 
| 
       40 
41 
     | 
    
         | 
| 
       41 
     | 
    
         
            -
            MYSQL_DB_USER = ' 
     | 
| 
      
 42 
     | 
    
         
            +
            MYSQL_DB_USER = 'rhcore'
         
     | 
| 
       42 
43 
     | 
    
         
             
            namespace :mysql do
         
     | 
| 
       43 
44 
     | 
    
         
             
              desc 'Build the MySQL test databases'
         
     | 
| 
       44 
45 
     | 
    
         
             
              task :build_databases do
         
     | 
| 
       45 
     | 
    
         
            -
                %x( echo "create DATABASE  
     | 
| 
      
 46 
     | 
    
         
            +
                %x( echo "create DATABASE #{DBNAME} DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_unicode_ci " | mysql --user=#{MYSQL_DB_USER})
         
     | 
| 
       46 
47 
     | 
    
         
             
              end
         
     | 
| 
       47 
48 
     | 
    
         | 
| 
       48 
49 
     | 
    
         
             
              desc 'Drop the MySQL test databases'
         
     | 
| 
       49 
50 
     | 
    
         
             
              task :drop_databases do
         
     | 
| 
       50 
     | 
    
         
            -
                %x( mysqladmin --user=#{MYSQL_DB_USER} -f drop  
     | 
| 
      
 51 
     | 
    
         
            +
                %x( mysqladmin --user=#{MYSQL_DB_USER} -f drop #{DBNAME} )
         
     | 
| 
       51 
52 
     | 
    
         
             
              end
         
     | 
| 
       52 
53 
     | 
    
         | 
| 
       53 
54 
     | 
    
         
             
              desc 'Rebuild the MySQL test databases'
         
     | 
    
        data/lib/redhillonrails_core.rb
    CHANGED
    
    | 
         @@ -15,10 +15,12 @@ require 'redhillonrails_core/active_record/connection_adapters/foreign_key_defin 
     | 
|
| 
       15 
15 
     | 
    
         
             
            require 'redhillonrails_core/active_record/connection_adapters/column'
         
     | 
| 
       16 
16 
     | 
    
         
             
            require 'redhillonrails_core/active_record/connection_adapters/index_definition'
         
     | 
| 
       17 
17 
     | 
    
         
             
            require 'redhillonrails_core/active_record/connection_adapters/mysql_column'
         
     | 
| 
      
 18 
     | 
    
         
            +
            require 'redhillonrails_core/active_record/connection_adapters/schema_statements'
         
     | 
| 
       18 
19 
     | 
    
         
             
            require 'redhillonrails_core/active_record/connection_adapters/table_definition'
         
     | 
| 
       19 
20 
     | 
    
         | 
| 
       20 
21 
     | 
    
         
             
            module RedhillonrailsCore::ActiveRecord::ConnectionAdapters
         
     | 
| 
       21 
22 
     | 
    
         
             
              autoload :MysqlAdapter, 'redhillonrails_core/active_record/connection_adapters/mysql_adapter'
         
     | 
| 
      
 23 
     | 
    
         
            +
              autoload :MysqlAdapterFixes, 'redhillonrails_core/active_record/connection_adapters/mysql_adapter_fixes'
         
     | 
| 
       22 
24 
     | 
    
         
             
              autoload :PostgresqlAdapter, 'redhillonrails_core/active_record/connection_adapters/postgresql_adapter'
         
     | 
| 
       23 
25 
     | 
    
         
             
              autoload :Sqlite3Adapter, 'redhillonrails_core/active_record/connection_adapters/sqlite3_adapter'
         
     | 
| 
       24 
26 
     | 
    
         
             
            end
         
     | 
| 
         @@ -30,3 +32,4 @@ ActiveRecord::ConnectionAdapters::IndexDefinition.send(:include, RedhillonrailsC 
     | 
|
| 
       30 
32 
     | 
    
         
             
            ActiveRecord::ConnectionAdapters::TableDefinition.send(:include, RedhillonrailsCore::ActiveRecord::ConnectionAdapters::TableDefinition)
         
     | 
| 
       31 
33 
     | 
    
         
             
            ActiveRecord::ConnectionAdapters::Column.send(:include, RedhillonrailsCore::ActiveRecord::ConnectionAdapters::Column)
         
     | 
| 
       32 
34 
     | 
    
         
             
            ActiveRecord::ConnectionAdapters::AbstractAdapter.send(:include, RedhillonrailsCore::ActiveRecord::ConnectionAdapters::AbstractAdapter)
         
     | 
| 
      
 35 
     | 
    
         
            +
            ActiveRecord::ConnectionAdapters::SchemaStatements.send(:include, RedhillonrailsCore::ActiveRecord::ConnectionAdapters::SchemaStatements)
         
     | 
| 
         @@ -43,7 +43,7 @@ module RedhillonrailsCore 
     | 
|
| 
       43 
43 
     | 
    
         
             
                    end
         
     | 
| 
       44 
44 
     | 
    
         | 
| 
       45 
45 
     | 
    
         
             
                    def pluralized_table_name(table_name)
         
     | 
| 
       46 
     | 
    
         
            -
                      ActiveRecord::Base.pluralize_table_names ? table_name.to_s.pluralize : table_name
         
     | 
| 
      
 46 
     | 
    
         
            +
                      ::ActiveRecord::Base.pluralize_table_names ? table_name.to_s.pluralize : table_name
         
     | 
| 
       47 
47 
     | 
    
         
             
                    end
         
     | 
| 
       48 
48 
     | 
    
         | 
| 
       49 
49 
     | 
    
         
             
                    def indexes
         
     | 
| 
         @@ -53,11 +53,11 @@ module RedhillonrailsCore 
     | 
|
| 
       53 
53 
     | 
    
         | 
| 
       54 
54 
     | 
    
         
             
                    def add_foreign_key(table_name, column_names, references_table_name, references_column_names, options = {})
         
     | 
| 
       55 
55 
     | 
    
         
             
                      foreign_key = ForeignKeyDefinition.new(options[:name], table_name, column_names, ::ActiveRecord::Migrator.proper_table_name(references_table_name), references_column_names, options[:on_update], options[:on_delete], options[:deferrable])
         
     | 
| 
       56 
     | 
    
         
            -
                      execute "ALTER TABLE #{table_name} ADD #{foreign_key}"
         
     | 
| 
      
 56 
     | 
    
         
            +
                      execute "ALTER TABLE #{quote_table_name(table_name)} ADD #{foreign_key}"
         
     | 
| 
       57 
57 
     | 
    
         
             
                    end
         
     | 
| 
       58 
58 
     | 
    
         | 
| 
       59 
59 
     | 
    
         
             
                    def remove_foreign_key(table_name, foreign_key_name, options = {})
         
     | 
| 
       60 
     | 
    
         
            -
                      execute "ALTER TABLE #{table_name} DROP CONSTRAINT #{foreign_key_name}"
         
     | 
| 
      
 60 
     | 
    
         
            +
                      execute "ALTER TABLE #{quote_table_name(table_name)} DROP CONSTRAINT #{foreign_key_name}"
         
     | 
| 
       61 
61 
     | 
    
         
             
                    end
         
     | 
| 
       62 
62 
     | 
    
         | 
| 
       63 
63 
     | 
    
         
             
                    def drop_table_with_redhillonrails_core(name, options = {})
         
     | 
| 
         @@ -20,7 +20,14 @@ module RedhillonrailsCore 
     | 
|
| 
       20 
20 
     | 
    
         
             
                    end
         
     | 
| 
       21 
21 
     | 
    
         | 
| 
       22 
22 
     | 
    
         
             
                    def to_sql
         
     | 
| 
       23 
     | 
    
         
            -
                       
     | 
| 
      
 23 
     | 
    
         
            +
                      if name
         
     | 
| 
      
 24 
     | 
    
         
            +
                        sql = "CONSTRAINT #{name} "
         
     | 
| 
      
 25 
     | 
    
         
            +
                      elsif table_name.present?
         
     | 
| 
      
 26 
     | 
    
         
            +
                        sql = "CONSTRAINT #{table_name}_#{Array(column_names).join('_')}_fkey "
         
     | 
| 
      
 27 
     | 
    
         
            +
                      else
         
     | 
| 
      
 28 
     | 
    
         
            +
                        sql = ""
         
     | 
| 
      
 29 
     | 
    
         
            +
                      end
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
       24 
31 
     | 
    
         
             
                      sql << "FOREIGN KEY (#{quoted_column_names.join(", ")}) REFERENCES #{quoted_references_table_name} (#{quoted_references_column_names.join(", ")})"
         
     | 
| 
       25 
32 
     | 
    
         
             
                      sql << " ON UPDATE #{ACTIONS[on_update]}" if on_update
         
     | 
| 
       26 
33 
     | 
    
         
             
                      sql << " ON DELETE #{ACTIONS[on_delete]}" if on_delete
         
     | 
| 
         @@ -2,7 +2,10 @@ module RedhillonrailsCore 
     | 
|
| 
       2 
2 
     | 
    
         
             
              module ActiveRecord
         
     | 
| 
       3 
3 
     | 
    
         
             
                module ConnectionAdapters
         
     | 
| 
       4 
4 
     | 
    
         
             
                  module MysqlAdapter
         
     | 
| 
      
 5 
     | 
    
         
            +
                    include MysqlAdapterFixes
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
       5 
7 
     | 
    
         
             
                    def self.included(base)
         
     | 
| 
      
 8 
     | 
    
         
            +
                      super
         
     | 
| 
       6 
9 
     | 
    
         
             
                      base.class_eval do
         
     | 
| 
       7 
10 
     | 
    
         
             
                        alias_method_chain :remove_column, :redhillonrails_core
         
     | 
| 
       8 
11 
     | 
    
         
             
                      end
         
     | 
| 
         @@ -72,6 +75,16 @@ module RedhillonrailsCore 
     | 
|
| 
       72 
75 
     | 
    
         
             
                      foreign_keys
         
     | 
| 
       73 
76 
     | 
    
         
             
                    end
         
     | 
| 
       74 
77 
     | 
    
         | 
| 
      
 78 
     | 
    
         
            +
                    def views(name = nil)
         
     | 
| 
      
 79 
     | 
    
         
            +
                      views = []
         
     | 
| 
      
 80 
     | 
    
         
            +
                      execute("SHOW FULL TABLES WHERE TABLE_TYPE='VIEW'", name).each { |row| views << row[0] }
         
     | 
| 
      
 81 
     | 
    
         
            +
                      views
         
     | 
| 
      
 82 
     | 
    
         
            +
                    end
         
     | 
| 
      
 83 
     | 
    
         
            +
             
     | 
| 
      
 84 
     | 
    
         
            +
                    def view_definition(view_name, name = nil)
         
     | 
| 
      
 85 
     | 
    
         
            +
                      select_one("SHOW CREATE VIEW #{quote_table_name(view_name)}", name)["Create View"]
         
     | 
| 
      
 86 
     | 
    
         
            +
                    end
         
     | 
| 
      
 87 
     | 
    
         
            +
             
     | 
| 
       75 
88 
     | 
    
         
             
                  end
         
     | 
| 
       76 
89 
     | 
    
         
             
                end
         
     | 
| 
       77 
90 
     | 
    
         
             
              end
         
     | 
| 
         @@ -0,0 +1,22 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module RedhillonrailsCore
         
     | 
| 
      
 2 
     | 
    
         
            +
              module ActiveRecord
         
     | 
| 
      
 3 
     | 
    
         
            +
                module ConnectionAdapters
         
     | 
| 
      
 4 
     | 
    
         
            +
                  module MysqlAdapterFixes
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
                    # Starting from mysql2 0.2.7 Mysql2IndexDefinition is used.
         
     | 
| 
      
 7 
     | 
    
         
            +
                    # In 0.2 line it is inculuded in gem itself.
         
     | 
| 
      
 8 
     | 
    
         
            +
                    # Starting from version 0.3 it has gone to active_record mysql adapter
         
     | 
| 
      
 9 
     | 
    
         
            +
                    # We have to additionally monkey patch it.
         
     | 
| 
      
 10 
     | 
    
         
            +
                    def self.included(base)
         
     | 
| 
      
 11 
     | 
    
         
            +
                      super
         
     | 
| 
      
 12 
     | 
    
         
            +
                      if defined?(::ActiveRecord::ConnectionAdapters::Mysql2IndexDefinition)
         
     | 
| 
      
 13 
     | 
    
         
            +
                        ::ActiveRecord::ConnectionAdapters::Mysql2IndexDefinition.class_eval do
         
     | 
| 
      
 14 
     | 
    
         
            +
                          include ::RedhillonrailsCore::ActiveRecord::ConnectionAdapters::IndexDefinition
         
     | 
| 
      
 15 
     | 
    
         
            +
                        end
         
     | 
| 
      
 16 
     | 
    
         
            +
                      end
         
     | 
| 
      
 17 
     | 
    
         
            +
                    end
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
                  end
         
     | 
| 
      
 20 
     | 
    
         
            +
                end
         
     | 
| 
      
 21 
     | 
    
         
            +
              end
         
     | 
| 
      
 22 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,16 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module RedhillonrailsCore::ActiveRecord::ConnectionAdapters
         
     | 
| 
      
 2 
     | 
    
         
            +
              module SchemaStatements
         
     | 
| 
      
 3 
     | 
    
         
            +
                def self.included(base)
         
     | 
| 
      
 4 
     | 
    
         
            +
                  base.module_eval do
         
     | 
| 
      
 5 
     | 
    
         
            +
                    alias_method_chain :create_table, :redhillonrails_core
         
     | 
| 
      
 6 
     | 
    
         
            +
                  end
         
     | 
| 
      
 7 
     | 
    
         
            +
                end
         
     | 
| 
      
 8 
     | 
    
         
            +
              
         
     | 
| 
      
 9 
     | 
    
         
            +
                def create_table_with_redhillonrails_core(name, options = {})
         
     | 
| 
      
 10 
     | 
    
         
            +
                  create_table_without_redhillonrails_core(name, options) do |table_definition|
         
     | 
| 
      
 11 
     | 
    
         
            +
                    table_definition.name = name
         
     | 
| 
      
 12 
     | 
    
         
            +
                    yield table_definition if block_given?
         
     | 
| 
      
 13 
     | 
    
         
            +
                  end
         
     | 
| 
      
 14 
     | 
    
         
            +
                end
         
     | 
| 
      
 15 
     | 
    
         
            +
              end
         
     | 
| 
      
 16 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -59,6 +59,14 @@ module RedhillonrailsCore 
     | 
|
| 
       59 
59 
     | 
    
         
             
                      load_foreign_keys("to_table_name", table_name, name)
         
     | 
| 
       60 
60 
     | 
    
         
             
                    end
         
     | 
| 
       61 
61 
     | 
    
         | 
| 
      
 62 
     | 
    
         
            +
                    def views(name = nil)
         
     | 
| 
      
 63 
     | 
    
         
            +
                      execute("SELECT name FROM sqlite_master WHERE type = 'view'").collect { |definition| definition["name"] }
         
     | 
| 
      
 64 
     | 
    
         
            +
                    end
         
     | 
| 
      
 65 
     | 
    
         
            +
             
     | 
| 
      
 66 
     | 
    
         
            +
                    def view_definition(view_name, name = nil)
         
     | 
| 
      
 67 
     | 
    
         
            +
                      select_one("SELECT sql FROM sqlite_master WHERE type = 'view' AND name = #{quote_table_name(view_name)}")["sql"]
         
     | 
| 
      
 68 
     | 
    
         
            +
                    end
         
     | 
| 
      
 69 
     | 
    
         
            +
             
     | 
| 
       62 
70 
     | 
    
         
             
                    private
         
     | 
| 
       63 
71 
     | 
    
         | 
| 
       64 
72 
     | 
    
         
             
                    def quoted_columns(columns)
         
     | 
| 
         @@ -16,7 +16,9 @@ module RedhillonrailsCore 
     | 
|
| 
       16 
16 
     | 
    
         
             
                    end
         
     | 
| 
       17 
17 
     | 
    
         | 
| 
       18 
18 
     | 
    
         
             
                    def foreign_key(column_names, references_table_name, references_column_names, options = {})
         
     | 
| 
       19 
     | 
    
         
            -
                      @foreign_keys << ForeignKeyDefinition.new(options[:name],  
     | 
| 
      
 19 
     | 
    
         
            +
                      @foreign_keys << ForeignKeyDefinition.new(options[:name], name, column_names,
         
     | 
| 
      
 20 
     | 
    
         
            +
                          ::ActiveRecord::Migrator.proper_table_name(references_table_name), references_column_names,
         
     | 
| 
      
 21 
     | 
    
         
            +
                          options[:on_update], options[:on_delete], options[:deferrable])
         
     | 
| 
       20 
22 
     | 
    
         
             
                      self
         
     | 
| 
       21 
23 
     | 
    
         
             
                    end
         
     | 
| 
       22 
24 
     | 
    
         | 
    
        data/redhillonrails_core.gemspec
    CHANGED
    
    | 
         @@ -24,6 +24,7 @@ Gem::Specification.new do |s| 
     | 
|
| 
       24 
24 
     | 
    
         
             
              s.add_development_dependency("rspec", "~> 2.4.0")
         
     | 
| 
       25 
25 
     | 
    
         
             
              s.add_development_dependency("pg")
         
     | 
| 
       26 
26 
     | 
    
         
             
              s.add_development_dependency("mysql")
         
     | 
| 
       27 
     | 
    
         
            -
              s.add_development_dependency("mysql2")
         
     | 
| 
      
 27 
     | 
    
         
            +
              s.add_development_dependency("mysql2", "~> 0.2.11")
         
     | 
| 
       28 
28 
     | 
    
         
             
              s.add_development_dependency("sqlite3-ruby", "~> 1.3.1")
         
     | 
| 
      
 29 
     | 
    
         
            +
              s.add_development_dependency("rake")
         
     | 
| 
       29 
30 
     | 
    
         
             
            end
         
     | 
| 
         @@ -6,13 +6,12 @@ ActiveRecord::Base.logger = Logger.new("debug.log") 
     | 
|
| 
       6 
6 
     | 
    
         
             
            ActiveRecord::Base.configurations = {
         
     | 
| 
       7 
7 
     | 
    
         
             
              'redhillonrails' => {
         
     | 
| 
       8 
8 
     | 
    
         
             
                :adapter => 'mysql',
         
     | 
| 
       9 
     | 
    
         
            -
                :database => ' 
     | 
| 
       10 
     | 
    
         
            -
                :username => ' 
     | 
| 
      
 9 
     | 
    
         
            +
                :database => 'rhcore_test',
         
     | 
| 
      
 10 
     | 
    
         
            +
                :username => 'rhcore',
         
     | 
| 
       11 
11 
     | 
    
         
             
                :encoding => 'utf8',
         
     | 
| 
       12 
12 
     | 
    
         
             
                :socket => '/var/run/mysqld/mysqld.sock',
         
     | 
| 
       13 
13 
     | 
    
         
             
                :min_messages => 'warning'
         
     | 
| 
       14 
14 
     | 
    
         
             
              }
         
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
15 
     | 
    
         
             
            }
         
     | 
| 
       17 
16 
     | 
    
         | 
| 
       18 
17 
     | 
    
         
             
            ActiveRecord::Base.establish_connection 'redhillonrails'
         
     | 
| 
         @@ -6,8 +6,8 @@ ActiveRecord::Base.logger = Logger.new("debug.log") 
     | 
|
| 
       6 
6 
     | 
    
         
             
            ActiveRecord::Base.configurations = {
         
     | 
| 
       7 
7 
     | 
    
         
             
              'redhillonrails' => {
         
     | 
| 
       8 
8 
     | 
    
         
             
                :adapter => 'mysql2',
         
     | 
| 
       9 
     | 
    
         
            -
                :database => ' 
     | 
| 
       10 
     | 
    
         
            -
                :username => ' 
     | 
| 
      
 9 
     | 
    
         
            +
                :database => 'rhcore_test',
         
     | 
| 
      
 10 
     | 
    
         
            +
                :username => 'rhcore',
         
     | 
| 
       11 
11 
     | 
    
         
             
                :encoding => 'utf8',
         
     | 
| 
       12 
12 
     | 
    
         
             
                :socket => '/var/run/mysqld/mysqld.sock',
         
     | 
| 
       13 
13 
     | 
    
         
             
                :min_messages => 'warning'
         
     | 
| 
         @@ -4,12 +4,36 @@ require 'models/user' 
     | 
|
| 
       4 
4 
     | 
    
         | 
| 
       5 
5 
     | 
    
         
             
            describe "Foreign Key definition" do
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
     | 
    
         
            -
              let(: 
     | 
| 
      
 7 
     | 
    
         
            +
              let(:fk_definition) { RedhillonrailsCore::ActiveRecord::ConnectionAdapters::ForeignKeyDefinition }
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
       9 
9 
     | 
    
         
             
              it "it is dumped to sql with quoted values" do
         
     | 
| 
       10 
     | 
    
         
            -
                definition 
     | 
| 
      
 10 
     | 
    
         
            +
                definition = fk_definition.new("named_fkey", :posts, :user, :users, :id)
         
     | 
| 
      
 11 
     | 
    
         
            +
                definition.to_sql.should == foreign_key_sql("named_fkey")
         
     | 
| 
       11 
12 
     | 
    
         
             
              end
         
     | 
| 
       12 
13 
     | 
    
         | 
| 
      
 14 
     | 
    
         
            +
              context "when name isn't given" do
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
                it "builds name from table and column name" do
         
     | 
| 
      
 17 
     | 
    
         
            +
                  definition = fk_definition.new(nil, :posts, :user, :users, :id)
         
     | 
| 
      
 18 
     | 
    
         
            +
                  definition.to_sql.should == foreign_key_sql("posts_user_fkey")
         
     | 
| 
      
 19 
     | 
    
         
            +
                end
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
                it "build name with column joined with underscore for compsite key" do
         
     | 
| 
      
 22 
     | 
    
         
            +
                  definition = fk_definition.new(nil, :orders, [:inquiry_id, :user_id], :inquiries, [:id, :user_id])
         
     | 
| 
      
 23 
     | 
    
         
            +
                  expected_definition = "CONSTRAINT orders_inquiry_id_user_id_fkey FOREIGN KEY \
         
     | 
| 
      
 24 
     | 
    
         
            +
                    (#{quote_column_name("inquiry_id")}, #{quote_column_name("user_id")}) \
         
     | 
| 
      
 25 
     | 
    
         
            +
                    REFERENCES #{quote_table_name("inquiries")} (#{quote_column_name("id")}, #{quote_column_name("user_id")})".squeeze(" ")
         
     | 
| 
      
 26 
     | 
    
         
            +
                  definition.to_sql.should == expected_definition
         
     | 
| 
      
 27 
     | 
    
         
            +
                end
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
              end
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
              it "does not include name if no name or table_name is given" do
         
     | 
| 
      
 32 
     | 
    
         
            +
                definition = fk_definition.new(nil, nil, :user, :users, :id)
         
     | 
| 
      
 33 
     | 
    
         
            +
                definition.to_sql.should == foreign_key_sql(nil)
         
     | 
| 
      
 34 
     | 
    
         
            +
              end
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
              protected
         
     | 
| 
       13 
37 
     | 
    
         
             
              def quote_table_name(table)
         
     | 
| 
       14 
38 
     | 
    
         
             
                ActiveRecord::Base.connection.quote_table_name(table)
         
     | 
| 
       15 
39 
     | 
    
         
             
              end
         
     | 
| 
         @@ -18,4 +42,9 @@ describe "Foreign Key definition" do 
     | 
|
| 
       18 
42 
     | 
    
         
             
                ActiveRecord::Base.connection.quote_column_name(column)
         
     | 
| 
       19 
43 
     | 
    
         
             
              end
         
     | 
| 
       20 
44 
     | 
    
         | 
| 
      
 45 
     | 
    
         
            +
              def foreign_key_sql(fk_name)
         
     | 
| 
      
 46 
     | 
    
         
            +
                [("CONSTRAINT #{fk_name}" if fk_name), "FOREIGN KEY (#{quote_column_name('user')}) "\
         
     | 
| 
      
 47 
     | 
    
         
            +
                    "REFERENCES #{quote_table_name('users')} (#{quote_column_name('id')})"].compact.join(' ')
         
     | 
| 
      
 48 
     | 
    
         
            +
              end
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
       21 
50 
     | 
    
         
             
            end
         
     | 
    
        data/spec/foreign_key_spec.rb
    CHANGED
    
    | 
         @@ -10,7 +10,7 @@ describe "Foreign Key" do 
     | 
|
| 
       10 
10 
     | 
    
         | 
| 
       11 
11 
     | 
    
         
             
              context "when is added", "posts(author_id)" do
         
     | 
| 
       12 
12 
     | 
    
         | 
| 
       13 
     | 
    
         
            -
                before(:each) do 
     | 
| 
      
 13 
     | 
    
         
            +
                before(:each) do
         
     | 
| 
       14 
14 
     | 
    
         
             
                  add_foreign_key(:posts, :author_id, :users, :id, :on_update => :cascade, :on_delete => :restrict)
         
     | 
| 
       15 
15 
     | 
    
         
             
                end
         
     | 
| 
       16 
16 
     | 
    
         | 
| 
         @@ -60,7 +60,7 @@ describe "Foreign Key" do 
     | 
|
| 
       60 
60 
     | 
    
         
             
                it "is no longer available in Post.foreign_keys" do
         
     | 
| 
       61 
61 
     | 
    
         
             
                  Comment.foreign_keys.collect(&:column_names).should_not include(%w[post_id])
         
     | 
| 
       62 
62 
     | 
    
         
             
                end
         
     | 
| 
       63 
     | 
    
         
            -
             
     | 
| 
      
 63 
     | 
    
         
            +
             
     | 
| 
       64 
64 
     | 
    
         
             
                it "is no longer available in User.reverse_foreign_keys" do
         
     | 
| 
       65 
65 
     | 
    
         
             
                  Post.reverse_foreign_keys.collect(&:column_names).should_not include(%w[post_id])
         
     | 
| 
       66 
66 
     | 
    
         
             
                end
         
     | 
| 
         @@ -78,6 +78,19 @@ describe "Foreign Key" do 
     | 
|
| 
       78 
78 
     | 
    
         | 
| 
       79 
79 
     | 
    
         
             
              end
         
     | 
| 
       80 
80 
     | 
    
         | 
| 
      
 81 
     | 
    
         
            +
              it "shouldn't raise when restrited keyword in table name is used" do
         
     | 
| 
      
 82 
     | 
    
         
            +
                migration.suppress_messages do
         
     | 
| 
      
 83 
     | 
    
         
            +
                  migration.create_table :select, :force => true do |t|
         
     | 
| 
      
 84 
     | 
    
         
            +
                    t.integer :post_id
         
     | 
| 
      
 85 
     | 
    
         
            +
                  end
         
     | 
| 
      
 86 
     | 
    
         
            +
                end
         
     | 
| 
      
 87 
     | 
    
         
            +
                expect do
         
     | 
| 
      
 88 
     | 
    
         
            +
                  add_foreign_key(:select, :post_id, :posts, :id, :name => "test_fk")
         
     | 
| 
      
 89 
     | 
    
         
            +
                  remove_foreign_key(:select,  "test_fk")
         
     | 
| 
      
 90 
     | 
    
         
            +
                end.should_not raise_error(Exception)
         
     | 
| 
      
 91 
     | 
    
         
            +
                migration.suppress_messages { migration.drop_table :select }
         
     | 
| 
      
 92 
     | 
    
         
            +
              end
         
     | 
| 
      
 93 
     | 
    
         
            +
             
     | 
| 
       81 
94 
     | 
    
         
             
              protected
         
     | 
| 
       82 
95 
     | 
    
         
             
              def add_foreign_key(*args)
         
     | 
| 
       83 
96 
     | 
    
         
             
                migration.suppress_messages do
         
     | 
| 
         @@ -0,0 +1,28 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            require 'models/post'
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            describe "Table definition" do
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
              let(:connection) { ::ActiveRecord::Migration.connection }
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
              unless ::ActiveRecord::Base.connection.class.include?(
         
     | 
| 
      
 10 
     | 
    
         
            +
                  RedhillonrailsCore::ActiveRecord::ConnectionAdapters::Sqlite3Adapter)
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
                it "sets table_name of foreign key definition when running migrations" do
         
     | 
| 
      
 13 
     | 
    
         
            +
                  connection.create_table :votes, :force => true do |t|
         
     | 
| 
      
 14 
     | 
    
         
            +
                    t.integer :kind
         
     | 
| 
      
 15 
     | 
    
         
            +
                    t.integer :application_id
         
     | 
| 
      
 16 
     | 
    
         
            +
                    t.integer :user_id
         
     | 
| 
      
 17 
     | 
    
         
            +
                    t.foreign_key :user_id, :users, :id
         
     | 
| 
      
 18 
     | 
    
         
            +
                  end
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
                  Vote = Class.new(ActiveRecord::Base)
         
     | 
| 
      
 21 
     | 
    
         
            +
                  Vote.foreign_keys.size.should == 1
         
     | 
| 
      
 22 
     | 
    
         
            +
                  Vote.foreign_keys[0].table_name.should == 'votes'
         
     | 
| 
      
 23 
     | 
    
         
            +
                  connection.drop_table :votes
         
     | 
| 
      
 24 
     | 
    
         
            +
                end
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
              end
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
            end
         
     | 
    
        data/spec/view_spec.rb
    ADDED
    
    | 
         @@ -0,0 +1,41 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            require 'models/user'
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            describe "views" do
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
              let(:migration) { ::ActiveRecord::Migration }
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
              let(:dump) do
         
     | 
| 
      
 10 
     | 
    
         
            +
                stream = StringIO.new
         
     | 
| 
      
 11 
     | 
    
         
            +
                ActiveRecord::SchemaDumper.ignore_tables = %w[users comments]
         
     | 
| 
      
 12 
     | 
    
         
            +
                ActiveRecord::SchemaDumper.dump(ActiveRecord::Base.connection, stream)
         
     | 
| 
      
 13 
     | 
    
         
            +
                stream.string
         
     | 
| 
      
 14 
     | 
    
         
            +
              end
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
              let(:view_statement) { "SELECT * FROM users where deleted_at IS NULL" }
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
              it "should return views" do
         
     | 
| 
      
 19 
     | 
    
         
            +
                with_view "active_users", view_statement do
         
     | 
| 
      
 20 
     | 
    
         
            +
                  migration.connection.views.should have(1).view
         
     | 
| 
      
 21 
     | 
    
         
            +
                end
         
     | 
| 
      
 22 
     | 
    
         
            +
              end
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
              it "should be included in schema dump" do
         
     | 
| 
      
 25 
     | 
    
         
            +
                with_view "active_users", view_statement do
         
     | 
| 
      
 26 
     | 
    
         
            +
                  dump.should match /active_users/
         
     | 
| 
      
 27 
     | 
    
         
            +
                   # I don't test view definition as it is transformed to different form
         
     | 
| 
      
 28 
     | 
    
         
            +
                   # comparing to original statement
         
     | 
| 
      
 29 
     | 
    
         
            +
                end
         
     | 
| 
      
 30 
     | 
    
         
            +
              end
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
              protected
         
     | 
| 
      
 33 
     | 
    
         
            +
              def with_view(name, definition)
         
     | 
| 
      
 34 
     | 
    
         
            +
                migration.suppress_messages do
         
     | 
| 
      
 35 
     | 
    
         
            +
                  migration.create_view name, definition
         
     | 
| 
      
 36 
     | 
    
         
            +
                  yield
         
     | 
| 
      
 37 
     | 
    
         
            +
                  migration.drop_view name
         
     | 
| 
      
 38 
     | 
    
         
            +
                end
         
     | 
| 
      
 39 
     | 
    
         
            +
              end
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
            end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,108 +1,102 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            --- !ruby/object:Gem::Specification 
     | 
| 
      
 1 
     | 
    
         
            +
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: redhillonrails_core
         
     | 
| 
       3 
     | 
    
         
            -
            version: !ruby/object:Gem::Version 
     | 
| 
       4 
     | 
    
         
            -
               
     | 
| 
       5 
     | 
    
         
            -
               
     | 
| 
       6 
     | 
    
         
            -
              - 1
         
     | 
| 
       7 
     | 
    
         
            -
              - 1
         
     | 
| 
       8 
     | 
    
         
            -
              - 3
         
     | 
| 
       9 
     | 
    
         
            -
              version: 1.1.3
         
     | 
| 
      
 3 
     | 
    
         
            +
            version: !ruby/object:Gem::Version
         
     | 
| 
      
 4 
     | 
    
         
            +
              version: 1.2.0
         
     | 
| 
      
 5 
     | 
    
         
            +
              prerelease: 
         
     | 
| 
       10 
6 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       11 
     | 
    
         
            -
            authors: 
     | 
| 
       12 
     | 
    
         
            -
            -  
     | 
| 
      
 7 
     | 
    
         
            +
            authors:
         
     | 
| 
      
 8 
     | 
    
         
            +
            - Michał Łomnicki
         
     | 
| 
       13 
9 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       14 
10 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       15 
11 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
            date: 2011-02-25 00:00:00 +01:00
         
     | 
| 
      
 12 
     | 
    
         
            +
            date: 2011-07-21 00:00:00.000000000 +02:00
         
     | 
| 
       18 
13 
     | 
    
         
             
            default_executable: 
         
     | 
| 
       19 
     | 
    
         
            -
            dependencies: 
     | 
| 
       20 
     | 
    
         
            -
            - !ruby/object:Gem::Dependency 
     | 
| 
      
 14 
     | 
    
         
            +
            dependencies:
         
     | 
| 
      
 15 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
       21 
16 
     | 
    
         
             
              name: activerecord
         
     | 
| 
       22 
     | 
    
         
            -
               
     | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
       24 
     | 
    
         
            -
                requirements: 
     | 
| 
       25 
     | 
    
         
            -
                - -  
     | 
| 
       26 
     | 
    
         
            -
                  - !ruby/object:Gem::Version 
     | 
| 
       27 
     | 
    
         
            -
                     
     | 
| 
       28 
     | 
    
         
            -
                    - 2
         
     | 
| 
       29 
     | 
    
         
            -
                    version: "2"
         
     | 
| 
      
 17 
     | 
    
         
            +
              requirement: &84719870 !ruby/object:Gem::Requirement
         
     | 
| 
      
 18 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 19 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 20 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
      
 21 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 22 
     | 
    
         
            +
                    version: '2'
         
     | 
| 
       30 
23 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       31 
     | 
    
         
            -
              version_requirements: *id001
         
     | 
| 
       32 
     | 
    
         
            -
            - !ruby/object:Gem::Dependency 
         
     | 
| 
       33 
     | 
    
         
            -
              name: rspec
         
     | 
| 
       34 
24 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       35 
     | 
    
         
            -
               
     | 
| 
       36 
     | 
    
         
            -
             
     | 
| 
      
 25 
     | 
    
         
            +
              version_requirements: *84719870
         
     | 
| 
      
 26 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 27 
     | 
    
         
            +
              name: rspec
         
     | 
| 
      
 28 
     | 
    
         
            +
              requirement: &84719590 !ruby/object:Gem::Requirement
         
     | 
| 
      
 29 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 30 
     | 
    
         
            +
                requirements:
         
     | 
| 
       37 
31 
     | 
    
         
             
                - - ~>
         
     | 
| 
       38 
     | 
    
         
            -
                  - !ruby/object:Gem::Version 
     | 
| 
       39 
     | 
    
         
            -
                    segments: 
         
     | 
| 
       40 
     | 
    
         
            -
                    - 2
         
     | 
| 
       41 
     | 
    
         
            -
                    - 4
         
     | 
| 
       42 
     | 
    
         
            -
                    - 0
         
     | 
| 
      
 32 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
       43 
33 
     | 
    
         
             
                    version: 2.4.0
         
     | 
| 
       44 
34 
     | 
    
         
             
              type: :development
         
     | 
| 
       45 
     | 
    
         
            -
              version_requirements: *id002
         
     | 
| 
       46 
     | 
    
         
            -
            - !ruby/object:Gem::Dependency 
         
     | 
| 
       47 
     | 
    
         
            -
              name: pg
         
     | 
| 
       48 
35 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       49 
     | 
    
         
            -
               
     | 
| 
       50 
     | 
    
         
            -
             
     | 
| 
       51 
     | 
    
         
            -
             
     | 
| 
       52 
     | 
    
         
            -
             
     | 
| 
       53 
     | 
    
         
            -
             
     | 
| 
       54 
     | 
    
         
            -
             
     | 
| 
       55 
     | 
    
         
            -
             
     | 
| 
      
 36 
     | 
    
         
            +
              version_requirements: *84719590
         
     | 
| 
      
 37 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 38 
     | 
    
         
            +
              name: pg
         
     | 
| 
      
 39 
     | 
    
         
            +
              requirement: &84719370 !ruby/object:Gem::Requirement
         
     | 
| 
      
 40 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 41 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 42 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
      
 43 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 44 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
       56 
45 
     | 
    
         
             
              type: :development
         
     | 
| 
       57 
     | 
    
         
            -
              version_requirements: *id003
         
     | 
| 
       58 
     | 
    
         
            -
            - !ruby/object:Gem::Dependency 
         
     | 
| 
       59 
     | 
    
         
            -
              name: mysql
         
     | 
| 
       60 
46 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       61 
     | 
    
         
            -
               
     | 
| 
       62 
     | 
    
         
            -
             
     | 
| 
       63 
     | 
    
         
            -
             
     | 
| 
       64 
     | 
    
         
            -
             
     | 
| 
       65 
     | 
    
         
            -
             
     | 
| 
       66 
     | 
    
         
            -
             
     | 
| 
       67 
     | 
    
         
            -
             
     | 
| 
      
 47 
     | 
    
         
            +
              version_requirements: *84719370
         
     | 
| 
      
 48 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 49 
     | 
    
         
            +
              name: mysql
         
     | 
| 
      
 50 
     | 
    
         
            +
              requirement: &84719110 !ruby/object:Gem::Requirement
         
     | 
| 
      
 51 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 52 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 53 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
      
 54 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 55 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
       68 
56 
     | 
    
         
             
              type: :development
         
     | 
| 
       69 
     | 
    
         
            -
              version_requirements: *id004
         
     | 
| 
       70 
     | 
    
         
            -
            - !ruby/object:Gem::Dependency 
         
     | 
| 
       71 
     | 
    
         
            -
              name: mysql2
         
     | 
| 
       72 
57 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       73 
     | 
    
         
            -
               
     | 
| 
       74 
     | 
    
         
            -
             
     | 
| 
       75 
     | 
    
         
            -
             
     | 
| 
       76 
     | 
    
         
            -
             
     | 
| 
       77 
     | 
    
         
            -
             
     | 
| 
       78 
     | 
    
         
            -
             
     | 
| 
       79 
     | 
    
         
            -
             
     | 
| 
      
 58 
     | 
    
         
            +
              version_requirements: *84719110
         
     | 
| 
      
 59 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 60 
     | 
    
         
            +
              name: mysql2
         
     | 
| 
      
 61 
     | 
    
         
            +
              requirement: &84718820 !ruby/object:Gem::Requirement
         
     | 
| 
      
 62 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 63 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 64 
     | 
    
         
            +
                - - ~>
         
     | 
| 
      
 65 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 66 
     | 
    
         
            +
                    version: 0.2.11
         
     | 
| 
       80 
67 
     | 
    
         
             
              type: :development
         
     | 
| 
       81 
     | 
    
         
            -
              version_requirements: *id005
         
     | 
| 
       82 
     | 
    
         
            -
            - !ruby/object:Gem::Dependency 
         
     | 
| 
       83 
     | 
    
         
            -
              name: sqlite3-ruby
         
     | 
| 
       84 
68 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       85 
     | 
    
         
            -
               
     | 
| 
       86 
     | 
    
         
            -
             
     | 
| 
      
 69 
     | 
    
         
            +
              version_requirements: *84718820
         
     | 
| 
      
 70 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 71 
     | 
    
         
            +
              name: sqlite3-ruby
         
     | 
| 
      
 72 
     | 
    
         
            +
              requirement: &84718540 !ruby/object:Gem::Requirement
         
     | 
| 
      
 73 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 74 
     | 
    
         
            +
                requirements:
         
     | 
| 
       87 
75 
     | 
    
         
             
                - - ~>
         
     | 
| 
       88 
     | 
    
         
            -
                  - !ruby/object:Gem::Version 
     | 
| 
       89 
     | 
    
         
            -
                    segments: 
         
     | 
| 
       90 
     | 
    
         
            -
                    - 1
         
     | 
| 
       91 
     | 
    
         
            -
                    - 3
         
     | 
| 
       92 
     | 
    
         
            -
                    - 1
         
     | 
| 
      
 76 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
       93 
77 
     | 
    
         
             
                    version: 1.3.1
         
     | 
| 
       94 
78 
     | 
    
         
             
              type: :development
         
     | 
| 
       95 
     | 
    
         
            -
               
     | 
| 
       96 
     | 
    
         
            -
             
     | 
| 
       97 
     | 
    
         
            -
             
     | 
| 
      
 79 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 80 
     | 
    
         
            +
              version_requirements: *84718540
         
     | 
| 
      
 81 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 82 
     | 
    
         
            +
              name: rake
         
     | 
| 
      
 83 
     | 
    
         
            +
              requirement: &84718340 !ruby/object:Gem::Requirement
         
     | 
| 
      
 84 
     | 
    
         
            +
                none: false
         
     | 
| 
      
 85 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 86 
     | 
    
         
            +
                - - ! '>='
         
     | 
| 
      
 87 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 88 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 89 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 90 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 91 
     | 
    
         
            +
              version_requirements: *84718340
         
     | 
| 
      
 92 
     | 
    
         
            +
            description: Adds support in ActiveRecord for foreign_keys, complex indexes and other
         
     | 
| 
      
 93 
     | 
    
         
            +
              database-related stuff. Easily create foreign_keys, complex indexes and views.
         
     | 
| 
      
 94 
     | 
    
         
            +
            email:
         
     | 
| 
       98 
95 
     | 
    
         
             
            - michal.lomnicki@gmail.com
         
     | 
| 
       99 
96 
     | 
    
         
             
            executables: []
         
     | 
| 
       100 
     | 
    
         
            -
             
     | 
| 
       101 
97 
     | 
    
         
             
            extensions: []
         
     | 
| 
       102 
     | 
    
         
            -
             
     | 
| 
       103 
98 
     | 
    
         
             
            extra_rdoc_files: []
         
     | 
| 
       104 
     | 
    
         
            -
             
     | 
| 
       105 
     | 
    
         
            -
            files: 
         
     | 
| 
      
 99 
     | 
    
         
            +
            files:
         
     | 
| 
       106 
100 
     | 
    
         
             
            - .gitignore
         
     | 
| 
       107 
101 
     | 
    
         
             
            - CHANGELOG
         
     | 
| 
       108 
102 
     | 
    
         
             
            - Gemfile
         
     | 
| 
         @@ -118,8 +112,10 @@ files: 
     | 
|
| 
       118 
112 
     | 
    
         
             
            - lib/redhillonrails_core/active_record/connection_adapters/foreign_key_definition.rb
         
     | 
| 
       119 
113 
     | 
    
         
             
            - lib/redhillonrails_core/active_record/connection_adapters/index_definition.rb
         
     | 
| 
       120 
114 
     | 
    
         
             
            - lib/redhillonrails_core/active_record/connection_adapters/mysql_adapter.rb
         
     | 
| 
      
 115 
     | 
    
         
            +
            - lib/redhillonrails_core/active_record/connection_adapters/mysql_adapter_fixes.rb
         
     | 
| 
       121 
116 
     | 
    
         
             
            - lib/redhillonrails_core/active_record/connection_adapters/mysql_column.rb
         
     | 
| 
       122 
117 
     | 
    
         
             
            - lib/redhillonrails_core/active_record/connection_adapters/postgresql_adapter.rb
         
     | 
| 
      
 118 
     | 
    
         
            +
            - lib/redhillonrails_core/active_record/connection_adapters/schema_statements.rb
         
     | 
| 
       123 
119 
     | 
    
         
             
            - lib/redhillonrails_core/active_record/connection_adapters/sqlite3_adapter.rb
         
     | 
| 
       124 
120 
     | 
    
         
             
            - lib/redhillonrails_core/active_record/connection_adapters/table_definition.rb
         
     | 
| 
       125 
121 
     | 
    
         
             
            - lib/redhillonrails_core/active_record/schema.rb
         
     | 
| 
         @@ -142,35 +138,32 @@ files: 
     | 
|
| 
       142 
138 
     | 
    
         
             
            - spec/schema_dumper_spec.rb
         
     | 
| 
       143 
139 
     | 
    
         
             
            - spec/spec_helper.rb
         
     | 
| 
       144 
140 
     | 
    
         
             
            - spec/support/reference.rb
         
     | 
| 
      
 141 
     | 
    
         
            +
            - spec/table_definition_spec.rb
         
     | 
| 
      
 142 
     | 
    
         
            +
            - spec/view_spec.rb
         
     | 
| 
       145 
143 
     | 
    
         
             
            has_rdoc: true
         
     | 
| 
       146 
144 
     | 
    
         
             
            homepage: https://github.com/mlomnicki/redhillonrails_core
         
     | 
| 
       147 
145 
     | 
    
         
             
            licenses: []
         
     | 
| 
       148 
     | 
    
         
            -
             
     | 
| 
       149 
146 
     | 
    
         
             
            post_install_message: 
         
     | 
| 
       150 
147 
     | 
    
         
             
            rdoc_options: []
         
     | 
| 
       151 
     | 
    
         
            -
             
     | 
| 
       152 
     | 
    
         
            -
            require_paths: 
         
     | 
| 
      
 148 
     | 
    
         
            +
            require_paths:
         
     | 
| 
       153 
149 
     | 
    
         
             
            - lib
         
     | 
| 
       154 
     | 
    
         
            -
            required_ruby_version: !ruby/object:Gem::Requirement 
     | 
| 
       155 
     | 
    
         
            -
               
     | 
| 
       156 
     | 
    
         
            -
               
     | 
| 
       157 
     | 
    
         
            -
             
     | 
| 
       158 
     | 
    
         
            -
             
     | 
| 
       159 
     | 
    
         
            -
                   
     | 
| 
       160 
     | 
    
         
            -
             
     | 
| 
       161 
     | 
    
         
            -
             
     | 
| 
       162 
     | 
    
         
            -
              requirements: 
     | 
| 
       163 
     | 
    
         
            -
              - -  
     | 
| 
       164 
     | 
    
         
            -
                - !ruby/object:Gem::Version 
     | 
| 
       165 
     | 
    
         
            -
                   
     | 
| 
       166 
     | 
    
         
            -
                  - 0
         
     | 
| 
       167 
     | 
    
         
            -
                  version: "0"
         
     | 
| 
      
 150 
     | 
    
         
            +
            required_ruby_version: !ruby/object:Gem::Requirement
         
     | 
| 
      
 151 
     | 
    
         
            +
              none: false
         
     | 
| 
      
 152 
     | 
    
         
            +
              requirements:
         
     | 
| 
      
 153 
     | 
    
         
            +
              - - ! '>='
         
     | 
| 
      
 154 
     | 
    
         
            +
                - !ruby/object:Gem::Version
         
     | 
| 
      
 155 
     | 
    
         
            +
                  version: '0'
         
     | 
| 
      
 156 
     | 
    
         
            +
            required_rubygems_version: !ruby/object:Gem::Requirement
         
     | 
| 
      
 157 
     | 
    
         
            +
              none: false
         
     | 
| 
      
 158 
     | 
    
         
            +
              requirements:
         
     | 
| 
      
 159 
     | 
    
         
            +
              - - ! '>='
         
     | 
| 
      
 160 
     | 
    
         
            +
                - !ruby/object:Gem::Version
         
     | 
| 
      
 161 
     | 
    
         
            +
                  version: '0'
         
     | 
| 
       168 
162 
     | 
    
         
             
            requirements: []
         
     | 
| 
       169 
     | 
    
         
            -
             
     | 
| 
       170 
163 
     | 
    
         
             
            rubyforge_project: redhillonrails_core
         
     | 
| 
       171 
     | 
    
         
            -
            rubygems_version: 1. 
     | 
| 
      
 164 
     | 
    
         
            +
            rubygems_version: 1.6.2
         
     | 
| 
       172 
165 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       173 
166 
     | 
    
         
             
            specification_version: 3
         
     | 
| 
       174 
     | 
    
         
            -
            summary: Adds support in ActiveRecord for foreign_keys, complex indexes and other 
     | 
| 
      
 167 
     | 
    
         
            +
            summary: Adds support in ActiveRecord for foreign_keys, complex indexes and other
         
     | 
| 
      
 168 
     | 
    
         
            +
              database-related stuff
         
     | 
| 
       175 
169 
     | 
    
         
             
            test_files: []
         
     | 
| 
       176 
     | 
    
         
            -
             
     |