rumination 0.5.1 → 0.6.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b727653a5dfeeb6f0a28ee835616c72704fae408
4
- data.tar.gz: cdd78d49f11d2a9cc16057e3753fb2a69632180c
3
+ metadata.gz: 3fe4dfb1cb7b66f72ab2775c4949a86a487bbbd0
4
+ data.tar.gz: 8c9b28a63244d8911eec1066b262ada854293743
5
5
  SHA512:
6
- metadata.gz: 1a43ae4b1b0d6ac175f6d512a707b6beabcee26a5d3850fe832bff65f576086cb49cc5e12793f16015be1b9936e89cb4e0898ec7cde7e1753e06a35c5ade0325
7
- data.tar.gz: 38b5fd92a7fa6b7076a6ca08fc116d57024eca2afa0119a796882e69eb2b479a3d70ffd0b1d045246e696641b7dc89f52733df19b0aca64e7ed826f7bcaed835
6
+ metadata.gz: 17b905220d6888d4a15f319c74616214bdbe417081510ed117f093f9035e1fd609798f1092df86485809778f2f85a02067f5bc2a8fd4d91aefd19fdf2c7e2c4b
7
+ data.tar.gz: 52f8ad78f39d8604a44b8c161c03a318152da4bf4ed9963b2753332cb70c92f1fa592ffed8e0d8c896a4b5d003efa4a1922fbe6f11ddf6c785ce6b287350ab1b
data/README.md CHANGED
@@ -1,18 +1,17 @@
1
1
  # Rumination
2
2
 
3
+ [![Gem Version](https://badge.fury.io/rb/rumination.svg)](https://badge.fury.io/rb/rumination)
4
+
3
5
  /ruːmɪˈneɪʃ(ə)n/
4
6
 
5
7
  noun
6
8
 
7
- 1.
8
- - a deep or considered thought about something:
9
- *"philosophical ruminations about life and humanity"*
10
- - the action or process of thinking deeply about something:
11
- *"this film stuck out, demanding attention and rumination"*
9
+ 1. a deep or considered thought about something:
10
+ *"philosophical ruminations about life and humanity"*;
11
+ the action or process of thinking deeply about something:
12
+ *"this film stuck out, demanding attention and rumination"*
12
13
 
13
- 2.
14
- the action of chewing the cud:
15
- *"cows slow down their rumination"*
14
+ 2. the action of chewing the cud: *"cows slow down their rumination"*
16
15
 
17
16
  ## Installation
18
17
 
@@ -49,7 +48,7 @@ git commits and tags, and push the `.gem` file to
49
48
  ## Contributing
50
49
 
51
50
  Bug reports and pull requests are welcome on GitHub at
52
- https://github.com/[USERNAME]/rumination.
51
+ https://github.com/artm/rumination.
53
52
 
54
53
 
55
54
  ## License
data/bin/rspec ADDED
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+ #
4
+ # This file was generated by Bundler.
5
+ #
6
+ # The application 'rspec' is installed as part of a gem, and
7
+ # this file is here to facilitate running it.
8
+ #
9
+
10
+ require "pathname"
11
+ ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
12
+ Pathname.new(__FILE__).realpath)
13
+
14
+ require "rubygems"
15
+ require "bundler/setup"
16
+
17
+ load Gem.bin_path("rspec-core", "rspec")
@@ -0,0 +1,56 @@
1
+ require_relative "../docker_compose"
2
+ require "dotenv/parser"
3
+
4
+ module Rumination
5
+ module Deploy
6
+ Base ||= Struct.new(:target) do
7
+ def bootstrap
8
+ call do
9
+ on_fresh_containers
10
+ end
11
+ end
12
+
13
+ def call
14
+ load_target_config
15
+ DockerCompose.build.down.up
16
+ yield if block_given?
17
+ container(:backend)
18
+ .exec("rake deploy:unload[#{target}]")
19
+ .run("rake deploy:finish[#{target}]")
20
+ end
21
+
22
+ def on_fresh_containers
23
+ puts "Bootstrapping '#{target}'"
24
+ raise BootstrappedAlready if bootstrapped?
25
+ initialize_database
26
+ end
27
+
28
+ def load_target_config
29
+ load "./config/deploy/targets/#{target}.rb"
30
+ ENV["VIRTUAL_HOST"] = Deploy.config.virtual_host
31
+ ENV["COMPOSE_FILE"] = Deploy.config.compose_file if Deploy.config.compose_file
32
+ setup_docker_machine_env if Deploy.config.docker_machine
33
+ rescue LoadError => e
34
+ raise UnknownTarget, e.message
35
+ end
36
+
37
+ def setup_docker_machine_env
38
+ dm_env_str = `docker-machine env #{Deploy.config.docker_machine}`
39
+ ENV.update Dotenv::Parser.call(dm_env_str)
40
+ end
41
+
42
+ def bootstrapped?
43
+ false
44
+ end
45
+
46
+ def initialize_database
47
+ container(:backend).run("rake db:setup:maybe_load_dump")
48
+ raise DatabaseInitError unless $? == 0
49
+ end
50
+
51
+ def container(name)
52
+ DockerCompose::Container.new(name)
53
+ end
54
+ end
55
+ end
56
+ end
@@ -0,0 +1,15 @@
1
+ require_relative "base"
2
+
3
+ module Rumination
4
+ module Deploy
5
+ module ClassMethods
6
+ def bootstrap target:
7
+ Base.new(target).bootstrap
8
+ end
9
+
10
+ def app target:
11
+ Base.new(target).call
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,12 @@
1
+ require "active_support/configurable"
2
+ require_relative "deploy/class_methods"
3
+
4
+ module Rumination
5
+ module Deploy
6
+ include ActiveSupport::Configurable
7
+ extend Deploy::ClassMethods
8
+ UnknownTarget = Class.new(RuntimeError)
9
+ BootstrappedAlready = Class.new(RuntimeError)
10
+ DatabaseInitError = Class.new(RuntimeError)
11
+ end
12
+ end
@@ -0,0 +1,34 @@
1
+ require_relative "sh"
2
+
3
+ module Rumination
4
+ module DockerCompose
5
+ Container = Struct.new(:name) do
6
+ include Sh
7
+
8
+ def has_file?(path)
9
+ run "test -f #{path}"
10
+ $? == 0
11
+ end
12
+
13
+ def up?
14
+ exec "true"
15
+ $? == 0
16
+ end
17
+
18
+ def exec command
19
+ sh "docker-compose exec #{name} #{command}"
20
+ self
21
+ end
22
+
23
+ def run command
24
+ sh "docker-compose run --rm #{name} #{command}"
25
+ self
26
+ end
27
+
28
+ def restart
29
+ sh "docker-compose restart #{name}"
30
+ self
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,10 @@
1
+ module Rumination
2
+ module DockerCompose
3
+ module Sh
4
+ def sh command
5
+ puts command
6
+ system command
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,23 @@
1
+ require_relative "docker_compose/container"
2
+ require_relative "docker_compose/sh"
3
+
4
+ module Rumination
5
+ module DockerCompose
6
+ extend Sh
7
+
8
+ def self.build
9
+ sh "docker-compose build"
10
+ self
11
+ end
12
+
13
+ def self.down
14
+ sh "docker-compose down"
15
+ self
16
+ end
17
+
18
+ def self.up
19
+ sh "docker-compose up -d"
20
+ self
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,12 @@
1
+ require "rails/railtie"
2
+
3
+ module Rumination
4
+ class Railtie < Rails::Railtie
5
+ rake_tasks do
6
+ require "rumination/deploy"
7
+ Dir[File.expand_path("../tasks/**/*.rake", __FILE__)].each do |path|
8
+ load path
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,11 @@
1
+ namespace :deploy do
2
+ task :bootstrap, [:target] do |t, args|
3
+ args.with_defaults target: :development
4
+ begin
5
+ Rumination::Deploy.bootstrap(target: args.target)
6
+ rescue Rumination::Deploy::BootstrappedAlready
7
+ abort "'#{args.target}' has already been bootstrapped"
8
+ end
9
+ end
10
+ end
11
+
@@ -0,0 +1,30 @@
1
+ namespace :deploy do
2
+ task :unload, [:target] do |t, args|
3
+ vhost = ENV["VIRTUAL_HOST"]
4
+ if vhost.present?
5
+ sh "rm -f /etc/nginx/vhost.d/#{vhost}*"
6
+ end
7
+ end
8
+
9
+ task :finish, [:target] => %w[static_files vhost_conf]
10
+
11
+ task :static_files, [:target] do |t, args|
12
+ vhost = ENV["VIRTUAL_HOST"]
13
+ if vhost
14
+ sh "rsync -av public/ /var/www/#{vhost}"
15
+ end
16
+ end
17
+
18
+ task :vhost_conf, [:target] do |t, args|
19
+ def erb_config basename, vhost
20
+ template = "config/nginx/vhost.d/#{basename}.erb"
21
+ if vhost && File.exists?(template)
22
+ new_name = basename.sub("app", vhost)
23
+ sh "erb #{template} > /etc/nginx/vhost.d/#{new_name}"
24
+ end
25
+ end
26
+ vhost = ENV["VIRTUAL_HOST"]
27
+ erb_config "app", vhost
28
+ erb_config "app_location", vhost
29
+ end
30
+ end
@@ -0,0 +1,4 @@
1
+ task :deploy, [:target] do |t, args|
2
+ args.with_defaults target: :development
3
+ Rumination::Deploy.app(target: args.target)
4
+ end
@@ -1,3 +1,3 @@
1
1
  module Rumination
2
- VERSION = "0.5.1"
2
+ VERSION = "0.6.0"
3
3
  end
data/lib/rumination.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require "active_support/configurable"
2
+ require "rumination/railtie" if defined?(Rails)
2
3
 
3
4
  module Rumination
4
5
  include ActiveSupport::Configurable
data/rumination.gemspec CHANGED
@@ -27,4 +27,6 @@ Gem::Specification.new do |spec|
27
27
 
28
28
  spec.add_dependency "activesupport"
29
29
  spec.add_dependency "activemodel"
30
+ spec.add_dependency "railties"
31
+ spec.add_dependency "dotenv"
30
32
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rumination
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Artem Baguinski
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-03-17 00:00:00.000000000 Z
11
+ date: 2017-03-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -80,6 +80,34 @@ dependencies:
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: railties
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: dotenv
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
83
111
  description: development utilities
84
112
  email:
85
113
  - abaguinski@depraktijkindex.nl
@@ -95,12 +123,23 @@ files:
95
123
  - README.md
96
124
  - Rakefile
97
125
  - bin/console
126
+ - bin/rspec
98
127
  - bin/setup
99
128
  - lib/rumination.rb
129
+ - lib/rumination/deploy.rb
130
+ - lib/rumination/deploy/base.rb
131
+ - lib/rumination/deploy/class_methods.rb
100
132
  - lib/rumination/dev_user.rb
133
+ - lib/rumination/docker_compose.rb
134
+ - lib/rumination/docker_compose/container.rb
135
+ - lib/rumination/docker_compose/sh.rb
101
136
  - lib/rumination/pg.rb
102
137
  - lib/rumination/pg/commands.rb
103
138
  - lib/rumination/pg/restore.rb
139
+ - lib/rumination/railtie.rb
140
+ - lib/rumination/tasks/deploy.rake
141
+ - lib/rumination/tasks/deploy/bootstrap.rake
142
+ - lib/rumination/tasks/deploy/finish.rake
104
143
  - lib/rumination/version.rb
105
144
  - rumination.gemspec
106
145
  homepage: https://github.com/artm/rumination