peony 0.1.9 → 0.3.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.
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