shoestrap 0.1.1 → 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.
- data/CHANGELOG.md +14 -0
- data/lib/generators/shoestrap/app_generator.rb +1 -0
- data/lib/generators/shoestrap/cms_generator.rb +1 -1
- data/lib/generators/shoestrap/deployment_generator.rb +42 -0
- data/lib/generators/shoestrap/templates/{migration.rb → cms/migration.rb} +0 -0
- data/lib/generators/shoestrap/templates/{model.rb → cms/model.rb} +0 -0
- data/lib/generators/shoestrap/templates/{model.yml.erb → cms/model.yml.erb} +0 -0
- data/lib/generators/shoestrap/templates/{view.yml.erb → cms/view.yml.erb} +0 -0
- data/lib/generators/shoestrap/templates/deployment/database.yml.erb +29 -0
- data/lib/generators/shoestrap/templates/deployment/deployment.rake.erb +19 -0
- data/lib/generators/shoestrap/templates/deployment/unicorn.rb +38 -0
- data/lib/shoestrap/app_builder.rb +5 -8
- data/shoestrap.gemspec +1 -1
- data/templates/Gemfile.erb +4 -5
- data/templates/README.md.erb +1 -2
- metadata +10 -6
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,19 @@
|
|
1
1
|
#Changelog
|
2
2
|
|
3
|
+
## 0.2.0 - 2013-03-09
|
4
|
+
|
5
|
+
- Preparations for new servers/workflow:
|
6
|
+
A new generator has been added which is called on app generation.
|
7
|
+
It adds:
|
8
|
+
- unicorn config
|
9
|
+
- database config
|
10
|
+
- deployment task
|
11
|
+
|
12
|
+
The generator can be called on exisiting apps as well in order to migrate
|
13
|
+
to the new server setup:
|
14
|
+
|
15
|
+
`rails generate shoestrap:deployment`
|
16
|
+
|
3
17
|
## 0.1.1 - 2013-02-14
|
4
18
|
|
5
19
|
* Fix: Don't use deleted kuhsaft branch
|
@@ -4,7 +4,7 @@ require "rails/generators/active_record/model/model_generator"
|
|
4
4
|
|
5
5
|
module Shoestrap
|
6
6
|
class CmsGenerator < ActiveRecord::Generators::ModelGenerator
|
7
|
-
source_root File.expand_path('../templates', __FILE__)
|
7
|
+
source_root File.expand_path('../templates/cms', __FILE__)
|
8
8
|
# ... and those files are from: activerecord-3.2.11/lib/rails/generators/active_record/model/templates
|
9
9
|
|
10
10
|
remove_hook_for :test_framework
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'rails/generators'
|
2
|
+
require 'pathname'
|
3
|
+
|
4
|
+
module Shoestrap
|
5
|
+
class DeploymentGenerator < Rails::Generators::Base
|
6
|
+
source_root File.expand_path('../templates/deployment', __FILE__)
|
7
|
+
|
8
|
+
def add_unicorn_config
|
9
|
+
copy_file 'unicorn.rb', 'config/unicorn.rb'
|
10
|
+
end
|
11
|
+
|
12
|
+
def add_database_config
|
13
|
+
template 'database.yml.erb', 'config/database.yml', :force => true
|
14
|
+
end
|
15
|
+
|
16
|
+
def add_deployment_task
|
17
|
+
template 'deployment.rake.erb', 'lib/tasks/deployment.rake'
|
18
|
+
end
|
19
|
+
|
20
|
+
protected
|
21
|
+
|
22
|
+
def app_name
|
23
|
+
Pathname.new(Rails.root).basename.to_s
|
24
|
+
end
|
25
|
+
|
26
|
+
def db_credentials_production
|
27
|
+
'<%= begin IO.read("#{ENV[\'HOME\']}/.config/' + app_name + '_production/db") rescue "" end %>'
|
28
|
+
end
|
29
|
+
|
30
|
+
def db_credentials_staging
|
31
|
+
'<%= begin IO.read("#{ENV[\'HOME\']}/.config/' + app_name + '_staging/db") rescue "" end %>'
|
32
|
+
end
|
33
|
+
|
34
|
+
def restart_unicorn_command
|
35
|
+
'#{ENV[\'HOME\']}/unicorn.sh upgrade ' + app_name + '_#{ENV[\'RAILS_ENV\']}'
|
36
|
+
end
|
37
|
+
|
38
|
+
def restart_monit_command
|
39
|
+
'monit -g ' + app_name + '_#{ENV[\'RAILS_ENV\']} monitor'
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,29 @@
|
|
1
|
+
production:
|
2
|
+
adapter: postgresql
|
3
|
+
database: <%= app_name %>_production
|
4
|
+
username: <%= app_name %>
|
5
|
+
password: <%= db_credentials_production %>
|
6
|
+
encoding: unicode
|
7
|
+
pool: 5
|
8
|
+
|
9
|
+
staging:
|
10
|
+
adapter: postgresql
|
11
|
+
database: <%= app_name %>_staging
|
12
|
+
username: <%= app_name %>
|
13
|
+
password: <%= db_credentials_staging %>
|
14
|
+
encoding: unicode
|
15
|
+
pool: 5
|
16
|
+
|
17
|
+
development:
|
18
|
+
adapter: postgresql
|
19
|
+
database: <%= app_name %>_development
|
20
|
+
username: screenconcept
|
21
|
+
password:
|
22
|
+
encoding: unicode
|
23
|
+
pool: 5
|
24
|
+
|
25
|
+
test:
|
26
|
+
adapter: sqlite3
|
27
|
+
database: db/test.sqlite3
|
28
|
+
pool: 5
|
29
|
+
timeout: 5000
|
@@ -0,0 +1,19 @@
|
|
1
|
+
desc 'run post-deployment stuff'
|
2
|
+
task :post_deploy do
|
3
|
+
|
4
|
+
# Precompile assets
|
5
|
+
puts 'Precompiling assets'
|
6
|
+
Rake::Task["assets:precompile"].invoke
|
7
|
+
|
8
|
+
# Run migrations
|
9
|
+
puts 'Running migrations if necessary'
|
10
|
+
Rake::Task["db:migrate"].invoke
|
11
|
+
|
12
|
+
# Trigger Unicorn reexec with 0 downtime
|
13
|
+
puts 'restarting unicorns'
|
14
|
+
system "<%= restart_unicorn_command %>"
|
15
|
+
|
16
|
+
# Enable monit monitoring
|
17
|
+
puts 'enable monit'
|
18
|
+
system "<%= restart_monit_command %>"
|
19
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
APP_ROOT = File.expand_path(File.dirname(File.dirname(__FILE__)))
|
2
|
+
|
3
|
+
worker_processes 3
|
4
|
+
working_directory APP_ROOT
|
5
|
+
preload_app true
|
6
|
+
timeout 30
|
7
|
+
|
8
|
+
listen APP_ROOT + "/tmp/unicorn.sock", :backlog => 64
|
9
|
+
pid APP_ROOT + "/tmp/unicorn.pid"
|
10
|
+
|
11
|
+
stderr_path APP_ROOT + "/log/unicorn.stderr.log"
|
12
|
+
stdout_path APP_ROOT + "/log/unicorn.stdout.log"
|
13
|
+
|
14
|
+
before_fork do |server, worker|
|
15
|
+
if defined?(ActiveRecord::Base)
|
16
|
+
ActiveRecord::Base.connection.disconnect!
|
17
|
+
end
|
18
|
+
|
19
|
+
old_pid = APP_ROOT + '/tmp/unicorn.pid.oldbin'
|
20
|
+
if File.exists?(old_pid) && server.pid != old_pid
|
21
|
+
begin
|
22
|
+
puts "Killing old master"
|
23
|
+
Process.kill("QUIT", File.read(old_pid).to_i)
|
24
|
+
rescue Errno::ENOENT, Errno::ESRCH
|
25
|
+
puts "Old master alerady dead"
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
after_fork do |server, worker|
|
31
|
+
if defined?(ActiveRecord::Base)
|
32
|
+
ActiveRecord::Base.establish_connection
|
33
|
+
end
|
34
|
+
|
35
|
+
child_pid = server.config[:pid].sub('.pid', ".#{worker.nr}.pid")
|
36
|
+
system("echo #{Process.pid} > #{child_pid}")
|
37
|
+
end
|
38
|
+
|
@@ -1,11 +1,7 @@
|
|
1
1
|
module Shoestrap
|
2
2
|
class AppBuilder < Rails::AppBuilder
|
3
3
|
def readme
|
4
|
-
|
5
|
-
app_name: app_name
|
6
|
-
}
|
7
|
-
|
8
|
-
template 'README.md.erb', 'README.md', config
|
4
|
+
template 'README.md.erb', 'README.md'
|
9
5
|
end
|
10
6
|
|
11
7
|
def gemfile
|
@@ -25,9 +21,6 @@ module Shoestrap
|
|
25
21
|
end
|
26
22
|
|
27
23
|
def setup_database
|
28
|
-
# TODO: implement
|
29
|
-
# use pg db sample
|
30
|
-
# rake db:create?
|
31
24
|
rake 'db:migrate'
|
32
25
|
rake 'db:seed'
|
33
26
|
end
|
@@ -94,6 +87,10 @@ module Shoestrap
|
|
94
87
|
template '_main_navigation.html.haml.erb', 'app/views/kuhsaft/cms/admin/_main_navigation.html.haml'
|
95
88
|
end
|
96
89
|
|
90
|
+
def setup_deployment
|
91
|
+
generate 'shoestrap:deployment'
|
92
|
+
end
|
93
|
+
|
97
94
|
def outro
|
98
95
|
say 'Application is ready!'
|
99
96
|
end
|
data/shoestrap.gemspec
CHANGED
@@ -3,7 +3,7 @@ $:.push File.expand_path("../lib", __FILE__)
|
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
5
|
s.name = "shoestrap"
|
6
|
-
s.version = '0.
|
6
|
+
s.version = '0.2.0'
|
7
7
|
s.platform = Gem::Platform::RUBY
|
8
8
|
s.authors = ["Immanuel Häussermann", "Felipe Kaufmann", "Phil Schilter", "Noëlle Rosenberg"]
|
9
9
|
s.email = "info@screenconcept.ch"
|
data/templates/Gemfile.erb
CHANGED
@@ -2,11 +2,8 @@ source 'https://rubygems.org'
|
|
2
2
|
|
3
3
|
<%= rails_gemfile_entry -%>
|
4
4
|
|
5
|
-
<%= database_gemfile_entry -%>
|
6
|
-
|
7
|
-
<%= "gem 'jruby-openssl'\n" if defined?(JRUBY_VERSION) -%>
|
8
|
-
|
9
5
|
<%= assets_gemfile_entry %>
|
6
|
+
|
10
7
|
<%= javascript_gemfile_entry -%>
|
11
8
|
|
12
9
|
gem 'bcrypt-ruby', '~> 3.0.0'
|
@@ -23,15 +20,17 @@ gem 'mail'
|
|
23
20
|
gem 'fabrication'
|
24
21
|
gem 'shoestrap'
|
25
22
|
gem 'kuhsaft'
|
23
|
+
gem 'pg'
|
26
24
|
|
27
25
|
group :development, :test do
|
28
26
|
gem 'pry'
|
29
27
|
gem 'rspec-rails'
|
28
|
+
gem 'cucumber-rails'
|
30
29
|
end
|
31
30
|
|
32
31
|
group :test do
|
33
32
|
gem 'database_cleaner'
|
34
|
-
gem '
|
33
|
+
gem 'sqlite3'
|
35
34
|
end
|
36
35
|
|
37
36
|
group :development do
|
data/templates/README.md.erb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: shoestrap
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -12,7 +12,7 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
date: 2013-
|
15
|
+
date: 2013-03-09 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: rspec
|
@@ -81,10 +81,14 @@ files:
|
|
81
81
|
- bin/shoestrap
|
82
82
|
- lib/generators/shoestrap/app_generator.rb
|
83
83
|
- lib/generators/shoestrap/cms_generator.rb
|
84
|
-
- lib/generators/shoestrap/
|
85
|
-
- lib/generators/shoestrap/templates/
|
86
|
-
- lib/generators/shoestrap/templates/model.
|
87
|
-
- lib/generators/shoestrap/templates/
|
84
|
+
- lib/generators/shoestrap/deployment_generator.rb
|
85
|
+
- lib/generators/shoestrap/templates/cms/migration.rb
|
86
|
+
- lib/generators/shoestrap/templates/cms/model.rb
|
87
|
+
- lib/generators/shoestrap/templates/cms/model.yml.erb
|
88
|
+
- lib/generators/shoestrap/templates/cms/view.yml.erb
|
89
|
+
- lib/generators/shoestrap/templates/deployment/database.yml.erb
|
90
|
+
- lib/generators/shoestrap/templates/deployment/deployment.rake.erb
|
91
|
+
- lib/generators/shoestrap/templates/deployment/unicorn.rb
|
88
92
|
- lib/shoestrap.rb
|
89
93
|
- lib/shoestrap/app_builder.rb
|
90
94
|
- shoestrap.gemspec
|