communard 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/lib/communard/configuration.rb +9 -4
 - data/lib/communard/context.rb +14 -4
 - data/lib/communard/maintenance.rb +6 -6
 - data/lib/communard/rake.rb +24 -20
 - data/lib/communard/version.rb +1 -1
 - metadata +2 -2
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 254deb5e41f164f82d78f8e790607c3043914a54
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: b06a55879156c64e6118a3d02f068719d0c94770
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 18d3919f1171c3285de8f6b93e7c2c07659ac99bec515c093dd4b93513c28292407b39573bff10baae2a9951817a238a1ce5923b26dd6e091a5030b8ad409773
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 9e466e1fba88680672d88289dc5493aaa5bd8caf7ced131582025b9ec2f3eaa266f6767d2b185214cb68bd39a1a6cffc8dbe2f9639ffdde13e77ed9573e7db4a
         
     | 
| 
         @@ -4,15 +4,20 @@ require "pathname" 
     | 
|
| 
       4 
4 
     | 
    
         
             
            module Communard
         
     | 
| 
       5 
5 
     | 
    
         
             
              class Configuration
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
     | 
    
         
            -
                attr_accessor :environment, :root, :logger
         
     | 
| 
      
 7 
     | 
    
         
            +
                attr_accessor :environment, :root, :logger, :dump_same_db
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
       9 
9 
     | 
    
         
             
                def initialize
         
     | 
| 
       10 
     | 
    
         
            -
                  self.environment 
     | 
| 
       11 
     | 
    
         
            -
                  self.root 
     | 
| 
       12 
     | 
    
         
            -
                  self.logger 
     | 
| 
      
 10 
     | 
    
         
            +
                  self.environment  = ENV["RACK_ENV"] || ENV["RUBY_ENV"] || ENV["RACK_ENV"] || "development"
         
     | 
| 
      
 11 
     | 
    
         
            +
                  self.root         = Pathname(Dir.pwd)
         
     | 
| 
      
 12 
     | 
    
         
            +
                  self.logger       = default_logger
         
     | 
| 
      
 13 
     | 
    
         
            +
                  self.dump_same_db = false
         
     | 
| 
       13 
14 
     | 
    
         
             
                  yield self if block_given?
         
     | 
| 
       14 
15 
     | 
    
         
             
                end
         
     | 
| 
       15 
16 
     | 
    
         | 
| 
      
 17 
     | 
    
         
            +
                def dump_same_db!
         
     | 
| 
      
 18 
     | 
    
         
            +
                  self.dump_same_db = true
         
     | 
| 
      
 19 
     | 
    
         
            +
                end
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
       16 
21 
     | 
    
         
             
                private
         
     | 
| 
       17 
22 
     | 
    
         | 
| 
       18 
23 
     | 
    
         
             
                def default_logger
         
     | 
    
        data/lib/communard/context.rb
    CHANGED
    
    | 
         @@ -30,7 +30,13 @@ module Communard 
     | 
|
| 
       30 
30 
     | 
    
         
             
                end
         
     | 
| 
       31 
31 
     | 
    
         | 
| 
       32 
32 
     | 
    
         
             
                def create_database(env: environment)
         
     | 
| 
       33 
     | 
    
         
            -
                  run_without_database("CREATE DATABASE  
     | 
| 
      
 33 
     | 
    
         
            +
                  run_without_database("CREATE DATABASE %{database_name}", env: env)
         
     | 
| 
      
 34 
     | 
    
         
            +
                rescue Sequel::DatabaseError => error
         
     | 
| 
      
 35 
     | 
    
         
            +
                  if /database (.*) already exists/ === error.message
         
     | 
| 
      
 36 
     | 
    
         
            +
                    logger.info "Database #{$1} already exists, which is fine."
         
     | 
| 
      
 37 
     | 
    
         
            +
                  else
         
     | 
| 
      
 38 
     | 
    
         
            +
                    raise
         
     | 
| 
      
 39 
     | 
    
         
            +
                  end
         
     | 
| 
       34 
40 
     | 
    
         
             
                end
         
     | 
| 
       35 
41 
     | 
    
         | 
| 
       36 
42 
     | 
    
         
             
                def drop_database(env: environment)
         
     | 
| 
         @@ -39,7 +45,7 @@ module Communard 
     | 
|
| 
       39 
45 
     | 
    
         
             
                end
         
     | 
| 
       40 
46 
     | 
    
         | 
| 
       41 
47 
     | 
    
         
             
                def migrate(target: nil, env: environment)
         
     | 
| 
       42 
     | 
    
         
            -
                  maintenance(env: env).migrate(target: target)
         
     | 
| 
      
 48 
     | 
    
         
            +
                  maintenance(env: env).migrate(target: target, dump_same_db: configuration.dump_same_db)
         
     | 
| 
       43 
49 
     | 
    
         
             
                end
         
     | 
| 
       44 
50 
     | 
    
         | 
| 
       45 
51 
     | 
    
         
             
                def seed(env: environment)
         
     | 
| 
         @@ -47,7 +53,7 @@ module Communard 
     | 
|
| 
       47 
53 
     | 
    
         
             
                end
         
     | 
| 
       48 
54 
     | 
    
         | 
| 
       49 
55 
     | 
    
         
             
                def rollback(step: 1, env: environment)
         
     | 
| 
       50 
     | 
    
         
            -
                  maintenance(env: env).rollback(step: step)
         
     | 
| 
      
 56 
     | 
    
         
            +
                  maintenance(env: env).rollback(step: step, dump_same_db: configuration.dump_same_db)
         
     | 
| 
       51 
57 
     | 
    
         
             
                end
         
     | 
| 
       52 
58 
     | 
    
         | 
| 
       53 
59 
     | 
    
         
             
                def load_schema(env: environment)
         
     | 
| 
         @@ -55,7 +61,7 @@ module Communard 
     | 
|
| 
       55 
61 
     | 
    
         
             
                end
         
     | 
| 
       56 
62 
     | 
    
         | 
| 
       57 
63 
     | 
    
         
             
                def dump_schema(env: environment)
         
     | 
| 
       58 
     | 
    
         
            -
                  maintenance(env: env).dump_schema
         
     | 
| 
      
 64 
     | 
    
         
            +
                  maintenance(env: env).dump_schema(dump_same_db: configuration.dump_same_db)
         
     | 
| 
       59 
65 
     | 
    
         
             
                end
         
     | 
| 
       60 
66 
     | 
    
         | 
| 
       61 
67 
     | 
    
         
             
                def status(env: environment)
         
     | 
| 
         @@ -65,6 +71,10 @@ module Communard 
     | 
|
| 
       65 
71 
     | 
    
         
             
                def run_without_database(cmd, env: environment)
         
     | 
| 
       66 
72 
     | 
    
         
             
                  opts = options(env: env).dup
         
     | 
| 
       67 
73 
     | 
    
         
             
                  database_name = opts.delete("database")
         
     | 
| 
      
 74 
     | 
    
         
            +
                  if opts.fetch("adapter") == "postgres"
         
     | 
| 
      
 75 
     | 
    
         
            +
                    opts["database"]           = "postgres"
         
     | 
| 
      
 76 
     | 
    
         
            +
                    opts["schema_search_path"] = "public"
         
     | 
| 
      
 77 
     | 
    
         
            +
                  end
         
     | 
| 
       68 
78 
     | 
    
         
             
                  connection = connect(opts)
         
     | 
| 
       69 
79 
     | 
    
         
             
                  connection.run(cmd % { database_name: database_name })
         
     | 
| 
       70 
80 
     | 
    
         
             
                end
         
     | 
| 
         @@ -9,20 +9,20 @@ module Communard 
     | 
|
| 
       9 
9 
     | 
    
         
             
                  @root       = root
         
     | 
| 
       10 
10 
     | 
    
         
             
                end
         
     | 
| 
       11 
11 
     | 
    
         | 
| 
       12 
     | 
    
         
            -
                def migrate(target: nil)
         
     | 
| 
      
 12 
     | 
    
         
            +
                def migrate(target: nil, dump_same_db: false)
         
     | 
| 
       13 
13 
     | 
    
         
             
                  target = Integer(target) if target
         
     | 
| 
       14 
14 
     | 
    
         
             
                  ::Sequel::Migrator.run(connection, migrations, target: target, allow_missing_migration_files: true)
         
     | 
| 
       15 
     | 
    
         
            -
                  dump_schema
         
     | 
| 
      
 15 
     | 
    
         
            +
                  dump_schema(dump_same_db: dump_same_db)
         
     | 
| 
       16 
16 
     | 
    
         
             
                end
         
     | 
| 
       17 
17 
     | 
    
         | 
| 
       18 
18 
     | 
    
         
             
                def seed
         
     | 
| 
       19 
19 
     | 
    
         
             
                  load seeds_file if seeds_file.exist?
         
     | 
| 
       20 
20 
     | 
    
         
             
                end
         
     | 
| 
       21 
21 
     | 
    
         | 
| 
       22 
     | 
    
         
            -
                def rollback(step: 1)
         
     | 
| 
      
 22 
     | 
    
         
            +
                def rollback(step: 1, dump_same_db: false)
         
     | 
| 
       23 
23 
     | 
    
         
             
                  target = applied_migrations[-step - 1]
         
     | 
| 
       24 
24 
     | 
    
         
             
                  if target
         
     | 
| 
       25 
     | 
    
         
            -
                    migrate(target: target.split(/_/, 2).first)
         
     | 
| 
      
 25 
     | 
    
         
            +
                    migrate(target: target.split(/_/, 2).first, dump_same_db: dump_same_db)
         
     | 
| 
       26 
26 
     | 
    
         
             
                  else
         
     | 
| 
       27 
27 
     | 
    
         
             
                    fail ArgumentError, "Cannot roll back that far"
         
     | 
| 
       28 
28 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -33,9 +33,9 @@ module Communard 
     | 
|
| 
       33 
33 
     | 
    
         
             
                  migration.apply(connection, :up)
         
     | 
| 
       34 
34 
     | 
    
         
             
                end
         
     | 
| 
       35 
35 
     | 
    
         | 
| 
       36 
     | 
    
         
            -
                def dump_schema
         
     | 
| 
      
 36 
     | 
    
         
            +
                def dump_schema(dump_same_db: false)
         
     | 
| 
       37 
37 
     | 
    
         
             
                  connection.extension :schema_dumper
         
     | 
| 
       38 
     | 
    
         
            -
                  schema = connection.dump_schema_migration(same_db:  
     | 
| 
      
 38 
     | 
    
         
            +
                  schema = connection.dump_schema_migration(same_db: dump_same_db)
         
     | 
| 
       39 
39 
     | 
    
         
             
                  schema_file.open("w") { |f| f << schema.gsub(/\s+$/m, "") }
         
     | 
| 
       40 
40 
     | 
    
         
             
                end
         
     | 
| 
       41 
41 
     | 
    
         | 
    
        data/lib/communard/rake.rb
    CHANGED
    
    | 
         @@ -8,43 +8,47 @@ module Communard 
     | 
|
| 
       8 
8 
     | 
    
         
             
                def self.add_tasks(ns = :db, &block)
         
     | 
| 
       9 
9 
     | 
    
         | 
| 
       10 
10 
     | 
    
         
             
                  namespace ns do
         
     | 
| 
      
 11 
     | 
    
         
            +
                    task :_load_communard do
         
     | 
| 
      
 12 
     | 
    
         
            +
                      @_communard_context = Communard.context(&block)
         
     | 
| 
      
 13 
     | 
    
         
            +
                    end
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
       11 
15 
     | 
    
         
             
                    desc "Creates the database, migrate the schema, and loads seed data"
         
     | 
| 
       12 
16 
     | 
    
         
             
                    task :setup => [:create, :migrate, :seed, "db:test:prepare"]
         
     | 
| 
       13 
17 
     | 
    
         | 
| 
       14 
18 
     | 
    
         
             
                    desc "Creates the database"
         
     | 
| 
       15 
     | 
    
         
            -
                    task :create do
         
     | 
| 
       16 
     | 
    
         
            -
                       
     | 
| 
      
 19 
     | 
    
         
            +
                    task :create => :_load_communard do
         
     | 
| 
      
 20 
     | 
    
         
            +
                      @_communard_context.create_database
         
     | 
| 
       17 
21 
     | 
    
         
             
                    end
         
     | 
| 
       18 
22 
     | 
    
         | 
| 
       19 
23 
     | 
    
         
             
                    desc "Drops the database"
         
     | 
| 
       20 
     | 
    
         
            -
                    task :drop do
         
     | 
| 
       21 
     | 
    
         
            -
                       
     | 
| 
      
 24 
     | 
    
         
            +
                    task :drop => :_load_communard do
         
     | 
| 
      
 25 
     | 
    
         
            +
                      @_communard_context.drop_database
         
     | 
| 
       22 
26 
     | 
    
         
             
                    end
         
     | 
| 
       23 
27 
     | 
    
         | 
| 
       24 
28 
     | 
    
         
             
                    desc "Drops and creates the database"
         
     | 
| 
       25 
29 
     | 
    
         
             
                    task :reset => [:drop, :setup]
         
     | 
| 
       26 
30 
     | 
    
         | 
| 
       27 
31 
     | 
    
         
             
                    desc "Migrate the database"
         
     | 
| 
       28 
     | 
    
         
            -
                    task :migrate do
         
     | 
| 
      
 32 
     | 
    
         
            +
                    task :migrate => :_load_communard do
         
     | 
| 
       29 
33 
     | 
    
         
             
                      target = ENV["VERSION"] || ENV["TARGET"]
         
     | 
| 
       30 
     | 
    
         
            -
                       
     | 
| 
      
 34 
     | 
    
         
            +
                      @_communard_context.migrate(target: target)
         
     | 
| 
       31 
35 
     | 
    
         
             
                    end
         
     | 
| 
       32 
36 
     | 
    
         | 
| 
       33 
37 
     | 
    
         
             
                    desc "Load the seed data from db/seeds.rb"
         
     | 
| 
       34 
     | 
    
         
            -
                    task :seed do
         
     | 
| 
       35 
     | 
    
         
            -
                       
     | 
| 
      
 38 
     | 
    
         
            +
                    task :seed => :_load_communard do
         
     | 
| 
      
 39 
     | 
    
         
            +
                      @_communard_context.seed
         
     | 
| 
       36 
40 
     | 
    
         
             
                    end
         
     | 
| 
       37 
41 
     | 
    
         | 
| 
       38 
42 
     | 
    
         
             
                    desc "Rolls the schema back to the previous version"
         
     | 
| 
       39 
     | 
    
         
            -
                    task :rollback do
         
     | 
| 
      
 43 
     | 
    
         
            +
                    task :rollback => :_load_communard do
         
     | 
| 
       40 
44 
     | 
    
         
             
                      step = Integer(ENV["STEP"] || 1)
         
     | 
| 
       41 
     | 
    
         
            -
                       
     | 
| 
      
 45 
     | 
    
         
            +
                      @_communard_context.rollback(step: step)
         
     | 
| 
       42 
46 
     | 
    
         
             
                    end
         
     | 
| 
       43 
47 
     | 
    
         | 
| 
       44 
48 
     | 
    
         
             
                    namespace :test do
         
     | 
| 
       45 
49 
     | 
    
         
             
                      desc "Cleans the test database"
         
     | 
| 
       46 
     | 
    
         
            -
                      task :prepare do
         
     | 
| 
       47 
     | 
    
         
            -
                        context =  
     | 
| 
      
 50 
     | 
    
         
            +
                      task :prepare => :_load_communard do
         
     | 
| 
      
 51 
     | 
    
         
            +
                        context = @_communard_context
         
     | 
| 
       48 
52 
     | 
    
         
             
                        context.drop_database(env: "test")
         
     | 
| 
       49 
53 
     | 
    
         
             
                        context.create_database(env: "test")
         
     | 
| 
       50 
54 
     | 
    
         
             
                        context.migrate(env: "test")
         
     | 
| 
         @@ -54,28 +58,28 @@ module Communard 
     | 
|
| 
       54 
58 
     | 
    
         
             
                    namespace :migrate do
         
     | 
| 
       55 
59 
     | 
    
         | 
| 
       56 
60 
     | 
    
         
             
                      desc "Redo the last migration"
         
     | 
| 
       57 
     | 
    
         
            -
                      task :redo do
         
     | 
| 
       58 
     | 
    
         
            -
                        context =  
     | 
| 
      
 61 
     | 
    
         
            +
                      task :redo => :_load_communard do
         
     | 
| 
      
 62 
     | 
    
         
            +
                        context = @_communard_context
         
     | 
| 
       59 
63 
     | 
    
         
             
                        context.rollback
         
     | 
| 
       60 
64 
     | 
    
         
             
                        context.migrate
         
     | 
| 
       61 
65 
     | 
    
         
             
                      end
         
     | 
| 
       62 
66 
     | 
    
         | 
| 
       63 
67 
     | 
    
         
             
                      desc "Display status of migrations"
         
     | 
| 
       64 
     | 
    
         
            -
                      task :status do
         
     | 
| 
       65 
     | 
    
         
            -
                         
     | 
| 
      
 68 
     | 
    
         
            +
                      task :status, :_load_communard do
         
     | 
| 
      
 69 
     | 
    
         
            +
                        @_communard_context.status
         
     | 
| 
       66 
70 
     | 
    
         
             
                      end
         
     | 
| 
       67 
71 
     | 
    
         
             
                    end
         
     | 
| 
       68 
72 
     | 
    
         | 
| 
       69 
73 
     | 
    
         
             
                    namespace :schema do
         
     | 
| 
       70 
74 
     | 
    
         | 
| 
       71 
75 
     | 
    
         
             
                      desc "Load the schema from db/schema.rb"
         
     | 
| 
       72 
     | 
    
         
            -
                      task :load do
         
     | 
| 
       73 
     | 
    
         
            -
                         
     | 
| 
      
 76 
     | 
    
         
            +
                      task :load => :_load_communard do
         
     | 
| 
      
 77 
     | 
    
         
            +
                        @_communard_context.load_schema
         
     | 
| 
       74 
78 
     | 
    
         
             
                      end
         
     | 
| 
       75 
79 
     | 
    
         | 
| 
       76 
80 
     | 
    
         
             
                      desc "Dumps the schema to db/schema.rb"
         
     | 
| 
       77 
     | 
    
         
            -
                      task :dump do
         
     | 
| 
       78 
     | 
    
         
            -
                         
     | 
| 
      
 81 
     | 
    
         
            +
                      task :dump => :_load_communard do
         
     | 
| 
      
 82 
     | 
    
         
            +
                        @_communard_context.dump_schema
         
     | 
| 
       79 
83 
     | 
    
         
             
                      end
         
     | 
| 
       80 
84 
     | 
    
         | 
| 
       81 
85 
     | 
    
         
             
                    end
         
     | 
    
        data/lib/communard/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: communard
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.0.2
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - iain
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2014- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2014-10-02 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: sequel
         
     |