cloudrider 0.2.18 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/generica/config/nginx.conf.erb +36 -0
- data/generica/config/unicorn.conf.rb.erb +101 -0
- data/lib/cloudrider/backend_commander.rb +55 -0
- data/lib/cloudrider/serverside.rb +16 -0
- data/lib/cloudrider/serverside/base.rb +34 -0
- data/lib/cloudrider/serverside/database_yaml.rb +16 -0
- data/lib/cloudrider/serverside/nginx_conf.rb +16 -0
- data/lib/cloudrider/serverside/unicorn_conf_ruby.rb +17 -0
- data/lib/cloudrider/version.rb +1 -1
- data/lib/generators/cloudrider/client/client_generator.rb +2 -1
- data/lib/generators/cloudrider/server/server_generator.rb +29 -0
- metadata +11 -3
- data/lib/cloudrider/templates/application.emblem.erb +0 -28
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9d4b94ed61a707034b8ccd0c682b2f68462344f4
|
4
|
+
data.tar.gz: 131dcbeb5d47dae64d81868ead5f1e6ee50c27d8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 46ed9888ae4259ad837a82707cc9916058dbe1f4592be93daba3e78d7b7d2aeb4a0b7905c74bf1113b87c4572b186b65f58135e1f650a2b6956a2de2120028a0
|
7
|
+
data.tar.gz: c66088abfe37ef2e1bdc459a8c940ea642ae69862222ada8de414e8c492493f3af6fb7674ae7047238039c8d1068990055a98ca69805a3f1f53b87bd6600f92a
|
@@ -0,0 +1,36 @@
|
|
1
|
+
upstream app {
|
2
|
+
server unix:/home/ia/workspace/<%= project_name %>/tmp/sockets/unicorn.<%= project_name %>.sock fail_timeout=0;
|
3
|
+
}
|
4
|
+
server {
|
5
|
+
listen 80;
|
6
|
+
server_name <%= web_urls.join " " %>;
|
7
|
+
|
8
|
+
keepalive_timeout 5;
|
9
|
+
root /home/ia/workspace/<%= project_name %>/public;
|
10
|
+
access_log /home/ia/workspace/<%= project_name %>/log/access.log;
|
11
|
+
error_log off;
|
12
|
+
|
13
|
+
location ~ ^/(assets)/ {
|
14
|
+
gzip_static on;
|
15
|
+
expires max;
|
16
|
+
add_header Cache-Control public;
|
17
|
+
}
|
18
|
+
|
19
|
+
location / {
|
20
|
+
try_files $uri/index.html $uri.html $uri @app;
|
21
|
+
error_page 404 /404.html;
|
22
|
+
error_page 422 /422.html;
|
23
|
+
error_page 500 502 503 504 /500.html;
|
24
|
+
error_page 403 /403.html;
|
25
|
+
}
|
26
|
+
|
27
|
+
location @app {
|
28
|
+
proxy_pass http://app;
|
29
|
+
}
|
30
|
+
|
31
|
+
location = /favicon.ico {
|
32
|
+
expires max;
|
33
|
+
add_header Cache-Control public;
|
34
|
+
}
|
35
|
+
|
36
|
+
}
|
@@ -0,0 +1,101 @@
|
|
1
|
+
# Sample verbose configuration file for Unicorn (not Rack)
|
2
|
+
#
|
3
|
+
# This configuration file documents many features of Unicorn
|
4
|
+
# that may not be needed for some applications. See
|
5
|
+
# http://unicorn.bogomips.org/examples/unicorn.conf.minimal.rb
|
6
|
+
# for a much simpler configuration file.
|
7
|
+
#
|
8
|
+
# See http://unicorn.bogomips.org/Unicorn/Configurator.html for complete
|
9
|
+
# documentation.
|
10
|
+
|
11
|
+
# Use at least one worker per core if you're on a dedicated server,
|
12
|
+
# more will usually help for _short_ waits on databases/caches.
|
13
|
+
worker_processes 4
|
14
|
+
|
15
|
+
# Since Unicorn is never exposed to outside clients, it does not need to
|
16
|
+
# run on the standard HTTP port (80), there is no reason to start Unicorn
|
17
|
+
# as root unless it's from system init scripts.
|
18
|
+
# If running the master process as root and the workers as an unprivileged
|
19
|
+
# user, do this to switch euid/egid in the workers (also chowns logs):
|
20
|
+
# user "unprivileged_user", "unprivileged_group"
|
21
|
+
|
22
|
+
# Help ensure your application will always spawn in the symlinked
|
23
|
+
# "current" directory that Capistrano sets up.
|
24
|
+
working_directory "/home/ia/workspace/<%= project_name %>" # available in 0.94.0+
|
25
|
+
|
26
|
+
# listen on both a Unix domain socket and a TCP port,
|
27
|
+
# we use a shorter backlog for quicker failover when busy
|
28
|
+
listen "/home/ia/workspace/<%= project_name %>/tmp/sockets/unicorn.<%= project_name %>.sock", :backlog => 64
|
29
|
+
|
30
|
+
# nuke workers after 30 seconds instead of 60 seconds (the default)
|
31
|
+
timeout 30
|
32
|
+
|
33
|
+
# feel free to point this anywhere accessible on the filesystem
|
34
|
+
pid "/home/ia/workspace/<%= project_name %>/tmp/pids/unicorn.pid"
|
35
|
+
|
36
|
+
# By default, the Unicorn logger will write to stderr.
|
37
|
+
# Additionally, ome applications/frameworks log to stderr or stdout,
|
38
|
+
# so prevent them from going to /dev/null when daemonized here:
|
39
|
+
stderr_path "/home/ia/workspace/<%= project_name %>/log/unicorn.stderr.log"
|
40
|
+
stdout_path "/home/ia/workspace/<%= project_name %>/log/unicorn.stdout.log"
|
41
|
+
|
42
|
+
# combine Ruby 2.0.0dev or REE with "preload_app true" for memory savings
|
43
|
+
# http://rubyenterpriseedition.com/faq.html#adapt_apps_for_cow
|
44
|
+
preload_app true
|
45
|
+
GC.respond_to?(:copy_on_write_friendly=) and
|
46
|
+
GC.copy_on_write_friendly = true
|
47
|
+
|
48
|
+
# Enable this flag to have unicorn test client connections by writing the
|
49
|
+
# beginning of the HTTP headers before calling the application. This
|
50
|
+
# prevents calling the application for connections that have disconnected
|
51
|
+
# while queued. This is only guaranteed to detect clients on the same
|
52
|
+
# host unicorn runs on, and unlikely to detect disconnects even on a
|
53
|
+
# fast LAN.
|
54
|
+
check_client_connection false
|
55
|
+
|
56
|
+
before_fork do |server, worker|
|
57
|
+
# the following is highly recomended for Rails + "preload_app true"
|
58
|
+
# as there's no need for the master process to hold a connection
|
59
|
+
defined?(ActiveRecord::Base) and
|
60
|
+
ActiveRecord::Base.connection.disconnect!
|
61
|
+
|
62
|
+
# The following is only recommended for memory/DB-constrained
|
63
|
+
# installations. It is not needed if your system can house
|
64
|
+
# twice as many worker_processes as you have configured.
|
65
|
+
#
|
66
|
+
# # This allows a new master process to incrementally
|
67
|
+
# # phase out the old master process with SIGTTOU to avoid a
|
68
|
+
# # thundering herd (especially in the "preload_app false" case)
|
69
|
+
# # when doing a transparent upgrade. The last worker spawned
|
70
|
+
# # will then kill off the old master process with a SIGQUIT.
|
71
|
+
# old_pid = "#{server.config[:pid]}.oldbin"
|
72
|
+
# if old_pid != server.pid
|
73
|
+
# begin
|
74
|
+
# sig = (worker.nr + 1) >= server.worker_processes ? :QUIT : :TTOU
|
75
|
+
# Process.kill(sig, File.read(old_pid).to_i)
|
76
|
+
# rescue Errno::ENOENT, Errno::ESRCH
|
77
|
+
# end
|
78
|
+
# end
|
79
|
+
#
|
80
|
+
# Throttle the master from forking too quickly by sleeping. Due
|
81
|
+
# to the implementation of standard Unix signal handlers, this
|
82
|
+
# helps (but does not completely) prevent identical, repeated signals
|
83
|
+
# from being lost when the receiving process is busy.
|
84
|
+
# sleep 1
|
85
|
+
end
|
86
|
+
|
87
|
+
after_fork do |server, worker|
|
88
|
+
# per-process listener ports for debugging/admin/migrations
|
89
|
+
# addr = "127.0.0.1:#{9293 + worker.nr}"
|
90
|
+
# server.listen(addr, :tries => -1, :delay => 5, :tcp_nopush => true)
|
91
|
+
|
92
|
+
# the following is *required* for Rails + "preload_app true",
|
93
|
+
defined?(ActiveRecord::Base) and
|
94
|
+
ActiveRecord::Base.establish_connection
|
95
|
+
|
96
|
+
# if preload_app is true, then you may also want to check and
|
97
|
+
# restart any other shared sockets/descriptors such as Memcached,
|
98
|
+
# and Redis. TokyoCabinet file handles are safe to reuse
|
99
|
+
# between any number of forked children (assuming your kernel
|
100
|
+
# correctly implements pread()/pwrite() system calls)
|
101
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
require "cloudrider/serverside"
|
2
|
+
require "cloudrider/protofile"
|
3
|
+
module Cloudrider; end
|
4
|
+
class Cloudrider::BackendCommander
|
5
|
+
class UnknownOrUnimplmenetedVarisset < StandardError; end
|
6
|
+
class << self
|
7
|
+
def backend_ruby_protofiles_for(params)
|
8
|
+
new(params).files_to_write
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def initialize(params)
|
13
|
+
@params = params
|
14
|
+
end
|
15
|
+
|
16
|
+
def files_to_write
|
17
|
+
_related_backends.flatten.map { |ac| ac.new _backend_style }.map(&:protofile)
|
18
|
+
end
|
19
|
+
private
|
20
|
+
def _nginx
|
21
|
+
[Cloudrider::Serverside::NginxConf]
|
22
|
+
end
|
23
|
+
def _unicorn
|
24
|
+
[Cloudrider::Serverside::UnicornConfRuby]
|
25
|
+
end
|
26
|
+
def _database
|
27
|
+
[Cloudrider::Serverside::DatabaseYaml]
|
28
|
+
end
|
29
|
+
def _related_backends
|
30
|
+
case _backend_name
|
31
|
+
when "admin"
|
32
|
+
when "user"
|
33
|
+
when "employee"
|
34
|
+
when "product"
|
35
|
+
when "offer"
|
36
|
+
when "message"
|
37
|
+
when "taxon"
|
38
|
+
when "nginx"
|
39
|
+
_nginx
|
40
|
+
when "unicorn"
|
41
|
+
_unicorn
|
42
|
+
when "database"
|
43
|
+
_database
|
44
|
+
else
|
45
|
+
raise UnknownOrUnimplmenetedVarisset, _backend_name
|
46
|
+
end
|
47
|
+
end
|
48
|
+
def _backend_style
|
49
|
+
@params[:style]
|
50
|
+
end
|
51
|
+
def _backend_name
|
52
|
+
@params[:name]
|
53
|
+
end
|
54
|
+
KnownBackends = ["admin", "user", "employee", "product", "offer", "message", "taxon", "nginx", "unicorn", "database"]
|
55
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require "tilt"
|
2
|
+
require "erb"
|
3
|
+
require 'active_support'
|
4
|
+
require "active_support/core_ext"
|
5
|
+
require "functional_support"
|
6
|
+
module Cloudrider; end
|
7
|
+
module Cloudrider::Serverside
|
8
|
+
require File.join(__dir__, "serverside", "base.rb")
|
9
|
+
Dir[File.join(__dir__, "serverside", "*.rb")].each { |f| require f }
|
10
|
+
|
11
|
+
class << self
|
12
|
+
def source_root
|
13
|
+
File.expand_path "../../../generica", __FILE__
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
class Cloudrider::Serverside::Base
|
2
|
+
def initialize(style=nil)
|
3
|
+
@style = style.to_s
|
4
|
+
end
|
5
|
+
def protofile
|
6
|
+
Cloudrider::Protofile.new.tap do |p|
|
7
|
+
p.file_name = _file_name
|
8
|
+
p.folder = _folder
|
9
|
+
p.renderer = _renderer
|
10
|
+
end
|
11
|
+
end
|
12
|
+
private
|
13
|
+
def _file_name
|
14
|
+
throw "not implemented"
|
15
|
+
end
|
16
|
+
def _folder
|
17
|
+
"config"
|
18
|
+
end
|
19
|
+
def _renderer
|
20
|
+
-> { _template.render _context }
|
21
|
+
end
|
22
|
+
def _template
|
23
|
+
@template ||= Tilt::ERBTemplate.new _source
|
24
|
+
end
|
25
|
+
def _source
|
26
|
+
File.join Cloudrider::Serverside.source_root, _source_folder, _source_file
|
27
|
+
end
|
28
|
+
def _source_folder
|
29
|
+
"config"
|
30
|
+
end
|
31
|
+
def _source_file
|
32
|
+
_file_name + ".erb"
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
class Cloudrider::Serverside::DatabaseYaml < Cloudrider::Serverside::Base
|
2
|
+
class Context
|
3
|
+
attr_accessor :web_urls, :project_name
|
4
|
+
end
|
5
|
+
private
|
6
|
+
def _file_name
|
7
|
+
"database.yml"
|
8
|
+
end
|
9
|
+
def _context
|
10
|
+
Context.new.tap do |c|
|
11
|
+
c.web_urls = @style.split(" ").tail
|
12
|
+
c.project_name = @style.split(" ").first
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
class Cloudrider::Serverside::NginxConf < Cloudrider::Serverside::Base
|
2
|
+
class Context
|
3
|
+
attr_accessor :web_urls, :project_name
|
4
|
+
end
|
5
|
+
|
6
|
+
private
|
7
|
+
def _file_name
|
8
|
+
"nginx.conf"
|
9
|
+
end
|
10
|
+
def _context
|
11
|
+
Context.new.tap do |c|
|
12
|
+
c.web_urls = @style.split(" ").tail
|
13
|
+
c.project_name = @style.split(" ").first
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
class Cloudrider::Serverside::UnicornConfRuby < Cloudrider::Serverside::Base
|
2
|
+
class Context
|
3
|
+
attr_accessor :project_name
|
4
|
+
end
|
5
|
+
|
6
|
+
private
|
7
|
+
def _file_name
|
8
|
+
"unicorn.conf.rb"
|
9
|
+
end
|
10
|
+
|
11
|
+
def _context
|
12
|
+
Context.new.tap do |c|
|
13
|
+
c.project_name = @style.split(" ").first
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
data/lib/cloudrider/version.rb
CHANGED
@@ -48,7 +48,8 @@ class Cloudrider::Generators::ClientGenerator < Rails::Generators::Base
|
|
48
48
|
"models",
|
49
49
|
"packages",
|
50
50
|
"routes",
|
51
|
-
"transforms",
|
51
|
+
"transforms",
|
52
|
+
"templates/products",
|
52
53
|
"views"
|
53
54
|
].each do |folder|
|
54
55
|
directory "app/assets/javascripts/#{folder}", "app/assets/javascripts/#{folder}"
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require "cloudrider/backend_commander"
|
2
|
+
|
3
|
+
module Cloudrider::Generators; end
|
4
|
+
class Cloudrider::Generators::ServerGenerator < Rails::Generators::NamedBase
|
5
|
+
|
6
|
+
desc "Generates backend server rubies and conf files and puts them into their right places.
|
7
|
+
Known backend files are: #{Cloudrider::BackendCommander::KnownBackends}"
|
8
|
+
def create_the_variable_files
|
9
|
+
_selective_backend_rubies
|
10
|
+
end
|
11
|
+
private
|
12
|
+
def _selective_backend_rubies
|
13
|
+
Cloudrider::BackendCommander.backend_ruby_protofiles_for(_backend_ruby_opts).each do |protofile|
|
14
|
+
create_file protofile.full_name, protofile.content
|
15
|
+
end
|
16
|
+
end
|
17
|
+
def _all_backend_rubies?
|
18
|
+
_backend_ruby_name == "all"
|
19
|
+
end
|
20
|
+
def _backend_ruby_opts
|
21
|
+
{ name: _backend_ruby_name, style: _backend_ruby_style }
|
22
|
+
end
|
23
|
+
def _backend_ruby_name
|
24
|
+
name.split(":").first
|
25
|
+
end
|
26
|
+
def _backend_ruby_style
|
27
|
+
name.split(":").second
|
28
|
+
end
|
29
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cloudrider
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thomas Chen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-11-
|
11
|
+
date: 2014-11-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -446,9 +446,11 @@ files:
|
|
446
446
|
- generica/config/initializers/sorcery.rb
|
447
447
|
- generica/config/initializers/wrap_parameters.rb
|
448
448
|
- generica/config/nginx.conf
|
449
|
+
- generica/config/nginx.conf.erb
|
449
450
|
- generica/config/routes.rb
|
450
451
|
- generica/config/secrets.yml
|
451
452
|
- generica/config/unicorn.conf.rb
|
453
|
+
- generica/config/unicorn.conf.rb.erb
|
452
454
|
- generica/db/migrate/20140930052333_create_apiv1_taxons.rb
|
453
455
|
- generica/db/migrate/20140930052559_create_apiv1_listings_plastics.rb
|
454
456
|
- generica/db/migrate/20140930180107_create_apiv1_pictures.rb
|
@@ -556,14 +558,20 @@ files:
|
|
556
558
|
- lib/cloudrider/apiv1/table_booths_component.rb
|
557
559
|
- lib/cloudrider/apiv1/table_booths_sass.rb
|
558
560
|
- lib/cloudrider/application_commander.rb
|
561
|
+
- lib/cloudrider/backend_commander.rb
|
559
562
|
- lib/cloudrider/master_context.rb
|
560
563
|
- lib/cloudrider/protofile.rb
|
561
|
-
- lib/cloudrider/
|
564
|
+
- lib/cloudrider/serverside.rb
|
565
|
+
- lib/cloudrider/serverside/base.rb
|
566
|
+
- lib/cloudrider/serverside/database_yaml.rb
|
567
|
+
- lib/cloudrider/serverside/nginx_conf.rb
|
568
|
+
- lib/cloudrider/serverside/unicorn_conf_ruby.rb
|
562
569
|
- lib/cloudrider/version.rb
|
563
570
|
- lib/generators/cloudrider/USAGE
|
564
571
|
- lib/generators/cloudrider/backend/backend_generator.rb
|
565
572
|
- lib/generators/cloudrider/client/client_generator.rb
|
566
573
|
- lib/generators/cloudrider/migrations/migrations_generator.rb
|
574
|
+
- lib/generators/cloudrider/server/server_generator.rb
|
567
575
|
- lib/generators/cloudrider/varissets/varissets_generator.rb
|
568
576
|
- spec/cloudrider/apiv1_base_spec.rb
|
569
577
|
- spec/cloudrider/apiv1_spec.rb
|
@@ -1,28 +0,0 @@
|
|
1
|
-
.application-container.toggle-shift.shifted
|
2
|
-
<% if top_nav? %>
|
3
|
-
#canvas-menu-top
|
4
|
-
site-nav
|
5
|
-
#page-wrapper
|
6
|
-
.site-content
|
7
|
-
.not-site-footer
|
8
|
-
== outlet
|
9
|
-
site-footer action="displayModal"
|
10
|
-
|
11
|
-
<% else %>
|
12
|
-
#canvas-menu-left
|
13
|
-
site-nav
|
14
|
-
#page-wrapper
|
15
|
-
.small-time-header.hide-for-large-up.pointer click=toggleCanvasShift
|
16
|
-
i.fa.fa-bars.fa-3x
|
17
|
-
.site-content
|
18
|
-
.not-site-footer
|
19
|
-
== outlet
|
20
|
-
site-footer action="displayModal"
|
21
|
-
<% end %>
|
22
|
-
#fixed-bottom
|
23
|
-
.row
|
24
|
-
flash-message
|
25
|
-
|
26
|
-
.modal-background
|
27
|
-
.modal-vertical-container
|
28
|
-
== outlet "modal"
|