rails-ahoy 0.1.3 → 0.2.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: e194f3aa190aab39d3d6a920d5cc4b1f88f20c76
4
- data.tar.gz: 89ecdeae9947711000ed0af3a8dbd442690a549b
3
+ metadata.gz: 08f470fbac5f3a6329f346ed0bcaed826b4d0714
4
+ data.tar.gz: 7d183a79ee04bcf6c00b079069024f32c4ff31dc
5
5
  SHA512:
6
- metadata.gz: 66cd00495a5cc82cf6e146d1c2e380e1d6ed93c2f55a2c4867342b074a38b627e1be6a29eb90be06ba022b2b05b0f92e3fb3b850b58da30d33297e5728f8dd66
7
- data.tar.gz: dd454fa0204b7f78526c4d7b83acd3f04444dc26ff4a460c60a9848da66c0c582b114461c12772f9bbb1e9896203e31b5c6e82e57c2a30e05077da294e3439c1
6
+ metadata.gz: a04b4b7ef531eed308ff3512bf4cca7eb2ab0a90938c3add31696ab4101d7581d3781fc714947ef186868fe1f1910ca7392aef0e131928f626188c351f507d93
7
+ data.tar.gz: 8f1e15943b9a4e478d579e9c61772a27eea92f54f79ebf2cbc33a9b451439cc2ddf0b7e701891a7899e025316ea90f7f3929ca2024f97943c5167f81af6aa46c
data/Gemfile CHANGED
@@ -2,3 +2,5 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in ahoy.gemspec
4
4
  gemspec
5
+ gem 'thor'
6
+ gem 'fileutils'
@@ -3,13 +3,7 @@ require 'ahoy'
3
3
 
4
4
  module Ahoy
5
5
  def self.env
6
- begin
7
- env_file = File.open(Rails.root + ".env/#{Rails.env}_env.yml", 'r')
8
- rescue
9
- if env_file
10
- env_yaml = YAML.load(env_file)
11
- env_yaml.each { |k,v| ENV[k.to_s.upcase] = v.to_s } if env_yaml.present?
12
- end
13
- end
6
+ env_yaml = YAML.load(File.open(Rails.root + ".env/#{Rails.env}_env.yml", 'r'))
7
+ env_yaml.each { |k,v| ENV[k.to_s.upcase] = v.to_s } if env_yaml.present?
14
8
  end
15
9
  end
@@ -1,3 +1,3 @@
1
1
  module Ahoy
2
- VERSION = "0.1.3"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -86,7 +86,7 @@ module Ahoy
86
86
  end
87
87
 
88
88
  def copy_templates
89
- template 'ansible_templates/_production', 'config/ansible/production'
89
+ template 'ansible_templates/_hosts', 'config/ansible/hosts'
90
90
  template 'ansible_templates/playbooks/_production.yml', 'config/ansible/playbooks/production.yml'
91
91
  template 'ansible_templates/playbooks/group_vars/_all.yml', 'config/ansible/playbooks/group_vars/all.yml'
92
92
  template '_puma.sh', 'bin/puma.sh'
@@ -96,15 +96,12 @@ module Ahoy
96
96
  end
97
97
 
98
98
  def add_gems
99
- gem_group :production do
100
- gem 'puma'
101
- gem 'rb-readline'
102
- end
99
+ gem 'puma'
100
+ gem 'rb-readline'
103
101
  end
104
102
 
105
103
  def modify_files
106
104
  append_file '.gitignore', '.env/'
107
- prepend_file 'config/environment.rb', "require 'ahoy'\n"
108
105
  inject_into_file 'config/environment.rb', after: "require File.expand_path('../application', __FILE__)\n\n" do <<-'RUBY'
109
106
  Ahoy.env
110
107
 
@@ -113,7 +110,7 @@ Ahoy.env
113
110
  end
114
111
 
115
112
  def change_permissions
116
- FileUtils.chmod 0751, 'config/ansible/production.sh'
113
+ FileUtils.chmod 0751, 'config/ansible/provision.sh'
117
114
  FileUtils.chmod 0751, 'bin/puma.sh'
118
115
  end
119
116
 
@@ -3,33 +3,34 @@ require 'mina/rails'
3
3
  require 'mina/git'
4
4
  require 'mina/rbenv'
5
5
 
6
- task :setup_variables => :environment do
7
- set :user, '<%= Ahoy::VariableStore.variables['server_user'] %>'
6
+ set :deploy_to, '/var/www/<%= Ahoy::VariableStore.variables['app_name'] %>'
7
+ set :app_path, '/var/www/<%= Ahoy::VariableStore.variables['app_name'] %>/current'
8
+ set :user, '<%= Ahoy::VariableStore.variables['server_user'] %>'
9
+ set :port, '<%= Ahoy::VariableStore.variables['server_ssh_port'] %>'
10
+ set :repository, '<%= Ahoy::VariableStore.variables['app_repo'] %>'
11
+ set :forward_agent, true
12
+
13
+ task :production do
8
14
  set :domain, '<%= Ahoy::VariableStore.variables['server_domain'] %>'
9
- set :port, '<%= Ahoy::VariableStore.variables['server_ssh_port'] %>'
10
- set :repository, '<%= Ahoy::VariableStore.variables['app_repo'] %>'
11
15
  set :branch, '<%= Ahoy::VariableStore.variables['app_repo_branch'] %>'
12
- set :forward_agent, true
13
- set :deploy_to, '/var/www/<%= Ahoy::VariableStore.variables['app_name'] %>'
14
- set :app_path, '/var/www/<%= Ahoy::VariableStore.variables['app_name'] %>/current'
16
+ set :rails_env, 'production'
15
17
  set :shared_paths, ['config/database.yml', 'config/secrets.yml', 'log', 'tmp', '.env/production_env.yml']
16
18
  end
17
19
 
18
- task :production do
19
- invoke :setup_variables
20
- end
21
-
22
20
  task :environment do
23
- queue! %[export PATH="/usr/local/rbenv/bin:/usr/local/rbenv/shims:$PATH"]
21
+ queue 'export PATH=/usr/local/rbenv/bin:/usr/local/rbenv/shims:$PATH'
22
+ queue 'source ~/.session_vars'
24
23
  end
25
24
 
26
- task :setup => :environment do
27
- ['log', 'config', 'tmp/log', 'tmp/pids', 'tmp/sockets'].each do |dir|
28
- queue! %[mkdir -m 750 -p "#{deploy_to}/#{shared_path}/#{dir}"]
29
- end
25
+ task setup: :environment do
26
+ queue "mkdir -m 750 -p #{deploy_to}/#{shared_path}/log"
27
+ queue "mkdir -m 750 -p #{deploy_to}/#{shared_path}/config"
28
+ queue "mkdir -m 750 -p #{deploy_to}/#{shared_path}/tmp/log"
29
+ queue "mkdir -m 750 -p #{deploy_to}/#{shared_path}/tmp/pids"
30
+ queue "mkdir -m 750 -p #{deploy_to}/#{shared_path}/tmp/sockets"
30
31
  end
31
32
 
32
- task :deploy => :environment do
33
+ task deploy: :environment do
33
34
  deploy do
34
35
  invoke :'git:clone'
35
36
  invoke :'deploy:link_shared_paths'
@@ -44,9 +45,15 @@ task :deploy => :environment do
44
45
  end
45
46
 
46
47
  namespace :server do
47
- [:start, :stop, :restart].each do |action|
48
- task action => :environment do
49
- queue "cd #{app_path} && RAILS_ENV=#{settings[:rails_env]} && bin/puma.sh #{action}"
50
- end
48
+ task start: :environment do
49
+ queue "cd #{app_path} && rails_env=#{rails_env} && bin/puma.sh start"
50
+ end
51
+
52
+ task stop: :environment do
53
+ queue "cd #{app_path} && rails_env=#{rails_env} && bin/puma.sh stop"
54
+ end
55
+
56
+ task restart: :environment do
57
+ queue "cd #{app_path} && rails_env=#{rails_env} && bin/puma.sh restart"
51
58
  end
52
59
  end
@@ -1,10 +1,9 @@
1
1
  #! /bin/sh
2
2
 
3
3
  BUNDLE_BIN=/usr/local/rbenv/shims/bundle
4
- APP_PATH=/var/www/<%= Ahoy::VariableStore.variables['app_name'] %>
5
- PUMA_CONFIG_FILE=$APP_PATH/current/config/puma.rb
6
- PUMA_PID_FILE=$APP_PATH/shared/tmp/pids/puma.pid
7
- PUMA_SOCKET=$APP_PATH/shared/tmp/sockets/puma.sock
4
+ PUMA_CONFIG_FILE=$APP_ROOT/current/config/puma.rb
5
+ PUMA_PID_FILE=$APP_ROOT/shared/tmp/pids/puma.pid
6
+ PUMA_SOCKET=$APP_ROOT/shared/tmp/sockets/puma.sock
8
7
 
9
8
  # check if puma process is running
10
9
  puma_is_running() {
@@ -1,14 +1,17 @@
1
1
  ---
2
2
  - name: create config directory
3
3
  sudo: true
4
- file: path=/var/www/{{app_root}}/shared/config owner={{server_user}} group={{server_user}} recurse=yes state=directory
4
+ file: path={{app_root}}/shared/config owner={{server_user}} group={{server_user}} recurse=yes state=directory
5
5
 
6
6
  - name: copy database.yml
7
- template: src=database.yml dest=/var/www/{{app_name}}/shared/config/database.yml owner={{server_user}} group={{server_user}}
7
+ template: src=database.yml dest={{app_root}}/shared/config/database.yml owner={{server_user}} group={{server_user}}
8
8
 
9
9
  - name: copy secrets.yml
10
- template: src=secrets.yml dest=/var/www/{{app_name}}/shared/config/secrets.yml owner={{server_user}} group={{server_user}}
10
+ template: src=secrets.yml dest={{app_root}}/shared/config/secrets.yml owner={{server_user}} group={{server_user}}
11
11
 
12
- - name: update www directory permissions
12
+ - name: update app root directory permissions
13
13
  sudo: true
14
- file: path=/var/www owner={{server_user}} group={{server_user}} recurse=yes state=directory
14
+ file: path={{app_root}} owner={{server_user}} group={{server_user}} recurse=yes state=directory
15
+
16
+ - name: add symlink to app root
17
+ file: src={{app_root}} dest=/home/{{server_user}}/app owner={{server_user}} group={{server_user}} state=link
@@ -1,4 +1,4 @@
1
- production:
1
+ {{rails_env}}:
2
2
  adapter: postgresql
3
3
  host: localhost
4
4
  encoding: unicode
@@ -1,2 +1,2 @@
1
- production:
1
+ {{rails_env}}:
2
2
  secret_key_base: <%= ENV['SECRET_KEY_BASE'] %>
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  - name: check if .env exists
3
- stat: path=/var/www/{{app_root}}/shared/.env/production_env.yml
3
+ stat: path={{app_root}}/shared/.env/{{rails_env}}_env.yml
4
4
  register: env_file
5
5
 
6
6
  - name: delete .env if exists
7
- shell: rm /var/www/{{app_root}}/shared/.env/production_env.yml
7
+ shell: rm {{app_root}}/shared/.env/{{rails_env}}_env.yml
8
8
  when: env_file.stat.exists == true
9
9
 
10
10
  - name: add environment variables to .env
11
11
  lineinfile:
12
- dest=/var/www/{{app_root}}/shared/.env/production_env.yml
12
+ dest={{app_root}}/shared/.env/{{rails_env}}_env.yml
13
13
  line='{{item}}'
14
14
  owner={{server_user}}
15
15
  insertafter=EOF
@@ -1,3 +1,3 @@
1
1
  ---
2
- - include: system.yml
2
+ - include: session.yml
3
3
  - include: application.yml
@@ -0,0 +1,23 @@
1
+ ---
2
+ - name: check if .session_vars exists
3
+ stat: path=/home/{{server_user}}/.session_vars
4
+ register: session_vars
5
+
6
+ - name: delete .session_vars if exists
7
+ shell: rm /home/{{server_user}}/.session_vars
8
+ when: session_vars.stat.exists == true
9
+
10
+ - name: add environment variables to .session_vars
11
+ lineinfile:
12
+ dest=/home/{{server_user}}/.session_vars
13
+ line='{{item}}'
14
+ owner={{server_user}}
15
+ insertafter=EOF
16
+ create=true
17
+ with_items:
18
+ - 'export APP_NAME={{app_name}}'
19
+ - 'export APP_ROOT={{app_root}}'
20
+ - 'export RAILS_ENV={{rails_env}}'
21
+
22
+ - name: source .session_vars from .bashrc
23
+ lineinfile: dest=/home/{{server_user}}/.bashrc insertafter=EOF line='source ~/.session_vars'
@@ -0,0 +1 @@
1
+ ansible-playbook playbooks/$1.yml -i hosts
@@ -1,5 +1,3 @@
1
1
  [production]
2
2
  root ansible_ssh_host=<%= Ahoy::VariableStore.variables['server_domain'] == '' ? '127.0.0.1' : Ahoy::VariableStore.variables['server_domain'] %>
3
-
4
- [production]
5
3
  deploy ansible_ssh_host=<%= Ahoy::VariableStore.variables['server_domain'] == '' ? '127.0.0.1' : Ahoy::VariableStore.variables['server_domain'] %> ansible_ssh_port=<%= Ahoy::VariableStore.variables['server_ssh_port'] == '' ? '22' : Ahoy::VariableStore.variables['server_ssh_port'] %>
@@ -2,8 +2,9 @@
2
2
  server_user: <%= Ahoy::VariableStore.variables['server_user'] %>
3
3
  server_domain: <%= Ahoy::VariableStore.variables['server_domain'] %>
4
4
  server_ssh_port: <%= Ahoy::VariableStore.variables['server_ssh_port'] %>
5
+ rails_env: production
5
6
  app_name: <%= Ahoy::VariableStore.variables['app_name'] %>
6
- app_root: <%= Ahoy::VariableStore.variables['app_name'] %>
7
+ app_root: /var/www/<%= Ahoy::VariableStore.variables['app_name'] %>
7
8
  database_name: <%= Ahoy::VariableStore.variables['database_name'] %>
8
9
  database_user: <%= Ahoy::VariableStore.variables['database_user'] %>
9
10
  database_password: <%= Ahoy::VariableStore.variables['database_password'] %>
@@ -40,6 +40,10 @@ module Ahoy
40
40
  copy_file 'ansible_templates/playbooks/_vagrant.yml', 'config/ansible/playbooks/vagrant.yml'
41
41
  end
42
42
 
43
+ def modify_files
44
+ append_file '.gitignore', "\n.vagrant/"
45
+ end
46
+
43
47
  def backup_files
44
48
  FileUtils.mv 'config/database.yml', 'config/database.yml.bak'
45
49
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails-ahoy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nathan Pearson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-25 00:00:00.000000000 Z
11
+ date: 2015-01-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -87,11 +87,10 @@ files:
87
87
  - lib/generators/ahoy/templates/ansible/playbooks/roles/user/tasks/main.yml
88
88
  - lib/generators/ahoy/templates/ansible/playbooks/roles/variables/tasks/application.yml
89
89
  - lib/generators/ahoy/templates/ansible/playbooks/roles/variables/tasks/main.yml
90
- - lib/generators/ahoy/templates/ansible/playbooks/roles/variables/tasks/system.yml
91
- - lib/generators/ahoy/templates/ansible/playbooks/roles/variables/templates/profile
90
+ - lib/generators/ahoy/templates/ansible/playbooks/roles/variables/tasks/session.yml
92
91
  - lib/generators/ahoy/templates/ansible/playbooks/tasks/vagrant_settings.yml
93
- - lib/generators/ahoy/templates/ansible/production.sh
94
- - lib/generators/ahoy/templates/ansible_templates/_production
92
+ - lib/generators/ahoy/templates/ansible/provision.sh
93
+ - lib/generators/ahoy/templates/ansible_templates/_hosts
95
94
  - lib/generators/ahoy/templates/ansible_templates/playbooks/_production.yml
96
95
  - lib/generators/ahoy/templates/ansible_templates/playbooks/_vagrant.yml
97
96
  - lib/generators/ahoy/templates/ansible_templates/playbooks/group_vars/_all.yml
@@ -1,25 +0,0 @@
1
- ---
2
- - name: check if .profile exists
3
- stat: path=/home/{{server_user}}/.profile
4
- register: profile_file
5
-
6
- - name: delete .profile if exists
7
- shell: rm /home/{{server_user}}/.profile
8
- when: profile_file.stat.exists == true
9
-
10
- - name: recreate .profile from a clean template
11
- template: src=profile dest=/home/{{server_user}}/.profile owner=deploy group=deploy
12
-
13
- - name: add environment variables to .profile
14
- lineinfile:
15
- dest=/home/{{server_user}}/.profile
16
- line='{{item}}'
17
- owner={{server_user}}
18
- insertafter=EOF
19
- create=true
20
- with_items:
21
- - export APP_NAME={{app_name}}
22
- - export APP_ROOT={{app_root}}
23
- - export APP_DOMAIN="{{server_domain}}"
24
- - export APP_REPO="{{app_repo}}"
25
- - export APP_REPO_BRANCH={{app_repo_branch}}
@@ -1,22 +0,0 @@
1
- # ~/.profile: executed by the command interpreter for login shells.
2
- # This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
3
- # exists.
4
- # see /usr/share/doc/bash/examples/startup-files for examples.
5
- # the files are located in the bash-doc package.
6
-
7
- # the default umask is set in /etc/profile; for setting the umask
8
- # for ssh logins, install and configure the libpam-umask package.
9
- #umask 022
10
-
11
- # if running bash
12
- if [ -n "$BASH_VERSION" ]; then
13
- # include .bashrc if it exists
14
- if [ -f "$HOME/.bashrc" ]; then
15
- . "$HOME/.bashrc"
16
- fi
17
- fi
18
-
19
- # set PATH so it includes user's private bin if it exists
20
- if [ -d "$HOME/bin" ] ; then
21
- PATH="$HOME/bin:$PATH"
22
- fi
@@ -1 +0,0 @@
1
- ansible-playbook playbooks/production.yml -i production