rsm 0.1.beta1 → 0.1.beta2

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGES.md CHANGED
@@ -1,3 +1,11 @@
1
+ # 0.1.beta2 / August 31, 2011
2
+
3
+ * Some code moved to `Rsm::Install::Base`
4
+ * Nginx config template uses `application_root` variable
5
+ * Changed injection in nginx.conf
6
+ * Command `unicorn` accepts environment option
7
+ * Capistrano-aware `application_root`
8
+
1
9
  # 0.1.beta1 / August 30, 2011
2
10
 
3
11
  * Methods in `Rsm::Actions` use `name` attribute
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.beta1
1
+ 0.1.beta2
data/lib/rsm/base.rb ADDED
@@ -0,0 +1,32 @@
1
+ require 'pathname'
2
+
3
+ module Rsm
4
+ class Base < Thor::Group
5
+ include Thor::Actions
6
+ include Actions
7
+
8
+ argument :name
9
+
10
+ class_option :apps_root, :defualt => "/var/www", :aliases => "-r", :desc => "Rails apps root (default: /var/www)"
11
+ class_option :capistrano, :defualt => false, :aliases => "-c", :desc => "Application's Capistrano stage"
12
+
13
+ def self.source_root
14
+ File.expand_path('../../../templates', __FILE__)
15
+ end
16
+
17
+ def application_root
18
+ unless @application_root
19
+ @application_root = if options[:capistrano]
20
+ "#{options[:apps_root]}/#{name}/#{options[:capistrano]}/current"
21
+ else
22
+ "#{options[:apps_root]}/#{name}"
23
+ end
24
+ @application_root = Pathname.new(@application_root)
25
+ say "Application root: #{@application_root}"
26
+ end
27
+ @application_root
28
+ end
29
+ remove_task :application_root
30
+
31
+ end
32
+ end
@@ -1,38 +1,30 @@
1
1
  module Rsm
2
2
  module Install
3
- class Nginx < Thor::Group
4
- include Thor::Actions
5
-
3
+ class Nginx < Rsm::Base
6
4
  attr_reader :domain
7
5
 
8
- argument :name
9
-
10
6
  class_option :nginx_root, :default => "/etc/nginx", :aliases => "-n", :desc => "Nginx configuration root"
11
7
  class_option :domain, :aliases => "-d", :desc => "Server's domain"
12
8
 
13
- def self.source_root
14
- File.expand_path('../../../..', __FILE__)
15
- end
16
-
17
9
  def set_destination_root
18
10
  self.destination_root = options[:nginx_root]
19
11
  end
20
12
 
21
- def nginx_conf_include
22
- include_str = "include sites-enabled.d/*.conf;\n\t"
23
- unless File.read("#{options[:nginx_root]}/nginx.conf").include?(include_str)
24
- inject_into_file "nginx.conf", include_str, :before => "server {"
13
+ def nginx_config_include_vhosts
14
+ include_str = "include sites-enabled.d/*.conf;"
15
+ unless File.read("#{destination_root}/nginx.conf").include?(include_str)
16
+ inject_into_file "nginx.conf", "#{include_str}\n", :after => "index index.html;\n"
25
17
  end
26
18
  end
27
19
 
28
- def nginx_config
20
+ def nginx_unicorn_config
29
21
  @domain = options[:domain]
30
22
  @domain = `hostname` unless @domain
31
- template "templates/nginx-vhost.conf.erb", "sites-available.d/#{name}.conf"
23
+ template "nginx-unicorn.conf.erb", "sites-available.d/#{name}.conf"
32
24
  end
33
25
 
34
26
  def enable_nginx_site
35
- link_file "#{options[:nginx_root]}/sites-available.d/#{name}.conf", "sites-enabled.d/#{name}.conf"
27
+ link_file "#{destination_root}/sites-available.d/#{name}.conf", "sites-enabled.d/#{name}.conf"
36
28
  end
37
29
 
38
30
  end
@@ -1,14 +1,7 @@
1
1
  module Rsm
2
2
  module Install
3
- class Rails < Thor::Group
4
- include Thor::Actions
5
- include Actions
6
-
7
- attr_reader :application_root, :worker_processes
8
-
9
- argument :name
10
-
11
- class_option :apps_root, :defualt => "/var/www", :aliases => "-r", :desc => "Rails apps root (default: /var/www)"
3
+ class Rails < Rsm::Base
4
+ attr_reader :worker_processes
12
5
 
13
6
  class_option :user, :aliases => "-u", :default => "git", :desc => "Owners's user"
14
7
  class_option :group, :aliases => "-g", :default => "git", :desc => "Owners's group"
@@ -19,17 +12,12 @@ module Rsm
19
12
 
20
13
  class_option :worker_processes, :type => :numeric, :default => 2, :aliases => "-w", :desc => "Worker processes for use in Unicorn"
21
14
 
22
- def self.source_root
23
- File.expand_path('../../../..', __FILE__)
24
- end
25
-
26
15
  def set_destination_root
27
- @application_root = "#{options[:apps_root]}/#{name}"
28
- self.destination_root = @application_root
16
+ self.destination_root = application_root.to_s
29
17
  end
30
18
 
31
19
  def download
32
- empty_directory application_root
20
+ empty_directory "."
33
21
  inside application_root do
34
22
  if options[:git]
35
23
  run "git clone #{options[:git]} ."
@@ -40,14 +28,13 @@ module Rsm
40
28
  fetch_temporary_archive(name, options[:tbz2], :bz2)
41
29
  unpack_compessed_archive(name, :bz2)
42
30
  else
43
- say "No source URI specified. Use --git, --tgz or --tbz2 option with URI passed"
44
- exit 1
31
+ say "No source URI specified - skip download"
45
32
  end
46
33
  end
47
34
  end
48
35
 
49
36
  def permissions
50
- inside application_root do
37
+ inside "." do
51
38
  empty_directory "log"
52
39
  empty_directory "tmp"
53
40
  run "chown #{options[:user]}:#{options[:group]} -R ."
@@ -57,7 +44,7 @@ module Rsm
57
44
 
58
45
  def unicorn_config
59
46
  @worker_processes = options[:worker_processes]
60
- template "templates/unicorn.rb.erb", "config/unicorn.rb"
47
+ template "unicorn.rb.erb", "config/unicorn.rb"
61
48
  end
62
49
  end
63
50
  end
data/lib/rsm/runner.rb CHANGED
@@ -2,14 +2,9 @@ module Rsm
2
2
  class Runner < Thor
3
3
  include Thor::Actions
4
4
 
5
- def self.source_root
6
- File.expand_path("../..", __FILE__)
7
- end
8
-
9
- class_option :apps_root, :defualt => "/var/www", :aliases => "-r", :desc => "Rails apps root (default: /var/www)"
10
-
11
5
  register Rsm::Install::Nginx, "install:nginx", "install:nginx NAME", "Install Nginx config"
12
6
  register Rsm::Install::Rails, "install:rails", "install:rails NAME", "Install Rails application"
7
+ register Rsm::Unicorn, "unicorn", "unicorn NAME", "Run Unicorn server"
13
8
 
14
9
  desc "install NAME", "Install Nginx config and Rails application"
15
10
  def install(name)
@@ -17,16 +12,10 @@ module Rsm
17
12
  invoke "install:rails"
18
13
  end
19
14
 
20
- desc "unicorn NAME", "Run Unicorn server"
21
- def unicorn(name)
22
- app_root = Pathname.new("#{options[:apps_root]}/#{name}")
23
- rvmrc = app_root.join(".rvmrc")
24
- if rvmrc.exist?
25
- ruby_cmd = File.new(rvmrc).readline.strip + " exec"
26
- else
27
- ruby_cmd = "#{Thor::Util.ruby_command} -S"
28
- end
29
- run "#{ruby_cmd} unicorn_rails -D -c #{app_root.join("config", "unicorn.rb")}"
15
+ desc "version", "RSM gem version"
16
+ def version
17
+ require 'rsm/version'
18
+ say "RSM version #{Rsm::VERSION}"
30
19
  end
31
20
  end
32
21
  end
@@ -0,0 +1,13 @@
1
+ module Rsm
2
+ class Unicorn < Base
3
+ def unicorn_rails
4
+ rvmrc = application_root.join(".rvmrc")
5
+ if rvmrc.exist?
6
+ ruby_cmd = File.new(rvmrc).readline.strip + " exec"
7
+ else
8
+ ruby_cmd = "#{Thor::Util.ruby_command} -S"
9
+ end
10
+ run "#{ruby_cmd} unicorn_rails -D -E production -c #{application_root.join("config", "unicorn.rb")}"
11
+ end
12
+ end
13
+ end
data/lib/rsm.rb CHANGED
@@ -6,6 +6,8 @@ require 'thor/util'
6
6
  module Rsm
7
7
  autoload :Actions, 'rsm/actions'
8
8
  autoload :Runner, 'rsm/runner'
9
+ autoload :Base, 'rsm/base'
10
+ autoload :Unicorn, 'rsm/unicorn'
9
11
 
10
12
  module Install
11
13
  autoload :Nginx, 'rsm/install/nginx'
@@ -1,5 +1,5 @@
1
1
  upstream <%= name %>_server {
2
- server unix:/var/www/<%= name %>/tmp/sockets/unicorn.sock fail_timeout=0; # Местоположение сокета должно совпадать с настройками файла config/unicorn.rb от корня вашего приложения.
2
+ server unix:<%= application_root %>/tmp/sockets/unicorn.sock fail_timeout=0; # Местоположение сокета должно совпадать с настройками файла config/unicorn.rb от корня вашего приложения.
3
3
  }
4
4
 
5
5
  server {
@@ -8,12 +8,12 @@ server {
8
8
 
9
9
  client_max_body_size 1G; # Максимальный размер тела запроса (а простым языком - ограничение на размер заливаемого на сервер файла).
10
10
  keepalive_timeout 5;
11
- root /var/www/<%= name %>/public; # Эта строка всегда должна указывать в директорию public Rails приложения. А current там потому что деплой происходит через Capistrano
11
+ root <%= application_root %>/public; # Эта строка всегда должна указывать в директорию public Rails приложения. А current там потому что деплой происходит через Capistrano
12
12
 
13
13
  try_files $uri/index.html $uri.html $uri @<%= name %>; # Имя переменной не важно - главное, чтобы в блоке location ниже было аналогичное
14
14
 
15
- access_log /var/www/<%= name %>/log/access.log;
16
- error_log /var/www/<%= name %>/log/error.log;
15
+ access_log <%= application_root %>/log/access.log;
16
+ error_log <%= application_root %>/log/error.log;
17
17
 
18
18
  location @<%= name %> {
19
19
  proxy_pass http://<%= name %>_server; # Часть после http:// должна полностью соответствовать имени в блоке upstream выше.
@@ -24,7 +24,7 @@ server {
24
24
 
25
25
  error_page 500 502 503 504 /500.html;
26
26
  location = /500.html {
27
- root /var/www/<%= name %>/public;
27
+ root <%= application_root %>/public;
28
28
  }
29
29
  }
30
30
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rsm
3
3
  version: !ruby/object:Gem::Version
4
- hash: 62196313
4
+ hash: 62196319
5
5
  prerelease: 4
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
9
  - beta
10
- - 1
11
- version: 0.1.beta1
10
+ - 2
11
+ version: 0.1.beta2
12
12
  platform: ruby
13
13
  authors:
14
14
  - Oleksandr Ulianytskyi
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2011-08-30 00:00:00 Z
19
+ date: 2011-08-31 00:00:00 Z
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
22
  name: thor
@@ -55,12 +55,14 @@ files:
55
55
  - bin/rsm
56
56
  - lib/rsm.rb
57
57
  - lib/rsm/actions.rb
58
+ - lib/rsm/base.rb
58
59
  - lib/rsm/install/nginx.rb
59
60
  - lib/rsm/install/rails.rb
60
61
  - lib/rsm/runner.rb
62
+ - lib/rsm/unicorn.rb
61
63
  - lib/rsm/version.rb
62
64
  - rsm.gemspec
63
- - templates/nginx-vhost.conf.erb
65
+ - templates/nginx-unicorn.conf.erb
64
66
  - templates/unicorn.rb.erb
65
67
  homepage: https://github.com/asux/rsm
66
68
  licenses: