peony 0.1.9 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/bin/peony +2 -2
  3. data/lib/peony/actions.rb +66 -20
  4. data/lib/peony/{utils.rb → configure.rb} +13 -40
  5. data/lib/peony/default.rb +9 -2
  6. data/lib/peony/rake.rb +1 -1
  7. data/lib/peony/scope.rb +82 -0
  8. data/lib/peony/settings.rb +24 -23
  9. data/lib/peony/shell/basic.rb +19 -17
  10. data/lib/peony/shell.rb +3 -4
  11. data/lib/peony/version.rb +1 -1
  12. data/lib/peony.rb +6 -3
  13. data/recipes/db/mongo.rake +26 -26
  14. data/recipes/db/mysql.rake +46 -28
  15. data/recipes/db/pg.rake +20 -17
  16. data/recipes/db/redis.rake +22 -20
  17. data/recipes/elasticsearch.rake +14 -12
  18. data/recipes/httpd.rake +20 -18
  19. data/recipes/nginx/www.rake +8 -6
  20. data/recipes/nginx.rake +25 -23
  21. data/recipes/php.rake +10 -5
  22. data/spec/peony_spec.rb +3 -0
  23. data/spec/scope_spec.rb +48 -0
  24. data/spec/settings_in_rake_spec.rb +61 -1
  25. data/spec/settings_spec.rb +2 -2
  26. data/spec/spec_helper.rb +1 -3
  27. data/templates/elasticsearch/config.yml.erb +48 -34
  28. data/templates/elasticsearch/logging.yml.erb +3 -1
  29. data/templates/httpd/extra/httpd-autoindex.conf.erb +2 -2
  30. data/templates/httpd/extra/httpd-dav.conf.erb +4 -4
  31. data/templates/httpd/extra/httpd-mpm.conf.erb +1 -1
  32. data/templates/httpd/extra/httpd-multilang-errordoc.conf.erb +2 -2
  33. data/templates/httpd/httpd.conf.erb +8 -8
  34. data/templates/mongo/master.conf.erb +8 -8
  35. data/templates/mongo/slave.conf.erb +9 -9
  36. data/templates/mysql/my.cnf.erb +48 -34
  37. data/templates/nginx/sites-enabled/php.conf.erb +7 -7
  38. data/templates/nginx/sites-enabled/static.conf.erb +4 -4
  39. data/templates/nginx/www.conf.erb +77 -77
  40. data/templates/redis.conf.erb +13 -13
  41. metadata +6 -3
@@ -1,47 +1,65 @@
1
- set_default :mysql_home, `brew --prefix mysql`.strip
2
- set_default :mysqld, '/usr/local/bin/mysqld_safe'
3
- set_default :mysqladmin, '/usr/local/bin/mysqladmin'
4
- set_default :mysql_install_db, '/usr/local/bin/mysql_install_db'
1
+ scope :mysql do
2
+ set_default :home, `brew --prefix mysql`.strip
3
+ set_default :server, '/usr/local/bin/mysql.server'
4
+ set_default :mysqld, '/usr/local/bin/mysqld_safe'
5
+ set_default :mysqladmin, '/usr/local/bin/mysqladmin'
6
+ set_default :mysql_install_db, '/usr/local/bin/mysql_install_db'
5
7
 
6
- set_default :mysql_dir, ->{ "#{data_dir}/mysql/#{mysql_port}" }
7
- set_default :mysql_log_dir, ->{ "#{log_dir}/mysql/#{mysql_port}" }
8
- set_default :mysql_conf, ->{ "#{etc_dir}/my.cnf" }
8
+ set_default :data_dir, ->{ "#{data_dir}/mysql/#{mysql.port}" }
9
+ set_default :log_dir, ->{ "#{log_dir}/mysql/#{mysql.port}" }
10
+ set_default :config_file, ->{ "/etc/my.cnf" }
9
11
 
10
- set_default :mysql_user, 'root'
11
- set_default :mysql_password, '123456'
12
+ set_default :log_error, ->{ "#{mysql.log_dir}/error.log" }
12
13
 
13
- set_default :mysql_pid_file, ->{ "#{run_dir}/mysql/#{mysql_port}.pid" }
14
- set_default :mysql_port, '3306'
15
- set_default :mysql_socket, '/tmp/mysql.sock'
16
- set_default :mysql_charset, 'UTF8'
17
- set_default :mysql_general_log, 'ON'
18
- set_default :mysql_slow_query_log, 'ON'
14
+ set_default :user, 'root'
15
+ set_default :password, '123456'
19
16
 
20
- set_default :mysql_start, ->{ "#{mysqld} --defaults-file=#{mysql_conf} --datadir=#{mysql_dir} --basedir=#{mysql_home} &" }
21
- set_default :mysql_stop, ->{ "#{mysqladmin} --verbose --user=#{mysql_user} --password=#{mysql_password} shutdown" }
22
- set_default :mysql_status, ->{ "#{mysqladmin} --verbose status variables" }
17
+ set_default :pid_file, ->{ "#{run_dir}/mysql/#{mysql.port}.pid" }
18
+ set_default :port, '3306'
19
+ set_default :socket, '/tmp/mysql.sock'
20
+ set_default :charset, 'UTF8'
21
+ set_default :general_log, 'ON'
22
+ set_default :slow_query_log, 'ON'
23
+
24
+ set_default :run_cmd, ->{ ->(cmd){"#{mysql.server} #{cmd} --basedir=#{mysql.home} --datadir=#{mysql.data_dir} --pid-file=#{mysql.pid_file} --user=#{user}"} }
25
+
26
+ #set_default :start, ->{ "#{mysql.mysqld} --defaults-file=#{mysql.config_file} --datadir=#{mysql.data_dir} --basedir=#{mysql.home} &" }
27
+ #set_default :stop, ->{ "#{mysql.mysqladmin} --verbose --user=#{mysql.user} --password=#{mysql.password} shutdown" }
28
+ #set_default :status, ->{ "#{mysql.mysqladmin} --verbose status variables" }
29
+ end
23
30
 
24
31
  namespace :db do
25
-
26
32
  namespace :mysql do
27
-
28
33
  desc 'Create mysql directorys, config file and run mysql_install_db'
29
34
  task :init do
30
- mkdir_p(mysql_dir, mysql_log_dir, "#{run_dir}/mysql/")
31
- template('mysql/my.cnf.erb', mysql_conf, true)
32
- run "#{mysql_install_db} --defaults-file=#{mysql_conf} --datadir=#{mysql_dir} --basedir=#{mysql_home}" if Dir["#{mysql_dir}/*"].empty?
35
+ mkdir_p(mysql.data_dir, mysql.log_dir, "#{run_dir}/mysql/")
36
+ template('mysql/my.cnf.erb', mysql.config_file, true)
37
+ inside mysql.home do
38
+ unless File.exist? "#{mysql.data_dir}/mysql/user.frm"
39
+ ENV['TMPDIR'] = nil
40
+ run "#{mysql.mysql_install_db} --verbose --user=#{mysql.user} --basedir=#{mysql.home} --datadir=#{mysql.data_dir} --tmpdir=/tmp"
41
+ end
42
+ #run "#{mysql.mysql_install_db} --defaults-file=#{mysql.config_file} --datadir=#{mysql.data_dir} --basedir=#{mysql.home}" if Dir["#{mysql.data_dir}/*"].empty?
43
+ end
33
44
  end
34
-
35
- [:start, :stop, :status].each do|t|
45
+
46
+ [:start, :stop, :restart, :reload, :"force-reload", :status].each do|t|
36
47
  desc "#{t} mysql instance."
37
48
  task t do
38
- run self.send("mysql_#{t}")
49
+ run mysql.run_cmd.call(t)
39
50
  end
40
51
  end
41
-
52
+ =begin
53
+ [:start].each do|t|
54
+ desc "#{t} mysql instance."
55
+ task t do
56
+ run mysql.send(t)
57
+ end
58
+ end
59
+ =end
42
60
  desc 'Set mysql root user password.'
43
61
  task :set_root_pass do
44
- run "mysqladmin --no-defaults --port=#{mysql_port} --user=root --protocol=tcp password '#{mysql_password}'"
62
+ run "#{mysql.mysqladmin} --no-defaults --port=#{mysql.port} --user=root --protocol=tcp password '#{mysql.password}'"
45
63
  end
46
64
 
47
65
  namespace :web do
data/recipes/db/pg.rake CHANGED
@@ -1,33 +1,36 @@
1
- set_default :pg_home, ->{ `brew --prefix postgresql`.strip }
2
- set_default :pg_initdb, '/usr/local/bin/initdb'
3
- set_default :pg_ctl, '/usr/local/bin/pg_ctl'
1
+ scope :pg do
2
+ set_default :home, ->{ `brew --prefix postgresql`.strip }
3
+ set_default :initdb, '/usr/local/bin/initdb'
4
+ set_default :pg_ctl, '/usr/local/bin/pg_ctl'
4
5
 
5
- set_default :pg_data_dir, ->{ "#{data_dir}/pgsql" }
6
- set_default :pg_init, ->{ "#{pg_initdb} -D #{pg_data_dir} --debug" }
7
- set_default :pg_start, ->{ "#{pg_ctl} -D #{pg_data_dir} -l #{log_dir}/pgsql.log start" }
8
- set_default :pg_stop, ->{ "#{pg_ctl} -D #{pg_data_dir} stop" }
9
- set_default :pg_reload, ->{ "#{pg_ctl} -D #{pg_data_dir} reload" }
10
- set_default :pg_restart, ->{ "#{pg_ctl} -D #{pg_data_dir} -l #{log_dir}/pgsql.log restart" }
6
+ set_default :data_dir, ->{ "#{data_dir}/pgsql" }
7
+ set_default :run_cmd, ->{ lambda{|cmd| "#{pg.pg_ctl} #{cmd} -D #{pg.data_dir} -l #{log_dir}/pgsql.log" }}
8
+ set_default :init, ->{ "#{pg.pg_ctl} -D #{pg.data_dir} --debug init" }
9
+ #set_default :start, ->{ "#{pg.pg_ctl} -D #{pg.data_dir} -l #{log_dir}/pgsql.log start" }
10
+ #set_default :stop, ->{ "#{pg.pg_ctl} -D #{pg.data_dir} stop" }
11
+ #set_default :reload, ->{ "#{pg.pg_ctl} -D #{pg.data_dir} reload" }
12
+ #set_default :restart, ->{ "#{pg.pg_ctl} -D #{pg.data_dir} -l #{log_dir}/pgsql.log restart" }
11
13
 
12
- set_default :pg_super_users, {
13
- pgsql: '123456'
14
- }
14
+ set_default :super_users, {
15
+ pgsql: '123456'
16
+ }
17
+ end
15
18
 
16
19
  namespace :db do
17
20
  namespace :pg do
18
21
 
19
22
  desc 'Execute postgres initdb.'
20
23
  task :init do
21
- if File.exists?("#{pg_data_dir}/postgresql.conf")
24
+ if File.exists?("#{pg.data_dir}/postgresql.conf")
22
25
  say 'Postgresql database has already initialized.', :magenta, true
23
26
  else
24
- run pg_init
27
+ run pg.run_cmd.call(:init)
25
28
  end
26
29
  end
27
30
 
28
31
  desc 'Set super users for postgresql.'
29
32
  task :set_super_users do
30
- pg_super_users.each do|user, password|
33
+ pg.super_users.each do|user, password|
31
34
  sqls = ["CREATE USER #{user} WITH PASSWORD '#{password}';", "ALTER USER #{user} WITH SUPERUSER;"]
32
35
  sqls.each do|sql|
33
36
  run "psql -d postgres -c \"#{sql}\""
@@ -35,10 +38,10 @@ namespace :db do
35
38
  end
36
39
  end
37
40
 
38
- [:start, :stop, :restart, :reload].each do|cmd|
41
+ [:start, :stop, :restart, :reload, :status].each do|cmd|
39
42
  desc "#{cmd} postgresql instance."
40
43
  task cmd do
41
- run self.send("pg_#{cmd}")
44
+ run pg.run_cmd.call(cmd)
42
45
  end
43
46
  end
44
47
  end
@@ -1,35 +1,37 @@
1
- set_default :redis_conf, ->{ "#{etc_dir}/redis.conf" }
2
- set_default :redis_dir, ->{ "#{data_dir}/redis" }
3
- set_default :redis_pid, ->{ "#{run_dir}/redis.pid" }
4
- set_default :redis_port, 6379
1
+ scope :redis do
2
+ set_default :config_file, ->{ "#{etc_dir}/redis.conf" }
3
+ set_default :data_dir, ->{ "#{data_dir}/redis" }
4
+ set_default :pid_file, ->{ "#{run_dir}/redis.pid" }
5
+ set_default :port, 6379
5
6
 
6
- set_default :redis_start, ->{ "redis-server #{redis_conf}" }
7
- set_default :redis_stop, ->{ "redis-cli -p #{redis_port} shutdown" }
8
- set_default :redis_restart, ->{ "kill -2 `#{redis_pid}` && #{redis_start}" }
7
+ set_default :start, ->{ "redis-server #{redis.config_file}" }
8
+ set_default :stop, ->{ "redis-cli -p #{redis.port} shutdown" }
9
+ set_default :restart, ->{ "kill -2 `#{redis.pid_file}` && #{redis.start}" }
9
10
 
10
- set_default :redis_daemonize, 'yes'
11
- set_default :redis_timeout, 0
12
- set_default :redis_loglevel, 'notice'
13
- set_default :redis_logfile, 'stdout'
14
- set_default :redis_databases, 16
15
- set_default :rdbcompression, 'yes'
16
- set_default :rdbchecksum, 'yes'
17
- set_default :redis_dbfilename, 'dump.rdb'
18
- set_default :redis_appendonly, 'yes'
19
- set_default :redis_activerehashing, 'yes'
11
+ set_default :daemonize, 'yes'
12
+ set_default :timeout, 0
13
+ set_default :loglevel, 'notice'
14
+ set_default :logfile, 'stdout'
15
+ set_default :databases, 16
16
+ set_default :rdbcompression, 'yes'
17
+ set_default :rdbchecksum, 'yes'
18
+ set_default :dbfilename, 'dump.rdb'
19
+ set_default :appendonly, 'yes'
20
+ set_default :activerehashing, 'yes'
21
+ end
20
22
 
21
23
  namespace :db do
22
24
  namespace :redis do
23
25
  desc 'Initialize redis directory and copy redis.conf to etc directory.'
24
26
  task :init do
25
- mkdir_p(redis_dir)
26
- template('redis.conf.erb', redis_conf)
27
+ mkdir_p(redis.data_dir)
28
+ template('redis.conf.erb', redis.config_file)
27
29
  end
28
30
 
29
31
  [:start, :stop, :restart].each do|cmd|
30
32
  desc "#{cmd} redis"
31
33
  task cmd do
32
- run self.send("redis_#{cmd}")
34
+ run redis.send(cmd)
33
35
  end
34
36
  end
35
37
  end
@@ -1,28 +1,30 @@
1
- set_default :es_plugins_dir, '/usr/local/var/lib/elasticsearch/plugins'
2
- set_default :es_cluster_name, 'default_cluster'
3
- set_default :es_data_dir, ->{ "#{data_dir}/elasticsearch/" }
4
- set_default :es_network_host, '127.0.0.1'
5
- set_default :es_config, ->{ "#{etc_dir}/elasticsearch/config.yml" }
1
+ scope :es do
2
+ set_default :plugins_dir, '/usr/local/var/lib/elasticsearch/plugins'
3
+ set_default :cluster_name, 'default_cluster'
4
+ set_default :data_dir, ->{ "#{data_dir}/elasticsearch/" }
5
+ set_default :network_host, '127.0.0.1'
6
+ set_default :config_file, ->{ "#{etc_dir}/elasticsearch/config.yml" }
6
7
 
7
- #-f can let elasticsearch running in the foreground
8
- set_default :elasticsearch_start, ->{ "elasticsearch -D es.config=#{es_config} -p #{run_dir}/elasticsearch.pid" }
9
- #set_default :elasticsearch_stop, ->{"elasticsearch -D es.config=#{es_config} -p #{run_dir}/elasticsearch.pid stop"}
10
- set_default :elasticsearch_stop, ->{ "kill `cat #{run_dir}/elasticsearch.pid`" }
11
- set_default :elasticsearch_shutdown, ->{ "curl -XPOST 'http://#{es_network_host}:9200/_shutdown'" }
8
+ #-f can let elasticsearch running in the foreground
9
+ set_default :start, ->{ "elasticsearch -d --config=#{es.config_file} -p #{run_dir}/elasticsearch.pid" }
10
+ #set_default :elasticsearch_stop, ->{"elasticsearch -D es.config=#{es_config} -p #{run_dir}/elasticsearch.pid stop"}
11
+ set_default :stop, ->{ "kill `cat #{run_dir}/elasticsearch.pid`" }
12
+ set_default :shutdown, ->{ "curl -XPOST 'http://#{es.network_host}:9200/_shutdown'" }
13
+ end
12
14
 
13
15
  namespace :elasticsearch do
14
16
 
15
17
  desc "Initialize elasticsearch directory and copy it's config files to etc path."
16
18
  task :init do
17
19
  mkdir_p("#{etc_dir}/elasticsearch")
18
- template('elasticsearch/config.yml.erb', es_config)
20
+ template('elasticsearch/config.yml.erb', es.config_file)
19
21
  template('elasticsearch/logging.yml.erb', "#{etc_dir}/elasticsearch/logging.yml")
20
22
  end
21
23
 
22
24
  [:start, :stop, :shutdown].each do|cmd|
23
25
  desc "#{cmd} elasticsearch."
24
26
  task cmd do
25
- run self.send("elasticsearch_#{cmd}")
27
+ run es.send("#{cmd}")
26
28
  end
27
29
  end
28
30
  end
data/recipes/httpd.rake CHANGED
@@ -1,26 +1,28 @@
1
- set_default :httpd, '/usr/sbin/httpd'
2
- set_default :httpd_server_root, '/usr'
3
- set_default :httpd_share_dir, '/usr/share/httpd'
1
+ scope :httpd do
2
+ set_default :bin, '/usr/sbin/httpd'
3
+ set_default :server_root, '/usr'
4
+ set_default :share_dir, '/usr/share/httpd'
4
5
 
5
- set_default :httpd_etc_dir, ->{ "#{etc_dir}/httpd" }
6
- set_default :httpd_conf, ->{ "#{httpd_etc_dir}/httpd.conf" }
6
+ set_default :etc_dir, ->{ "#{etc_dir}/httpd" }
7
+ set_default :config_file, ->{ "#{httpd.etc_dir}/httpd.conf" }
7
8
 
8
- set_default :httpd_log_dir, ->{ "#{log_dir}/httpd" }
9
- set_default :webdav_dir, ->{ "#{var_dir}/webdav" }
10
- set_default :auth_user_file, ->{ "#{httpd_etc_dir}/user.passwd" }
11
- set_default :httpd_server_admin, 'zhiqiangzhan@gmail.com'
12
- set_default :httpd_port, 8888
13
- set_default :httpd_server_name, ->{ "localhost:#{httpd_port}" }
9
+ set_default :log_dir, ->{ "#{log_dir}/httpd" }
10
+ set_default :webdav_dir, ->{ "#{var_dir}/webdav" }
11
+ set_default :auth_user_file, ->{ "#{httpd.etc_dir}/user.passwd" }
12
+ set_default :server_admin, 'zhiqiangzhan@gmail.com'
13
+ set_default :port, 6789
14
+ set_default :server_name, ->{ "localhost:#{httpd.port}" }
14
15
 
15
- set_default :auth_user, 'admin'
16
+ set_default :auth_user, 'admin'
17
+ end
16
18
 
17
19
  namespace :httpd do
18
20
  desc 'Initialize httpd config files.'
19
21
  task :init do
20
- mkdir_p(httpd_etc_dir, "#{httpd_etc_dir}/extra", httpd_log_dir, webdav_dir)
21
- search_paths.each do|sp|
22
- Dir["#{sp}/httpd/conf/*.erb"].each do|fn|
23
- target = fn.sub("#{sp}/httpd", "#{httpd_etc_dir}").sub(/.erb$/, "")
22
+ mkdir_p(httpd.etc_dir, "#{httpd.etc_dir}/extra", httpd.log_dir, httpd.webdav_dir)
23
+ template_paths.each do|tp|
24
+ Dir["#{tp}/httpd/**/*.erb"].each do|fn|
25
+ target = fn.sub("#{tp}/httpd", "#{httpd.etc_dir}").sub(/.erb$/, '')
24
26
  template(fn, target) unless File.exists?(target)
25
27
  end
26
28
  end
@@ -28,14 +30,14 @@ namespace :httpd do
28
30
 
29
31
  desc 'Create AuthUserFile.'
30
32
  task :auth_user_file do
31
- run "htpasswd -c #{auth_user_file} #{auth_user}"
33
+ run "htpasswd -c #{httpd.auth_user_file} #{httpd.auth_user}"
32
34
  end
33
35
 
34
36
  namespace :webdav do
35
37
  [:start, :restart, :stop].each do|t|
36
38
  desc "#{t} httpd instance."
37
39
  task t do
38
- run "#{httpd} -f #{httpd_conf} -k #{t}"
40
+ run "#{httpd.bin} -f #{httpd.config_file} -k #{t}"
39
41
  end
40
42
  end
41
43
  end
@@ -1,14 +1,16 @@
1
- set_default :www_http_port, 80
2
- set_default :www_https_port, 443
3
- set_default :www_paths, {}
1
+ scope :nginx do
2
+ set_default :www_http_port, 80
3
+ set_default :www_https_port, 443
4
+ set_default :www_paths, {}
5
+ end
4
6
 
5
7
  namespace :nginx do
6
8
  namespace :www do
7
9
  desc 'Create www config files.'
8
10
  task :init do
9
- template('nginx/www.conf.erb', "#{nginx_etc_dir}/www.conf", true)
10
- template('nginx/sites-enabled/static.conf.erb', "#{nginx_etc_dir}/sites-enabled/static.http.conf", true) unless www_paths.empty?
11
- template('nginx/sites-enabled/php.conf.erb', "#{nginx_etc_dir}/sites-enabled/php.http.conf", true)
11
+ template('nginx/www.conf.erb', "#{nginx.etc_dir}/www.conf", true)
12
+ template('nginx/sites-enabled/static.conf.erb', "#{nginx.etc_dir}/sites-enabled/static.http.conf", true) unless nginx.www_paths.empty?
13
+ template('nginx/sites-enabled/php.conf.erb', "#{nginx.etc_dir}/sites-enabled/php.http.conf", true)
12
14
  end
13
15
 
14
16
  [:start, :stop, :reload].each do|t|
data/recipes/nginx.rake CHANGED
@@ -1,38 +1,40 @@
1
- set_default :nginx, ->{ '/usr/local/bin/nginx' }
2
- set_default :nginx_home, ->{ `brew --prefix nginx`.strip }
3
- set_default :nginx_etc_dir, ->{ "#{etc_dir}/nginx" }
4
- set_default :nginx_run_dir, ->{ "#{run_dir}/nginx" }
5
- set_default :nginx_prefix, ->{ "#{log_dir}/nginx" }
1
+ scope :nginx do
2
+ set_default :bin, ->{ '/usr/local/bin/nginx' }
3
+ set_default :home, ->{ `brew --prefix nginx`.strip }
4
+ set_default :etc_dir, ->{ "#{etc_dir}/nginx" }
5
+ set_default :run_dir, ->{ "#{run_dir}/nginx" }
6
+ set_default :prefix, ->{ "#{log_dir}/nginx" }
6
7
 
7
- set_default :worker_processes, 8
8
-
9
- set_default :upstreams, [
10
- {name: :fastcgi_server, servers: ['127.0.0.1:6666']},
11
- {name: :catalina_server, servers: ['127.0.0.1:8080']}
12
- ]
8
+ set_default :worker_processes, 8
13
9
 
14
- set_default :server_name, 'localhost'
10
+ set_default :upstreams, [
11
+ {name: :fastcgi_server, servers: ['127.0.0.1:6666']},
12
+ {name: :catalina_server, servers: ['127.0.0.1:8080']}
13
+ ]
15
14
 
16
- set_default :use_ssl, false
17
- set_default :ssl_certificate, ->{"#{etc_dir}/ssl/server.crt"}
18
- set_default :ssl_certificate_key, ->{"#{etc_dir}/ssl/server.key"}
15
+ set_default :server_name, 'localhost'
19
16
 
17
+ set_default :use_ssl, true
18
+ set_default :ssl_certificate, ->{"#{etc_dir}/ssl/server.crt"}
19
+ set_default :ssl_certificate_key, ->{"#{etc_dir}/ssl/server.key"}
20
+ end
20
21
 
21
22
  def nginx_start_cmd(name)
22
- "#{nginx} -c #{nginx_etc_dir}/#{name}.conf -p #{nginx_prefix}"
23
+ "#{nginx.bin} -c #{nginx.etc_dir}/#{name}.conf -p #{nginx.prefix}"
23
24
  end
24
25
 
25
26
  def nginx_stop_cmd(name)
26
- "#{nginx} -s quit -c #{nginx_etc_dir}/#{name}.conf -p #{nginx_prefix}"
27
+ "#{nginx.bin} -s quit -c #{nginx.etc_dir}/#{name}.conf -p #{nginx.prefix}"
27
28
  end
28
29
 
29
30
  def nginx_reload_cmd(name)
30
- "#{nginx} -s reload -c #{nginx_etc_dir}/#{name}.conf -p #{nginx_prefix}"
31
+ "#{nginx.bin} -s reload -c #{nginx.etc_dir}/#{name}.conf -p #{nginx.prefix}"
31
32
  end
32
33
 
33
34
  def nginx_restart(name)
35
+ say_status :restart, 'restart nginx', :green
34
36
  invoke "nginx:#{name}:stop"
35
- puts 'Start nginx......'
37
+ say 'Start nginx......', :yellow
36
38
  sleep 5
37
39
  invoke "nginx:#{name}:start"
38
40
  end
@@ -40,10 +42,10 @@ end
40
42
  namespace :nginx do
41
43
  desc "Initialize nginx directory and create it's config files."
42
44
  task :init do
43
- mkdir_p(nginx_etc_dir, nginx_run_dir, nginx_prefix, nginx_log_dir)
44
- unless File.exists?("#{nginx_etc_dir}/conf")
45
- FileUtils.cp_r(find_templates("nginx/conf", false).first, nginx_etc_dir)
45
+ mkdir_p(nginx.etc_dir, nginx.run_dir, nginx.prefix)
46
+ unless File.exists?("#{nginx.etc_dir}/conf")
47
+ FileUtils.cp_r(find_templates("nginx/conf", false).first, nginx.etc_dir)
46
48
  end
47
- FileUtils.mkdir_p("#{nginx_etc_dir}/sites-enabled") unless File.exists?("#{nginx_etc_dir}/sites-enabled")
49
+ FileUtils.mkdir_p("#{nginx.etc_dir}/sites-enabled") unless File.exists?("#{nginx.etc_dir}/sites-enabled")
48
50
  end
49
51
  end
data/recipes/php.rake CHANGED
@@ -1,7 +1,12 @@
1
- set_default :php_home, ->{"#{share_dir}/php5"}
2
- set_default :php_cgi, ->{"#{php_home}/bin/php-cgi"}
3
- set_default :spawn_fcgi, "/usr/local/bin/spawn-fcgi"
4
- set_default :fcgi_run_dir, ->{"#{run_dir}/fcgi"}
1
+ scope :php do
2
+ set_default :home, ->{ "#{share_dir}/php5" }
3
+ set_default :php_cgi, ->{ "#{php.home}/bin/php-cgi" }
4
+ set_default :spawn_fcgi, '/usr/local/bin/spawn-fcgi'
5
+ set_default :fcgi_run_dir, ->{ "#{run_dir}/fcgi" }
6
+ set_default :fcgi_address, '127.0.0.1'
7
+ set_default :fcgi_port, 6666
8
+ set_default :fcgi_children, 6
9
+ end
5
10
 
6
11
  namespace :php do
7
12
  namespace :fcgi do
@@ -12,7 +17,7 @@ namespace :php do
12
17
 
13
18
  desc 'Start fcgi.'
14
19
  task :start => :init do
15
- run "#{spawn_fcgi} -a 127.0.0.1 -p 6666 -C 6 -f #{php_cgi} -u #{user} -P #{fcgi_run_dir}/spawn_fcgi.pid > /dev/null"
20
+ run "#{php.spawn_fcgi} -a #{php.fcgi_address} -p #{php.fcgi_port} -C #{php.fcgi_children} -f #{php.php_cgi} -u #{user} -d #{php.fcgi_run_dir} -P #{php.fcgi_run_dir}/spawn_fcgi.pid > /dev/null"
16
21
  end
17
22
 
18
23
  desc 'Kill fcgi.'
data/spec/peony_spec.rb CHANGED
@@ -25,6 +25,9 @@ describe Peony do
25
25
  it 'should can run command' do
26
26
  peony do
27
27
  run "echo 'Hello World!'"
28
+ with_padding do
29
+ run "echo 'Hello World!'"
30
+ end
28
31
  run 'ls -l'
29
32
 
30
33
  inside 'lib/peony' do
@@ -0,0 +1,48 @@
1
+ require 'spec_helper'
2
+
3
+ describe Peony do
4
+ describe 'Scope' do
5
+ it 'should can set and get value' do
6
+ root_scope = Peony::Scope.new(:root)
7
+ scope = Peony::Scope.new(:my, root_scope)
8
+ root_scope[:a], scope[:b] = 1, 2
9
+
10
+ scope.has_key?(:a).should be_true
11
+ scope.key?(:a).should be_true
12
+ scope.include?(:a).should be_true
13
+ scope.local?(:a).should be_false
14
+
15
+ scope[:a].should == 1
16
+ scope.set(:a, 2)
17
+ scope[:a].should == 2
18
+ root_scope[:a].should == 2
19
+
20
+ scope[:b].should == 2
21
+ root_scope[:b].should == nil
22
+ scope.set(:b, 3)
23
+ scope[:b].should == 3
24
+ root_scope[:b].should == nil
25
+
26
+ root_scope.set(:b, 5)
27
+ scope[:b].should == 3
28
+ root_scope[:b].should == 5
29
+
30
+ scope.local(:a, 6)
31
+ scope[:a].should == 6
32
+ root_scope[:a].should == 2
33
+ scope[:a] = 8
34
+ scope[:a].should == 8
35
+ root_scope[:a].should == 2
36
+
37
+ scope.a.should == 8
38
+ root_scope.a.should == 2
39
+ scope.a?.should be_true
40
+
41
+ scope.delete(:a)
42
+ scope[:a] = 9
43
+ scope[:a].should == 9
44
+ root_scope[:a].should == 9
45
+
46
+ end
47
+ end
48
+ end
@@ -34,6 +34,66 @@ describe 'Settings in rake tasks' do
34
34
  set :path, lambda { "/var/www/#{settings.version!}" }
35
35
  }
36
36
  peony.path
37
- }.to raise_error(Peony::Error, /version/)
37
+ }.to raise_error(KeyError, /version/)
38
38
  end
39
+
40
+ it '#settings with default value' do
41
+ peony {
42
+ set :a, '100'
43
+ set_default :a, 3000
44
+ set_default :b, 6000
45
+ }
46
+ peony.a.should == '100'
47
+ peony.b.should == 6000
48
+ end
49
+
50
+ it '#settings with scope' do
51
+ peony {
52
+ set :a, 1
53
+ set 'e', 1
54
+ set 'f', 1
55
+ set 'g', 1
56
+ scope 'scope1' do
57
+ set :a, 2
58
+ set :b, 2
59
+ set :u, 2
60
+ set :v, 2
61
+ set :w, 2
62
+ scope 'scope2' do
63
+ set 'a', 3
64
+ set 'b', 3
65
+ set 'c', 3
66
+ set :x, 3
67
+ set :y, 3
68
+ set :z, 3
69
+ end
70
+ end
71
+ }
72
+
73
+ peony.a.should == 1
74
+ peony.e.should == 1
75
+ peony.f.should == 1
76
+ peony.g.should == 1
77
+ peony.scope1.a.should == 2
78
+ peony.scope1.b.should == 2
79
+ peony.scope1.a.should == 2
80
+ peony.scope1.u.should == 2
81
+ peony.scope1.v.should == 2
82
+ peony.scope1.w.should == 2
83
+ peony.scope1.scope2.a.should == 3
84
+ peony.scope1.scope2.b.should == 3
85
+ peony.scope1.scope2.c.should == 3
86
+ peony.scope1.scope2.x.should == 3
87
+ peony.scope1.scope2.y.should == 3
88
+ peony.scope1.scope2.z.should == 3
89
+
90
+ peony.scope1.e.should == 1
91
+ peony.scope1.f.should == 1
92
+ peony.scope1.g.should == 1
93
+ peony.scope1.scope2.u.should == 2
94
+ peony.scope1.scope2.v.should == 2
95
+ peony.scope1.scope2.w.should == 2
96
+ end
97
+
98
+
39
99
  end
@@ -46,7 +46,7 @@ describe Peony::Settings do
46
46
  end
47
47
 
48
48
  it 'question mark should work with nils' do
49
- @settings.deploy_to = nil
49
+ @settings.deploy_to = '/var/www'
50
50
  @settings.deploy_to?.should be_true
51
51
  @settings.foobar?.should be_false
52
52
  end
@@ -63,7 +63,7 @@ describe Peony::Settings do
63
63
  end
64
64
 
65
65
  it 'bangs should check for settings' do
66
- expect { @settings.non_existent_setting! }.to raise_error(Peony::Error, /non_existent_setting/)
66
+ expect { @settings.non_existent_setting! }.to raise_error(KeyError, /non_existent_setting/)
67
67
  end
68
68
 
69
69
  it 'bangs should return settings' do
data/spec/spec_helper.rb CHANGED
@@ -11,11 +11,9 @@ require 'bundler/setup'
11
11
  require 'rake'
12
12
  require 'peony'
13
13
 
14
- puts "Peony, version v#{Peony::Version}"
15
-
16
14
  class PeonyScope
17
15
  include Rake::DSL if Rake.const_defined?(:DSL)
18
- include Peony::Utils
16
+ include Peony::Configure
19
17
  include Peony::Shell
20
18
  include Peony::Actions
21
19
  end