prodder 1.7

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.
@@ -0,0 +1,7 @@
1
+ module Prodder
2
+ class Railtie < Rails::Railtie
3
+ rake_tasks do
4
+ load "prodder/prodder.rake"
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,3 @@
1
+ module Prodder
2
+ VERSION = "1.7"
3
+ end
@@ -0,0 +1,25 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "prodder/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "prodder"
7
+ s.version = Prodder::VERSION
8
+ s.authors = ["Kyle Hargraves"]
9
+ s.email = ["pd@krh.me"]
10
+ s.homepage = "https://github.com/enova/prodder"
11
+ s.license = "MIT"
12
+ s.summary = "Maintain your Rails apps' structure, seed and quality_checks files using production dumps"
13
+ s.description = "Migrations suck long-term. Now you can kill them routinely."
14
+
15
+ s.files = `git ls-files`.split("\n")
16
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
17
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
18
+ s.require_paths = ["lib"]
19
+
20
+ # These dependencies do not match the Gemfile's for a reason.
21
+ # These are the only dependencies necessary to satisfy inclusion of this
22
+ # gem in a Rails application; any dependencies necessary to run prodder
23
+ # itself are specified in the Gemfile.
24
+ s.add_dependency "deject"
25
+ end
@@ -0,0 +1,64 @@
1
+ require 'spec_helper'
2
+
3
+ describe Prodder::Config, 'linting' do
4
+ let(:valid_config) { YAML.load Prodder::Config.example_contents }
5
+
6
+ def config_without(path)
7
+ keys = path.split('/')
8
+ hash = valid_config
9
+ hash = hash[keys.shift] until keys.size == 1
10
+ hash.delete keys.first
11
+ valid_config
12
+ end
13
+
14
+ def errors_for(hash)
15
+ Prodder::Config.new(hash).lint
16
+ end
17
+
18
+ specify 'the example contents pass lint checks' do
19
+ hash = YAML.load(Prodder::Config.example_contents)
20
+ expect { Prodder::Config.new(hash).lint! }.not_to raise_error
21
+ end
22
+
23
+ context 'missing required key:' do
24
+
25
+ %w[structure_file
26
+ seed_file
27
+
28
+ db
29
+ db/name
30
+ db/host
31
+ db/user
32
+
33
+ git
34
+ git/origin
35
+ git/author
36
+ ].each do |path|
37
+ specify path do
38
+ errors_for(config_without "blog/#{path}").should ==
39
+ ["Missing required configuration key: blog/#{path}"]
40
+ end
41
+ end
42
+ end
43
+
44
+ context 'optional keys:' do
45
+ specify 'db/password' do
46
+ errors_for(config_without 'blog/db/password').should be_empty
47
+ end
48
+ end
49
+
50
+ context '#lint!' do
51
+ it 'raises a LintError with the list of errors' do
52
+ config = Prodder::Config.new(config_without 'blog/db/name')
53
+ expect {
54
+ config.lint!
55
+ }.to raise_error(Prodder::Config::LintError) { |ex|
56
+ ex.errors.should == ['Missing required configuration key: blog/db/name']
57
+ }
58
+ end
59
+
60
+ it 'returns an empty collection if there are no errors' do
61
+ Prodder::Config.new(valid_config).lint!.should == []
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,3 @@
1
+ require 'rspec'
2
+ require 'pry'
3
+ require 'prodder'
metadata ADDED
@@ -0,0 +1,91 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: prodder
3
+ version: !ruby/object:Gem::Version
4
+ version: '1.7'
5
+ platform: ruby
6
+ authors:
7
+ - Kyle Hargraves
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-10-24 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: deject
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ description: Migrations suck long-term. Now you can kill them routinely.
28
+ email:
29
+ - pd@krh.me
30
+ executables:
31
+ - prodder
32
+ extensions: []
33
+ extra_rdoc_files: []
34
+ files:
35
+ - ".gitignore"
36
+ - ".travis.yml"
37
+ - Gemfile
38
+ - Gemfile.lock
39
+ - LICENSE.txt
40
+ - README.md
41
+ - Rakefile
42
+ - bin/prodder
43
+ - features/commit.feature
44
+ - features/dump.feature
45
+ - features/init.feature
46
+ - features/lint.feature
47
+ - features/prodder.feature
48
+ - features/push.feature
49
+ - features/step_definitions/git_steps.rb
50
+ - features/step_definitions/prodder_steps.rb
51
+ - features/support/blog.git.tgz
52
+ - features/support/env.rb
53
+ - features/support/prodder__blog_prod.sql
54
+ - lib/prodder.rb
55
+ - lib/prodder/cli.rb
56
+ - lib/prodder/config.rb
57
+ - lib/prodder/git.rb
58
+ - lib/prodder/pg.rb
59
+ - lib/prodder/prodder.rake
60
+ - lib/prodder/project.rb
61
+ - lib/prodder/railtie.rb
62
+ - lib/prodder/version.rb
63
+ - prodder.gemspec
64
+ - spec/config_spec.rb
65
+ - spec/spec_helper.rb
66
+ homepage: https://github.com/enova/prodder
67
+ licenses:
68
+ - MIT
69
+ metadata: {}
70
+ post_install_message:
71
+ rdoc_options: []
72
+ require_paths:
73
+ - lib
74
+ required_ruby_version: !ruby/object:Gem::Requirement
75
+ requirements:
76
+ - - ">="
77
+ - !ruby/object:Gem::Version
78
+ version: '0'
79
+ required_rubygems_version: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
84
+ requirements: []
85
+ rubyforge_project:
86
+ rubygems_version: 2.6.6
87
+ signing_key:
88
+ specification_version: 4
89
+ summary: Maintain your Rails apps' structure, seed and quality_checks files using
90
+ production dumps
91
+ test_files: []