communard 0.1.0 → 0.1.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/lib/communard/commands.rb +13 -7
 - data/lib/communard/version.rb +1 -1
 - data/spec/integration_spec.rb +12 -2
 - metadata +1 -1
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 9d160711820fe427786947a0718c53cb73a2167df5fb714196ffc81e77fe148a
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 5642f174554fbbdbf006726823d34e582f5b0791fa1e5ee86541fd69f3ec8c3e
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 0a5811b7dd25ef9aba12a113b12b8b50b22a176c7023ed190356eee6e874840ec0c6a99476252401bef88a06eddc158bb875c4beed249036ebb5286c52544af8
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: b098d85743d78519bcb4e57e08dfedc0c574237e3600d97af023524b2ec0a2740c511c153de01681d1cc6c4efe49caa619aa6c7045cb714d72cfe63e693ab692
         
     | 
    
        data/lib/communard/commands.rb
    CHANGED
    
    | 
         @@ -50,11 +50,16 @@ module Communard 
     | 
|
| 
       50 
50 
     | 
    
         
             
                end
         
     | 
| 
       51 
51 
     | 
    
         | 
| 
       52 
52 
     | 
    
         
             
                def rollback(step: 1)
         
     | 
| 
       53 
     | 
    
         
            -
                   
     | 
| 
       54 
     | 
    
         
            -
                  if  
     | 
| 
       55 
     | 
    
         
            -
                    migrate(target:  
     | 
| 
      
 53 
     | 
    
         
            +
                  available = applied_migrations
         
     | 
| 
      
 54 
     | 
    
         
            +
                  if available.size == 1
         
     | 
| 
      
 55 
     | 
    
         
            +
                    migrate(target: 0)
         
     | 
| 
       56 
56 
     | 
    
         
             
                  else
         
     | 
| 
       57 
     | 
    
         
            -
                     
     | 
| 
      
 57 
     | 
    
         
            +
                    target = available[-step - 1]
         
     | 
| 
      
 58 
     | 
    
         
            +
                    if target
         
     | 
| 
      
 59 
     | 
    
         
            +
                      migrate(target: target.split(/_/, 2).first)
         
     | 
| 
      
 60 
     | 
    
         
            +
                    else
         
     | 
| 
      
 61 
     | 
    
         
            +
                      fail ArgumentError, "Cannot roll back to #{step}"
         
     | 
| 
      
 62 
     | 
    
         
            +
                    end
         
     | 
| 
       58 
63 
     | 
    
         
             
                  end
         
     | 
| 
       59 
64 
     | 
    
         
             
                end
         
     | 
| 
       60 
65 
     | 
    
         | 
| 
         @@ -75,7 +80,7 @@ module Communard 
     | 
|
| 
       75 
80 
     | 
    
         
             
                  results = Hash.new { |h, k| h[k] = Status.new(k, false, false) }
         
     | 
| 
       76 
81 
     | 
    
         
             
                  available = Pathname.glob(migrations_dir.join("*.rb")).map(&:basename).map(&:to_s)
         
     | 
| 
       77 
82 
     | 
    
         
             
                  available.each { |migration| results[migration].available = true }
         
     | 
| 
       78 
     | 
    
         
            -
                  applied_migrations 
     | 
| 
      
 83 
     | 
    
         
            +
                  applied_migrations.each { |migration| results[migration].applied = true }
         
     | 
| 
       79 
84 
     | 
    
         | 
| 
       80 
85 
     | 
    
         
             
                  $stdout.puts
         
     | 
| 
       81 
86 
     | 
    
         
             
                  $stdout.puts "database: #{connection.opts.fetch(:database)}"
         
     | 
| 
         @@ -101,12 +106,13 @@ module Communard 
     | 
|
| 
       101 
106 
     | 
    
         | 
| 
       102 
107 
     | 
    
         
             
                private
         
     | 
| 
       103 
108 
     | 
    
         | 
| 
       104 
     | 
    
         
            -
                def applied_migrations 
     | 
| 
      
 109 
     | 
    
         
            +
                def applied_migrations
         
     | 
| 
      
 110 
     | 
    
         
            +
                  available = Pathname.glob(migrations_dir.join("*.rb")).map(&:basename).map(&:to_s)
         
     | 
| 
       105 
111 
     | 
    
         
             
                  m = migrator(allow_missing_migration_files: true)
         
     | 
| 
       106 
112 
     | 
    
         
             
                  if m.is_a?(Sequel::IntegerMigrator)
         
     | 
| 
       107 
113 
     | 
    
         
             
                    available.select { |f| f.split("_", 2).first.to_i <= m.current }
         
     | 
| 
       108 
114 
     | 
    
         
             
                  else
         
     | 
| 
       109 
     | 
    
         
            -
                     
     | 
| 
      
 115 
     | 
    
         
            +
                    m.applied_migrations
         
     | 
| 
       110 
116 
     | 
    
         
             
                  end
         
     | 
| 
       111 
117 
     | 
    
         
             
                end
         
     | 
| 
       112 
118 
     | 
    
         | 
    
        data/lib/communard/version.rb
    CHANGED
    
    
    
        data/spec/integration_spec.rb
    CHANGED
    
    | 
         @@ -6,6 +6,10 @@ RSpec.describe "Integration", type: :aruba do 
     | 
|
| 
       6 
6 
     | 
    
         
             
                run_tests("sqlite://db/test.sqlite3")
         
     | 
| 
       7 
7 
     | 
    
         
             
              end
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
      
 9 
     | 
    
         
            +
              example "SQLite with timestamps" do
         
     | 
| 
      
 10 
     | 
    
         
            +
                run_tests("sqlite://db/test.sqlite3", timestamps: true)
         
     | 
| 
      
 11 
     | 
    
         
            +
              end
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
       9 
13 
     | 
    
         
             
              example "PostgreSQL" do
         
     | 
| 
       10 
14 
     | 
    
         
             
                run_tests("postgresql://localhost:5432/communard_test")
         
     | 
| 
       11 
15 
     | 
    
         
             
              end
         
     | 
| 
         @@ -14,7 +18,7 @@ RSpec.describe "Integration", type: :aruba do 
     | 
|
| 
       14 
18 
     | 
    
         
             
                run_tests("mysql2://root@localhost:3306/communard_test")
         
     | 
| 
       15 
19 
     | 
    
         
             
              end
         
     | 
| 
       16 
20 
     | 
    
         | 
| 
       17 
     | 
    
         
            -
              def run_tests(database_config)
         
     | 
| 
      
 21 
     | 
    
         
            +
              def run_tests(database_config, options = {})
         
     | 
| 
       18 
22 
     | 
    
         
             
                write_file "Rakefile", <<-FILE.gsub(/^\s{6}/, "")
         
     | 
| 
       19 
23 
     | 
    
         
             
                  $LOAD_PATH.unshift(File.expand_path("../../../lib", __FILE__))
         
     | 
| 
       20 
24 
     | 
    
         
             
                  require "communard/rake"
         
     | 
| 
         @@ -23,7 +27,11 @@ RSpec.describe "Integration", type: :aruba do 
     | 
|
| 
       23 
27 
     | 
    
         
             
                  end
         
     | 
| 
       24 
28 
     | 
    
         
             
                FILE
         
     | 
| 
       25 
29 
     | 
    
         | 
| 
       26 
     | 
    
         
            -
                 
     | 
| 
      
 30 
     | 
    
         
            +
                if options[:timestamps]
         
     | 
| 
      
 31 
     | 
    
         
            +
                  run_simple "bundle exec communard migration create_posts --timestamps"
         
     | 
| 
      
 32 
     | 
    
         
            +
                else
         
     | 
| 
      
 33 
     | 
    
         
            +
                  run_simple "bundle exec communard migration create_posts"
         
     | 
| 
      
 34 
     | 
    
         
            +
                end
         
     | 
| 
       27 
35 
     | 
    
         | 
| 
       28 
36 
     | 
    
         
             
                glob = Dir[expand_path("db/migrate/*_create_posts.rb")]
         
     | 
| 
       29 
37 
     | 
    
         
             
                file = glob.first
         
     | 
| 
         @@ -46,6 +54,8 @@ RSpec.describe "Integration", type: :aruba do 
     | 
|
| 
       46 
54 
     | 
    
         
             
                run_simple "bundle exec rake db:create"
         
     | 
| 
       47 
55 
     | 
    
         | 
| 
       48 
56 
     | 
    
         
             
                run_simple "bundle exec rake db:migrate"
         
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
      
 58 
     | 
    
         
            +
                run_simple "bundle exec rake db:migrate:redo"
         
     | 
| 
       49 
59 
     | 
    
         
             
              end
         
     | 
| 
       50 
60 
     | 
    
         | 
| 
       51 
61 
     | 
    
         
             
            end
         
     |