rails-ahoy 0.1.3 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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