schema_monkey 0.4.0 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.travis.yml +3 -3
- data/README.md +12 -8
- data/gemfiles/{rails-4.2 → activerecord-4.2}/Gemfile.base +1 -1
- data/gemfiles/{rails-4.2 → activerecord-4.2}/Gemfile.mysql2 +0 -0
- data/gemfiles/{rails-4.2 → activerecord-4.2}/Gemfile.postgresql +0 -0
- data/gemfiles/{rails-4.2 → activerecord-4.2}/Gemfile.sqlite3 +0 -0
- data/lib/schema_monkey.rb +2 -1
- data/lib/schema_monkey/rake.rb +12 -0
- data/lib/schema_monkey/tasks/insert.rake +5 -0
- data/lib/schema_monkey/version.rb +1 -1
- data/schema_dev.yml +1 -1
- data/schema_monkey.gemspec +3 -2
- data/spec/connection_spec.rb +15 -0
- data/spec/rake_spec.rb +39 -0
- data/spec/spec_helper.rb +1 -0
- metadata +30 -13
- data/lib/schema_monkey/railtie.rb +0 -24
- data/spec/sanity_spec.rb +0 -13
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 79b4b171241c85efd322e1110d21c832a3496ed8
         | 
| 4 | 
            +
              data.tar.gz: ffd34501fbe45a95ed29750639c4e1dca540e6f0
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 46d478aa24930337a10ce7fa4d672246fa6b6eb2c2ff214ed78eaa09ba6a8c84b751cdb6ba270bbc5efd0a14a4bcf7d262c0bb5ed8d045a361295d133488d9b0
         | 
| 7 | 
            +
              data.tar.gz: 4cc5f36af665873d97bc8d8a1e502d8b1564cb79e60597708fd11a97745f6dfd3d3866eeb5aefa09e5a4459ecfa8c6afce2119189d4643c8a84c36393ebeeea0
         | 
    
        data/.travis.yml
    CHANGED
    
    | @@ -8,9 +8,9 @@ rvm: | |
| 8 8 | 
             
            - 1.9.3
         | 
| 9 9 | 
             
            - 2.1.5
         | 
| 10 10 | 
             
            gemfile:
         | 
| 11 | 
            -
            - gemfiles/ | 
| 12 | 
            -
            - gemfiles/ | 
| 13 | 
            -
            - gemfiles/ | 
| 11 | 
            +
            - gemfiles/activerecord-4.2/Gemfile.mysql2
         | 
| 12 | 
            +
            - gemfiles/activerecord-4.2/Gemfile.postgresql
         | 
| 13 | 
            +
            - gemfiles/activerecord-4.2/Gemfile.sqlite3
         | 
| 14 14 | 
             
            env: POSTGRESQL_DB_USER=postgres MYSQL_DB_USER=travis
         | 
| 15 15 | 
             
            addons:
         | 
| 16 16 | 
             
              postgresql: '9.3'
         | 
    
        data/README.md
    CHANGED
    
    | @@ -5,23 +5,27 @@ | |
| 5 5 |  | 
| 6 6 | 
             
            # SchemaMonkey
         | 
| 7 7 |  | 
| 8 | 
            -
            SchemaMonkey is a behind-the-scenes gem to facilitate writing other gems  | 
| 8 | 
            +
            SchemaMonkey is a behind-the-scenes gem to facilitate writing extensions to ActiveRecord (typically other gems, but could also be in an application).  It provides:
         | 
| 9 9 |  | 
| 10 10 | 
             
            * A "middleware"-style interface to key ActiveRecord internal functions.  For example, there's a middleware hook to let you insert a handler for migration column definition options, and there are several hooks to insert handlers for the various parts of a schema dump.
         | 
| 11 11 |  | 
| 12 12 | 
             
            * A convention-based protocol for `include`'ing custom modules into ActiveRecord.  You just define your modules and SchemaMonkey will automatically include them in the right places.
         | 
| 13 13 |  | 
| 14 | 
            -
            * It takes care of setting up  | 
| 14 | 
            +
            * (If you're using Rails) It takes care of setting up a Railtie appropriately to invoke the extensions.
         | 
| 15 15 |  | 
| 16 | 
            -
            The middleware interface has two benefits: it provides a clean API so that the  | 
| 16 | 
            +
            The middleware interface has two benefits: it provides a clean API so that the gem or aplication code doesn't need to monkey-patch ActiveRecord (SchemaMonkey does all the monkey-patching for you), and it lets multiple client gems operate in parallel without concern about conflicting monkey-patches.
         | 
| 17 17 |  | 
| 18 18 |  | 
| 19 19 | 
             
            ## Installation
         | 
| 20 20 |  | 
| 21 | 
            -
             | 
| 21 | 
            +
            As usual:
         | 
| 22 22 |  | 
| 23 23 | 
             
            ```ruby
         | 
| 24 | 
            +
            # In a gem's .gemspec:
         | 
| 24 25 | 
             
            spec.add_dependency "schema_monkey", "~> <MAJOR>.<MINOR>", ">= <MAJOR>.<MINOR>.<PATCH>"
         | 
| 26 | 
            +
             | 
| 27 | 
            +
            # In an applications Gemfile:
         | 
| 28 | 
            +
            gem "schema_monkey", "~> <MAJOR>.<MINOR>", ">= <MAJOR>.<MINOR>.<PATCH>"
         | 
| 25 29 | 
             
            ```
         | 
| 26 30 |  | 
| 27 31 | 
             
            SchemaMonkey follows semantic versioning; it's a good idea to explicitly use the `~>` and `>=` dependencies to make sure your gem's clients don't accidentally pull in a version of SchemaMonkey that your gem isn't compatible with.
         | 
| @@ -32,15 +36,15 @@ SchemaMonkey is tested on: | |
| 32 36 |  | 
| 33 37 | 
             
            <!-- SCHEMA_DEV: MATRIX - begin -->
         | 
| 34 38 | 
             
            <!-- These lines are auto-generated by schema_dev based on schema_dev.yml -->
         | 
| 35 | 
            -
            * ruby **1.9.3** with  | 
| 36 | 
            -
            * ruby **2.1.5** with  | 
| 39 | 
            +
            * ruby **1.9.3** with activerecord **4.2**, using **mysql2**, **sqlite3** or **postgresql**
         | 
| 40 | 
            +
            * ruby **2.1.5** with activerecord **4.2**, using **mysql2**, **sqlite3** or **postgresql**
         | 
| 37 41 |  | 
| 38 42 | 
             
            <!-- SCHEMA_DEV: MATRIX - end -->
         | 
| 39 43 |  | 
| 40 44 | 
             
            ## Usage
         | 
| 41 45 |  | 
| 42 46 |  | 
| 43 | 
            -
            **Sorry -- no real documentation yet.   | 
| 47 | 
            +
            **Sorry -- no real documentation yet.  Too much is still in flux.**
         | 
| 44 48 |  | 
| 45 49 |  | 
| 46 50 |  | 
| @@ -51,7 +55,7 @@ the standard protocol: fork, feature branch, develop, push, and issue pull reque | |
| 51 55 |  | 
| 52 56 | 
             
            Some things to know about to help you develop and test:
         | 
| 53 57 |  | 
| 54 | 
            -
            * **Ugh --  | 
| 58 | 
            +
            * **Ugh -- not many specs yet.  SchemaMonkey is currently tested indirectly by testing the client gems that use it.  Working on it...**
         | 
| 55 59 |  | 
| 56 60 | 
             
            * **schema_dev**:  SchemaMonkey uses [schema_dev](https://github.com/SchemaPlus/schema_dev) to
         | 
| 57 61 | 
             
              facilitate running rspec tests on the matrix of ruby, rails, and database
         | 
| 
            File without changes
         | 
| 
            File without changes
         | 
| 
            File without changes
         | 
    
        data/lib/schema_monkey.rb
    CHANGED
    
    | @@ -2,6 +2,7 @@ require 'hash_keyword_args' | |
| 2 2 | 
             
            require 'its-it'
         | 
| 3 3 | 
             
            require 'key_struct'
         | 
| 4 4 | 
             
            require 'middleware'
         | 
| 5 | 
            +
            require 'active_record'
         | 
| 5 6 | 
             
            require 'active_support/core_ext/string'
         | 
| 6 7 |  | 
| 7 8 | 
             
            require_relative "schema_monkey/client"
         | 
| @@ -13,7 +14,7 @@ require_relative "schema_monkey/active_record/connection_adapters/table_definiti | |
| 13 14 | 
             
            require_relative 'schema_monkey/active_record/connection_adapters/schema_statements'
         | 
| 14 15 | 
             
            require_relative 'schema_monkey/active_record/migration/command_recorder'
         | 
| 15 16 | 
             
            require_relative 'schema_monkey/active_record/schema_dumper'
         | 
| 16 | 
            -
            require_relative 'schema_monkey/ | 
| 17 | 
            +
            require_relative 'schema_monkey/rake'
         | 
| 17 18 |  | 
| 18 19 | 
             
            module SchemaMonkey
         | 
| 19 20 | 
             
              extend Module
         | 
| @@ -0,0 +1,12 @@ | |
| 1 | 
            +
            module SchemaMonkey
         | 
| 2 | 
            +
              module Rake
         | 
| 3 | 
            +
                TASKS_PATH = Pathname.new(__FILE__).dirname + "tasks"
         | 
| 4 | 
            +
             | 
| 5 | 
            +
                def self.insert(*task_names)
         | 
| 6 | 
            +
                  ::Rake.load_rakefile TASKS_PATH + "insert.rake"
         | 
| 7 | 
            +
                  task_names.each do |name|
         | 
| 8 | 
            +
                    ::Rake.application.lookup(name).enhance(["schema_monkey:insert"])
         | 
| 9 | 
            +
                  end
         | 
| 10 | 
            +
                end
         | 
| 11 | 
            +
              end
         | 
| 12 | 
            +
            end
         | 
    
        data/schema_dev.yml
    CHANGED
    
    
    
        data/schema_monkey.gemspec
    CHANGED
    
    | @@ -26,8 +26,9 @@ Gem::Specification.new do |spec| | |
| 26 26 |  | 
| 27 27 | 
             
              spec.add_development_dependency "bundler", "~> 1.7"
         | 
| 28 28 | 
             
              spec.add_development_dependency "rake", "~> 10.0"
         | 
| 29 | 
            -
              spec.add_development_dependency "rspec", "~> 3.0 | 
| 30 | 
            -
              spec.add_development_dependency " | 
| 29 | 
            +
              spec.add_development_dependency "rspec", "~> 3.0"
         | 
| 30 | 
            +
              spec.add_development_dependency "rspec-given", "~> 3.6"
         | 
| 31 | 
            +
              spec.add_development_dependency "schema_dev", "~> 3.0"
         | 
| 31 32 | 
             
              spec.add_development_dependency "simplecov"
         | 
| 32 33 | 
             
              spec.add_development_dependency "simplecov-gem-profile"
         | 
| 33 34 | 
             
            end
         | 
| @@ -0,0 +1,15 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            describe "Connection" do
         | 
| 4 | 
            +
             | 
| 5 | 
            +
              it "is connected" do
         | 
| 6 | 
            +
                expect(ActiveRecord::Base).to be_connected
         | 
| 7 | 
            +
              end
         | 
| 8 | 
            +
             | 
| 9 | 
            +
              it "re-opens without failure" do
         | 
| 10 | 
            +
                expect { ActiveRecord::Base.establish_connection :schema_dev }.to_not raise_error
         | 
| 11 | 
            +
                expect(ActiveRecord::Base.connection).to_not be_nil
         | 
| 12 | 
            +
                expect(ActiveRecord::Base).to be_connected
         | 
| 13 | 
            +
              end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
            end
         | 
    
        data/spec/rake_spec.rb
    ADDED
    
    | @@ -0,0 +1,39 @@ | |
| 1 | 
            +
            require 'spec_helper'
         | 
| 2 | 
            +
            require 'rake'
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            describe SchemaMonkey::Rake do
         | 
| 5 | 
            +
             | 
| 6 | 
            +
              context "insertion" do
         | 
| 7 | 
            +
                Given(:results) { [] }
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                Given {
         | 
| 10 | 
            +
                  allow(SchemaMonkey).to receive(:insert) { results << :schema_monkey }
         | 
| 11 | 
            +
                }
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                Given {
         | 
| 14 | 
            +
                  Rake.application = Rake::Application.new
         | 
| 15 | 
            +
                  Rake::Task.define_task(:test1) { results << :test1 }
         | 
| 16 | 
            +
                  Rake::Task.define_task(:test2) { results << :test2 }
         | 
| 17 | 
            +
                  Rake::Task.define_task(:test3) { results << :test3 }
         | 
| 18 | 
            +
                }
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                Given { SchemaMonkey::Rake.insert(:test1, :test2) }
         | 
| 21 | 
            +
             | 
| 22 | 
            +
             | 
| 23 | 
            +
                context "enhanced task 1" do
         | 
| 24 | 
            +
                  When { Rake.application.invoke_task :test1 }
         | 
| 25 | 
            +
                  Then { expect(results).to eq [:schema_monkey, :test1] }
         | 
| 26 | 
            +
                end
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                context "enhanced task 2" do
         | 
| 29 | 
            +
                  When { Rake.application.invoke_task :test2 }
         | 
| 30 | 
            +
                  Then { expect(results).to eq [:schema_monkey, :test2] }
         | 
| 31 | 
            +
                end
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                context "unenhanced task 3" do
         | 
| 34 | 
            +
                  When { Rake.application.invoke_task :test3 }
         | 
| 35 | 
            +
                  Then { expect(results).to eq [:test3] }
         | 
| 36 | 
            +
                end
         | 
| 37 | 
            +
              end
         | 
| 38 | 
            +
             | 
| 39 | 
            +
              end
         | 
    
        data/spec/spec_helper.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: schema_monkey
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.4. | 
| 4 | 
            +
              version: 0.4.1
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - ronen barzel
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2015-01 | 
| 11 | 
            +
            date: 2015-02-01 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: activerecord
         | 
| @@ -114,28 +114,42 @@ dependencies: | |
| 114 114 | 
             
                requirements:
         | 
| 115 115 | 
             
                - - "~>"
         | 
| 116 116 | 
             
                  - !ruby/object:Gem::Version
         | 
| 117 | 
            -
                    version: 3.0 | 
| 117 | 
            +
                    version: '3.0'
         | 
| 118 118 | 
             
              type: :development
         | 
| 119 119 | 
             
              prerelease: false
         | 
| 120 120 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 121 121 | 
             
                requirements:
         | 
| 122 122 | 
             
                - - "~>"
         | 
| 123 123 | 
             
                  - !ruby/object:Gem::Version
         | 
| 124 | 
            -
                    version: 3.0 | 
| 124 | 
            +
                    version: '3.0'
         | 
| 125 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 126 | 
            +
              name: rspec-given
         | 
| 127 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 128 | 
            +
                requirements:
         | 
| 129 | 
            +
                - - "~>"
         | 
| 130 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 131 | 
            +
                    version: '3.6'
         | 
| 132 | 
            +
              type: :development
         | 
| 133 | 
            +
              prerelease: false
         | 
| 134 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 135 | 
            +
                requirements:
         | 
| 136 | 
            +
                - - "~>"
         | 
| 137 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 138 | 
            +
                    version: '3.6'
         | 
| 125 139 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 126 140 | 
             
              name: schema_dev
         | 
| 127 141 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 128 142 | 
             
                requirements:
         | 
| 129 143 | 
             
                - - "~>"
         | 
| 130 144 | 
             
                  - !ruby/object:Gem::Version
         | 
| 131 | 
            -
                    version: ' | 
| 145 | 
            +
                    version: '3.0'
         | 
| 132 146 | 
             
              type: :development
         | 
| 133 147 | 
             
              prerelease: false
         | 
| 134 148 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 135 149 | 
             
                requirements:
         | 
| 136 150 | 
             
                - - "~>"
         | 
| 137 151 | 
             
                  - !ruby/object:Gem::Version
         | 
| 138 | 
            -
                    version: ' | 
| 152 | 
            +
                    version: '3.0'
         | 
| 139 153 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 140 154 | 
             
              name: simplecov
         | 
| 141 155 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -179,10 +193,10 @@ files: | |
| 179 193 | 
             
            - README.md
         | 
| 180 194 | 
             
            - Rakefile
         | 
| 181 195 | 
             
            - gemfiles/Gemfile.base
         | 
| 182 | 
            -
            - gemfiles/ | 
| 183 | 
            -
            - gemfiles/ | 
| 184 | 
            -
            - gemfiles/ | 
| 185 | 
            -
            - gemfiles/ | 
| 196 | 
            +
            - gemfiles/activerecord-4.2/Gemfile.base
         | 
| 197 | 
            +
            - gemfiles/activerecord-4.2/Gemfile.mysql2
         | 
| 198 | 
            +
            - gemfiles/activerecord-4.2/Gemfile.postgresql
         | 
| 199 | 
            +
            - gemfiles/activerecord-4.2/Gemfile.sqlite3
         | 
| 186 200 | 
             
            - lib/schema_monkey.rb
         | 
| 187 201 | 
             
            - lib/schema_monkey/active_record/base.rb
         | 
| 188 202 | 
             
            - lib/schema_monkey/active_record/connection_adapters/abstract_adapter.rb
         | 
| @@ -196,11 +210,13 @@ files: | |
| 196 210 | 
             
            - lib/schema_monkey/client.rb
         | 
| 197 211 | 
             
            - lib/schema_monkey/middleware.rb
         | 
| 198 212 | 
             
            - lib/schema_monkey/module.rb
         | 
| 199 | 
            -
            - lib/schema_monkey/ | 
| 213 | 
            +
            - lib/schema_monkey/rake.rb
         | 
| 214 | 
            +
            - lib/schema_monkey/tasks/insert.rake
         | 
| 200 215 | 
             
            - lib/schema_monkey/version.rb
         | 
| 201 216 | 
             
            - schema_dev.yml
         | 
| 202 217 | 
             
            - schema_monkey.gemspec
         | 
| 203 | 
            -
            - spec/ | 
| 218 | 
            +
            - spec/connection_spec.rb
         | 
| 219 | 
            +
            - spec/rake_spec.rb
         | 
| 204 220 | 
             
            - spec/spec_helper.rb
         | 
| 205 221 | 
             
            homepage: https://github.com/SchemaPlus/schema_monkey
         | 
| 206 222 | 
             
            licenses:
         | 
| @@ -228,5 +244,6 @@ specification_version: 4 | |
| 228 244 | 
             
            summary: Provides an internal API and module inclusion protocol to facilitate adding
         | 
| 229 245 | 
             
              features to ActiveRecord
         | 
| 230 246 | 
             
            test_files:
         | 
| 231 | 
            -
            - spec/ | 
| 247 | 
            +
            - spec/connection_spec.rb
         | 
| 248 | 
            +
            - spec/rake_spec.rb
         | 
| 232 249 | 
             
            - spec/spec_helper.rb
         | 
| @@ -1,24 +0,0 @@ | |
| 1 | 
            -
            module SchemaMonkey
         | 
| 2 | 
            -
              class Railtie < Rails::Railtie #:nodoc:
         | 
| 3 | 
            -
             | 
| 4 | 
            -
                initializer 'schema_monkey.insert', :before => "active_record.initialize_database" do
         | 
| 5 | 
            -
                  ActiveSupport.on_load(:active_record) do
         | 
| 6 | 
            -
                    SchemaMonkey.insert
         | 
| 7 | 
            -
                  end
         | 
| 8 | 
            -
                end
         | 
| 9 | 
            -
             | 
| 10 | 
            -
                rake_tasks do
         | 
| 11 | 
            -
                  namespace :schema_monkey do
         | 
| 12 | 
            -
                    task :insert do
         | 
| 13 | 
            -
                      SchemaMonkey.insert
         | 
| 14 | 
            -
                    end
         | 
| 15 | 
            -
                  end
         | 
| 16 | 
            -
                  ['db:schema:dump', 'db:schema:load'].each do |name|
         | 
| 17 | 
            -
                    if task = Rake.application.tasks.find { |task| task.name == name }
         | 
| 18 | 
            -
                      task.enhance(["schema_monkey:insert"])
         | 
| 19 | 
            -
                    end
         | 
| 20 | 
            -
                  end
         | 
| 21 | 
            -
                end
         | 
| 22 | 
            -
             | 
| 23 | 
            -
              end
         | 
| 24 | 
            -
            end
         | 
    
        data/spec/sanity_spec.rb
    DELETED
    
    | @@ -1,13 +0,0 @@ | |
| 1 | 
            -
            require 'spec_helper'
         | 
| 2 | 
            -
             | 
| 3 | 
            -
             | 
| 4 | 
            -
            # A basic sanity check to have as a spec when first starting.  Feel free to delete this
         | 
| 5 | 
            -
            # once you've got real content.
         | 
| 6 | 
            -
             | 
| 7 | 
            -
            describe "Sanity Check" do
         | 
| 8 | 
            -
             | 
| 9 | 
            -
              it "database is connected" do
         | 
| 10 | 
            -
                expect(ActiveRecord::Base).to be_connected
         | 
| 11 | 
            -
              end
         | 
| 12 | 
            -
             | 
| 13 | 
            -
            end
         |