soprano 0.3 → 0.5
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/.gitignore +0 -1
- data/.rvmrc +1 -0
- data/README.md +24 -1
- data/lib/soprano/version.rb +1 -1
- data/recipes/daemon_strategy.rb +5 -2
- data/recipes/defaults.rb +0 -3
- data/recipes/nginx.rb +1 -1
- data/recipes/remote.rb +43 -0
- data/recipes/{daemon_strategies → servers}/mongrel_cluster.rb +0 -0
- data/recipes/{daemon_strategies → servers}/passenger.rb +0 -0
- data/soprano.gemspec +1 -0
- metadata +55 -56
data/.gitignore
CHANGED
data/.rvmrc
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
rvm use 1.9.3@soprano --create
|
data/README.md
CHANGED
@@ -33,7 +33,30 @@ To start using Soprano you just need to add `require "soprano"` to your
|
|
33
33
|
|
34
34
|
## Features
|
35
35
|
|
36
|
-
|
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
|
43
|
+
|
44
|
+
Similar tasks exist for rake, thor and runner. Try `cap -T remote`. Note:
|
45
|
+
runner does not put to the STDOUT anything.
|
46
|
+
|
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.
|
51
|
+
|
52
|
+
You also have `cap remote:tail` to tail the application log.
|
53
|
+
|
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).
|
56
|
+
|
57
|
+
### Other
|
58
|
+
|
59
|
+
Readme about other features in process...
|
37
60
|
|
38
61
|
## Thanks
|
39
62
|
|
data/lib/soprano/version.rb
CHANGED
data/recipes/daemon_strategy.rb
CHANGED
@@ -1,7 +1,10 @@
|
|
1
1
|
on :load do
|
2
|
-
strategy = fetch(:daemon_strategy
|
2
|
+
strategy = fetch(:daemon_strategy)
|
3
3
|
|
4
4
|
if [:passenger, :mongrel_cluster].include? strategy
|
5
|
-
|
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")
|
6
9
|
end
|
7
10
|
end
|
data/recipes/defaults.rb
CHANGED
@@ -19,9 +19,6 @@ 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
|
-
|
25
22
|
# set :install_gems, true
|
26
23
|
|
27
24
|
# set :backup_database_before_migrations, false
|
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(:
|
29
|
+
if fetch(:link_vhost_from_app, false)
|
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"
|
data/recipes/remote.rb
ADDED
@@ -0,0 +1,43 @@
|
|
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
|
File without changes
|
File without changes
|
data/soprano.gemspec
CHANGED
metadata
CHANGED
@@ -1,98 +1,97 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: soprano
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: '0.5'
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 3
|
9
|
-
version: "0.3"
|
10
6
|
platform: ruby
|
11
|
-
authors:
|
7
|
+
authors:
|
12
8
|
- Dmitriy Kiriyenko
|
13
9
|
autorequire:
|
14
10
|
bindir: bin
|
15
11
|
cert_chain: []
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2012-03-31 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
20
15
|
name: capistrano
|
21
|
-
|
22
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
23
17
|
none: false
|
24
|
-
requirements:
|
25
|
-
- -
|
26
|
-
- !ruby/object:Gem::Version
|
27
|
-
hash: 27
|
28
|
-
segments:
|
29
|
-
- 2
|
30
|
-
- 5
|
31
|
-
- 0
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
32
21
|
version: 2.5.0
|
33
22
|
type: :runtime
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
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:
|
40
50
|
- dmitriy.kiriyenko@gmail.com
|
41
51
|
executables: []
|
42
|
-
|
43
52
|
extensions: []
|
44
|
-
|
45
53
|
extra_rdoc_files: []
|
46
|
-
|
47
|
-
files:
|
54
|
+
files:
|
48
55
|
- .gitignore
|
56
|
+
- .rvmrc
|
49
57
|
- Gemfile
|
50
58
|
- LICENSE
|
51
59
|
- README.md
|
52
60
|
- Rakefile
|
53
61
|
- lib/soprano.rb
|
54
62
|
- lib/soprano/version.rb
|
55
|
-
- recipes/daemon_strategies/mongrel_cluster.rb
|
56
|
-
- recipes/daemon_strategies/passenger.rb
|
57
63
|
- recipes/daemon_strategy.rb
|
58
64
|
- recipes/db.rb
|
59
65
|
- recipes/defaults.rb
|
60
66
|
- recipes/delayed_job.rb
|
61
67
|
- recipes/nginx.rb
|
68
|
+
- recipes/remote.rb
|
62
69
|
- recipes/replicate.rb
|
70
|
+
- recipes/servers/mongrel_cluster.rb
|
71
|
+
- recipes/servers/passenger.rb
|
63
72
|
- soprano.gemspec
|
64
73
|
homepage: https://github.com/dmitriy-kiriyenko/soprano
|
65
74
|
licenses: []
|
66
|
-
|
67
75
|
post_install_message:
|
68
76
|
rdoc_options: []
|
69
|
-
|
70
|
-
require_paths:
|
77
|
+
require_paths:
|
71
78
|
- lib
|
72
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
79
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
73
80
|
none: false
|
74
|
-
requirements:
|
75
|
-
- -
|
76
|
-
- !ruby/object:Gem::Version
|
77
|
-
|
78
|
-
|
79
|
-
- 0
|
80
|
-
version: "0"
|
81
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
81
|
+
requirements:
|
82
|
+
- - ! '>='
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: '0'
|
85
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
82
86
|
none: false
|
83
|
-
requirements:
|
84
|
-
- -
|
85
|
-
- !ruby/object:Gem::Version
|
86
|
-
|
87
|
-
segments:
|
88
|
-
- 0
|
89
|
-
version: "0"
|
87
|
+
requirements:
|
88
|
+
- - ! '>='
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: '0'
|
90
91
|
requirements: []
|
91
|
-
|
92
92
|
rubyforge_project:
|
93
|
-
rubygems_version: 1.8.
|
93
|
+
rubygems_version: 1.8.21
|
94
94
|
signing_key:
|
95
95
|
specification_version: 3
|
96
96
|
summary: Soprano is the set of rake tasks and capistrano recipes.
|
97
97
|
test_files: []
|
98
|
-
|