soprano 0.6 → 0.20

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/README.md CHANGED
@@ -1,7 +1,5 @@
1
1
  # Soprano
2
2
 
3
- [![The Sopranos](http://i.minus.com/idGXKU.jpeg)](http://www.imdb.com/title/tt0141842/)
4
-
5
3
  Soprano is the set of Capistrano recipes that help me to deploy my
6
4
  applications.
7
5
 
@@ -16,7 +14,7 @@ been borrowed from its sources.
16
14
 
17
15
  For Rails 3 add to your `Gemfile`:
18
16
 
19
- gem 'soprano', :require => false
17
+ gem 'soprano', :require => false, :version => '>= 0.1.0'
20
18
 
21
19
  ## Example usage
22
20
 
@@ -33,37 +31,25 @@ To start using Soprano you just need to add `require "soprano"` to your
33
31
 
34
32
  ## Features
35
33
 
36
- ### Remote
37
-
38
- *Sometimes* we need to execute an arbitrary command or script on our
39
- server within the application. To aid with thin, Soprano offers a bunch
40
- of `remote` scripts. For example:
41
-
42
- cap remote:command -s cmd="ls -l" # You'll even get the output
34
+ ### Whenever
43
35
 
44
- Similar tasks exist for rake, thor and runner. Try `cap -T remote`. Note:
45
- runner does not put to the STDOUT anything.
36
+ Using [whenever](https://github.com/javan/whenever) is as easy as `set`ing `:whenever` to `true`. Just like this:
46
37
 
47
- Don't forget to use `-s` option. Also wrap `cmd=` argument in quotes.
48
- Yeah, this is not comfortable, but it's intentional. Consider it a
49
- syntax vinegar. If you have a repeated task, write a Capistrano recipe
50
- for it. This remote calls are for really occasional tasks.
38
+ set :whenever, true
51
39
 
52
- You also have `cap remote:tail` to tail the application log.
40
+ Whenever will use your application deploy path as crontab identifier.
53
41
 
54
- If all you need is just remotely run the rake tasks, you may also want to
55
- consider using [Cape](https://github.com/njonsson/cape).
42
+ You may wish to override the command, used to invoke whenever, e.g., to use Bundler:
56
43
 
57
- ### Other
44
+ set :whenever_command, 'bundle exec whenever'
58
45
 
59
- Readme about other features in process...
46
+ Other features in process...
60
47
 
61
48
  ## Thanks
62
49
 
63
- - Jamis Buck for [Capistrano](https://github.com/halorgium/capistrano),
50
+ - Jamis Buck for [Capistrano](http://github.com/jamis/capistrano),
64
51
  - Rubaidh Ltd for their awesome
65
- [Rubaidhstrano](http://github.com/rubaidh/rubaidhstrano),
66
- - Denis Barushev for [Capone](https://github.com/denis/capone).
52
+ [Rubaidhstrano](http://github.com/rubaidh/rubaidhstrano).
67
53
 
68
54
  ## Copyright
69
55
 
@@ -1,3 +1,3 @@
1
1
  module Capone
2
- VERSION = "0.6"
2
+ VERSION = "0.20"
3
3
  end
@@ -1,10 +1,7 @@
1
1
  on :load do
2
- strategy = fetch(:daemon_strategy)
2
+ strategy = fetch(:daemon_strategy, :mongrel_cluster)
3
3
 
4
4
  if [:passenger, :mongrel_cluster].include? strategy
5
- puts "Providing strategy via set :daemon_strategy, #{strategy} is deprecated!"
6
- puts "Use require 'servers/#{strategy}' instead."
7
-
8
- load File.join(File.dirname(__FILE__), "servers", "#{strategy}.rb")
5
+ load File.join(File.dirname(__FILE__), "daemon_strategies", "#{strategy}.rb")
9
6
  end
10
7
  end
data/recipes/db.rb CHANGED
@@ -77,7 +77,6 @@ on :load do
77
77
  if fetch(:setup_database_after_deploy_setup, true)
78
78
  after "deploy:setup", "soprano:db:setup"
79
79
  end
80
-
81
80
  if fetch(:load_fixtures_to_database_after_deploy_cold, false)
82
81
  after "deploy:cold", "soprano:db:load_fixtures"
83
82
  end
data/recipes/defaults.rb CHANGED
@@ -19,6 +19,9 @@ ssh_options[:forward_agent] = true
19
19
 
20
20
  # You can redefine these variables in your config/deploy.rb
21
21
 
22
+ # set :daemon_strategy, :mongrel_cluster
23
+ # set :web_server, :nginx
24
+
22
25
  # set :install_gems, true
23
26
 
24
27
  # set :backup_database_before_migrations, false
data/recipes/gems.rb ADDED
@@ -0,0 +1,23 @@
1
+ namespace :soprano do
2
+ namespace :gems do
3
+ desc <<-DESC
4
+ Install gems needed by application.
5
+ DESC
6
+ task :install, :roles => :app do
7
+ run "rake gems:install -f #{release_path}/Rakefile RAILS_ENV=#{rails_env}"
8
+ end
9
+
10
+ desc <<-DESC
11
+ Update installed gems.
12
+ DESC
13
+ task :update, :roles => :app do
14
+ sudo "gem update --no-rdoc --no-ri"
15
+ end
16
+ end
17
+ end
18
+
19
+ on :load do
20
+ if fetch(:install_gems, true)
21
+ after "deploy:update_code", "soprano:gems:install"
22
+ end
23
+ end
data/recipes/nginx.rb CHANGED
@@ -26,7 +26,7 @@ namespace :soprano do
26
26
  end
27
27
 
28
28
  on :load do
29
- if fetch(:link_vhost_from_app, false)
29
+ if fetch(:web_server, :nginx) == :nginx
30
30
  before "deploy:start", "soprano:nginx:enable_vhost"
31
31
  after "deploy:stop", "soprano:nginx:disable_vhost"
32
32
  after "deploy:restart", "soprano:nginx:reload_if_config_file_changed"
@@ -0,0 +1,17 @@
1
+ namespace :soprano do
2
+ namespace :whenever do
3
+ desc <<-DESC
4
+ Update the crontab file with whenever.
5
+ DESC
6
+ task :update_crontab, :roles => :db do
7
+ whenever_command = fetch(:whenever_command, "whenever")
8
+ run "cd #{release_path} && #{whenever_command} --set environment=#{rails_env} --update-crontab #{deploy_to}"
9
+ end
10
+ end
11
+ end
12
+
13
+ on :load do
14
+ if fetch(:whenever, false)
15
+ after "deploy:symlink", "soprano:whenever:update_crontab"
16
+ end
17
+ end
data/soprano.gemspec CHANGED
@@ -19,5 +19,4 @@ Gem::Specification.new do |s|
19
19
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
20
  s.require_paths = ["lib"]
21
21
  s.add_dependency "capistrano", ">= 2.5.0"
22
- s.add_development_dependency "rake"
23
22
  end
metadata CHANGED
@@ -1,97 +1,102 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: soprano
3
- version: !ruby/object:Gem::Version
4
- version: '0.6'
3
+ version: !ruby/object:Gem::Version
4
+ hash: 35
5
5
  prerelease:
6
+ segments:
7
+ - 0
8
+ - 20
9
+ version: "0.20"
6
10
  platform: ruby
7
- authors:
11
+ authors:
8
12
  - Dmitriy Kiriyenko
9
13
  autorequire:
10
14
  bindir: bin
11
15
  cert_chain: []
12
- date: 2012-03-31 00:00:00.000000000 Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
16
+
17
+ date: 2011-07-01 00:00:00 +03:00
18
+ default_executable:
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
15
21
  name: capistrano
16
- requirement: !ruby/object:Gem::Requirement
17
- none: false
18
- requirements:
19
- - - ! '>='
20
- - !ruby/object:Gem::Version
21
- version: 2.5.0
22
- type: :runtime
23
22
  prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
23
+ requirement: &id001 !ruby/object:Gem::Requirement
25
24
  none: false
26
- requirements:
27
- - - ! '>='
28
- - !ruby/object:Gem::Version
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ hash: 27
29
+ segments:
30
+ - 2
31
+ - 5
32
+ - 0
29
33
  version: 2.5.0
30
- - !ruby/object:Gem::Dependency
31
- name: rake
32
- requirement: !ruby/object:Gem::Requirement
33
- none: false
34
- requirements:
35
- - - ! '>='
36
- - !ruby/object:Gem::Version
37
- version: '0'
38
- type: :development
39
- prerelease: false
40
- version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
43
- - - ! '>='
44
- - !ruby/object:Gem::Version
45
- version: '0'
46
- description: ! "Soprano is the set of rake tasks and capistrano recipes.\n Use
47
- it to avoid writing typical scenarios and maintaining them\n in
48
- favour of configuring your builds and deploys declaratively."
49
- email:
34
+ type: :runtime
35
+ version_requirements: *id001
36
+ description: |-
37
+ Soprano is the set of rake tasks and capistrano recipes.
38
+ Use it to avoid writing typical scenarios and maintaining them
39
+ in favour of configuring your builds and deploys declaratively.
40
+ email:
50
41
  - dmitriy.kiriyenko@gmail.com
51
42
  executables: []
43
+
52
44
  extensions: []
45
+
53
46
  extra_rdoc_files: []
54
- files:
47
+
48
+ files:
55
49
  - .gitignore
56
- - .rvmrc
57
50
  - Gemfile
58
51
  - LICENSE
59
52
  - README.md
60
53
  - Rakefile
61
54
  - lib/soprano.rb
62
55
  - lib/soprano/version.rb
56
+ - recipes/daemon_strategies/mongrel_cluster.rb
57
+ - recipes/daemon_strategies/passenger.rb
63
58
  - recipes/daemon_strategy.rb
64
59
  - recipes/db.rb
65
60
  - recipes/defaults.rb
66
61
  - recipes/delayed_job.rb
62
+ - recipes/gems.rb
67
63
  - recipes/nginx.rb
68
- - recipes/remote.rb
69
64
  - recipes/replicate.rb
70
- - recipes/servers/mongrel_cluster.rb
71
- - recipes/servers/passenger.rb
65
+ - recipes/whenever.rb
72
66
  - soprano.gemspec
67
+ has_rdoc: true
73
68
  homepage: https://github.com/dmitriy-kiriyenko/soprano
74
69
  licenses: []
70
+
75
71
  post_install_message:
76
72
  rdoc_options: []
77
- require_paths:
73
+
74
+ require_paths:
78
75
  - lib
79
- required_ruby_version: !ruby/object:Gem::Requirement
76
+ required_ruby_version: !ruby/object:Gem::Requirement
80
77
  none: false
81
- requirements:
82
- - - ! '>='
83
- - !ruby/object:Gem::Version
84
- version: '0'
85
- required_rubygems_version: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ hash: 3
82
+ segments:
83
+ - 0
84
+ version: "0"
85
+ required_rubygems_version: !ruby/object:Gem::Requirement
86
86
  none: false
87
- requirements:
88
- - - ! '>='
89
- - !ruby/object:Gem::Version
90
- version: '0'
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ hash: 3
91
+ segments:
92
+ - 0
93
+ version: "0"
91
94
  requirements: []
95
+
92
96
  rubyforge_project:
93
- rubygems_version: 1.8.21
97
+ rubygems_version: 1.5.2
94
98
  signing_key:
95
99
  specification_version: 3
96
100
  summary: Soprano is the set of rake tasks and capistrano recipes.
97
101
  test_files: []
102
+
data/.rvmrc DELETED
@@ -1 +0,0 @@
1
- rvm use 1.9.3@soprano --create
data/recipes/remote.rb DELETED
@@ -1,43 +0,0 @@
1
- namespace :remote do
2
- def get_cmd
3
- cmd = self[:cmd]
4
- raise "A command must be given. Pleae, call the task with -s cmd=\"your command\"" unless cmd
5
- cmd
6
- end
7
-
8
- def remote_call(command)
9
- run wrap_command(command) do |channel, stream, data|
10
- puts "#{data}"
11
- break if stream == :err
12
- end
13
- end
14
-
15
- def wrap_command(command)
16
- "cd #{current_path} && RAILS_ENV=#{rails_env} bundle exec #{command}"
17
- end
18
-
19
- desc "execute an arbitrary command from application folder"
20
- task "command", :roles => :app do
21
- remote_call get_cmd
22
- end
23
-
24
- desc "execute an arbitrary rake task from application folder"
25
- task "rake", :roles => :app do
26
- remote_call "rake #{get_cmd}"
27
- end
28
-
29
- desc "execute an arbitrary thor script from application folder"
30
- task "thor", :roles => :app do
31
- remote_call "thor #{get_cmd}"
32
- end
33
-
34
- desc "execute an arbitrary ruby script in application environment"
35
- task "runner", :roles => :app do
36
- remote_call "script/rails runner \"#{get_cmd}\""
37
- end
38
-
39
- desc "tail the application log"
40
- task :tail, :roles => :app do
41
- remote_call("tail -n 10000 -f log/#{rails_env}.log")
42
- end
43
- end