noveku 0.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.
- data/README.md +50 -0
- data/bin/hrp +6 -0
- data/bin/hrs +6 -0
- data/lib/noveku/base.rb +48 -0
- data/lib/noveku/production.rb +8 -0
- data/lib/noveku/staging.rb +8 -0
- data/lib/noveku/version.rb +3 -0
- data/lib/noveku.rb +4 -0
- data/noveku.gemspec +19 -0
- metadata +57 -0
data/README.md
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
# Noveku
|
2
|
+
|
3
|
+
A collection of aliases we use when interacting with heroku.
|
4
|
+
This gem was inspired by [a collection of thoughtbot aliases](https://github.com/thoughtbot/dotfiles/commit/86494030441e88ef9c2e2ceaa00a4da82023e445).
|
5
|
+
|
6
|
+
## Prerequisites
|
7
|
+
|
8
|
+
This gem depends on no other gems. However :
|
9
|
+
|
10
|
+
* the presence of the command `heroku` (either via the gem, or the toolbelt) is assumed;
|
11
|
+
* the `hrs` tool assumes there is a heroku git remote named `staging`;
|
12
|
+
* the `hrp` tool assumes there is a heroku git remove named `production`.
|
13
|
+
|
14
|
+
## Installation
|
15
|
+
|
16
|
+
`gem install noveku`. Since it will not be part of your application, only of your workflow,
|
17
|
+
you should install it globally, not via bundler and your project's Gemfile.
|
18
|
+
|
19
|
+
## Usage
|
20
|
+
|
21
|
+
This gem exposes two executables :
|
22
|
+
|
23
|
+
* `hrs` (heroku staging) : will execute the given commands for the `staging` remote
|
24
|
+
* `hrp` (heroku production) : will execute the given commands for the `production` remote
|
25
|
+
|
26
|
+
## Commands
|
27
|
+
|
28
|
+
Supported commands and their equivalent :
|
29
|
+
|
30
|
+
* `console`: `heroku run console --remote ENV`
|
31
|
+
* `migrate`: `heroku run rake db:migrate --remote ENV && heroku restart --remote ENV`
|
32
|
+
* `tail`: `heroku logs --tail --remote ENV`
|
33
|
+
|
34
|
+
When giving a command that is not specifically supported, it will be passed to `heroku` : `heroku ARGS --remote ENV".
|
35
|
+
This makes several other commands available, such as `restart`, `releases`, ...
|
36
|
+
|
37
|
+
## What's next
|
38
|
+
|
39
|
+
Commands that will be soon supported : `rake`, commands for dumping mongolab database.
|
40
|
+
|
41
|
+
## Contributions
|
42
|
+
|
43
|
+
1. Check for open issues or open a fresh issue to start a discussion around a feature idea or a bug. In the first case, please include a use-case.
|
44
|
+
2. Fork the repository on Github, make a feature branch, work on this branch.
|
45
|
+
3. If necessary, write a test which shows that the bug was fixed or that the feature works as expected.
|
46
|
+
4. Send a pull request and annoy us until we notice it. :)
|
47
|
+
|
48
|
+
## Changelog
|
49
|
+
|
50
|
+
* `0.1`: First version. Available commands : `console`, `restart`, `tail`
|
data/bin/hrp
ADDED
data/bin/hrs
ADDED
data/lib/noveku/base.rb
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
module Noveku
|
2
|
+
# This exception will be raised if @environment is not present
|
3
|
+
class NotAValidEnvironment < StandardError
|
4
|
+
end
|
5
|
+
|
6
|
+
# Common functionnality
|
7
|
+
class Base
|
8
|
+
# Keep track of the given commands
|
9
|
+
def initialize(commands)
|
10
|
+
@commands = commands
|
11
|
+
@command = @commands.first
|
12
|
+
end
|
13
|
+
|
14
|
+
# Run the commands
|
15
|
+
def run
|
16
|
+
raise NotAValidEnvironment unless @environment
|
17
|
+
|
18
|
+
send "#{@command}_cmd"
|
19
|
+
end
|
20
|
+
|
21
|
+
# Open the console
|
22
|
+
def console_cmd
|
23
|
+
system "heroku run console --remote #{@environment}"
|
24
|
+
end
|
25
|
+
|
26
|
+
# Execute migrations & restart app
|
27
|
+
def migrate_cmd
|
28
|
+
system %{
|
29
|
+
heroku run rake db:migrate --remote #{@environment} &&
|
30
|
+
heroku restart --remote #{@environment}
|
31
|
+
}
|
32
|
+
end
|
33
|
+
|
34
|
+
# Tail logs
|
35
|
+
def tail_cmd
|
36
|
+
system "heroku logs --tail --remote #{@environment}"
|
37
|
+
end
|
38
|
+
|
39
|
+
def method_missing(name, *args, &block)
|
40
|
+
# If this is a command with no specific support, pass the raw arguments to `heroku` directly
|
41
|
+
if name.to_s.end_with?('_cmd')
|
42
|
+
system "heroku #{@commands.join(' ')} --remote #{@environment}"
|
43
|
+
else
|
44
|
+
super
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
data/lib/noveku.rb
ADDED
data/noveku.gemspec
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
$:.unshift File.expand_path('../lib', __FILE__)
|
2
|
+
require 'noveku/version'
|
3
|
+
|
4
|
+
Gem::Specification.new do |s|
|
5
|
+
s.name = "noveku"
|
6
|
+
s.version = Noveku::VERSION
|
7
|
+
s.platform = Gem::Platform::RUBY
|
8
|
+
s.authors = ["Novelys"]
|
9
|
+
s.email = ["contact@novelys.com"]
|
10
|
+
s.homepage = "http://github.com/novelys/noveku"
|
11
|
+
s.summary = "Heroku shorcuts for commonly used commands at novelys"
|
12
|
+
s.description = "A set of heroku aliases meant to speed up heroku interaction when dealing with multilple heroku remotes."
|
13
|
+
s.rubyforge_project = s.name
|
14
|
+
s.required_rubygems_version = ">= 1.3.6"
|
15
|
+
s.files = `git ls-files`.split("\n")
|
16
|
+
s.executables << 'hrp'
|
17
|
+
s.executables << 'hrs'
|
18
|
+
s.require_path = 'lib'
|
19
|
+
end
|
metadata
ADDED
@@ -0,0 +1,57 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: noveku
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: '0.1'
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Novelys
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2013-01-13 00:00:00.000000000 Z
|
13
|
+
dependencies: []
|
14
|
+
description: A set of heroku aliases meant to speed up heroku interaction when dealing
|
15
|
+
with multilple heroku remotes.
|
16
|
+
email:
|
17
|
+
- contact@novelys.com
|
18
|
+
executables:
|
19
|
+
- hrp
|
20
|
+
- hrs
|
21
|
+
extensions: []
|
22
|
+
extra_rdoc_files: []
|
23
|
+
files:
|
24
|
+
- README.md
|
25
|
+
- bin/hrp
|
26
|
+
- bin/hrs
|
27
|
+
- lib/noveku.rb
|
28
|
+
- lib/noveku/base.rb
|
29
|
+
- lib/noveku/production.rb
|
30
|
+
- lib/noveku/staging.rb
|
31
|
+
- lib/noveku/version.rb
|
32
|
+
- noveku.gemspec
|
33
|
+
homepage: http://github.com/novelys/noveku
|
34
|
+
licenses: []
|
35
|
+
post_install_message:
|
36
|
+
rdoc_options: []
|
37
|
+
require_paths:
|
38
|
+
- lib
|
39
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
40
|
+
none: false
|
41
|
+
requirements:
|
42
|
+
- - ! '>='
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
version: '0'
|
45
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
46
|
+
none: false
|
47
|
+
requirements:
|
48
|
+
- - ! '>='
|
49
|
+
- !ruby/object:Gem::Version
|
50
|
+
version: 1.3.6
|
51
|
+
requirements: []
|
52
|
+
rubyforge_project: noveku
|
53
|
+
rubygems_version: 1.8.23
|
54
|
+
signing_key:
|
55
|
+
specification_version: 3
|
56
|
+
summary: Heroku shorcuts for commonly used commands at novelys
|
57
|
+
test_files: []
|