/ / मैं एक कस्टम कार्य कैसे कर सकता / सकती हूं और मैं सुंदर आउटपुट कैसे प्राप्त करूं? - कैपिस्ट्रानो, capistrano3

मैं एक कस्टम कार्य कैसे कर सकता हूं और मुझे सुंदर आउटपुट कैसे मिलेंगे? - कैपिस्ट्रानो, capistrano3

मैं Capistrano 3 (lib / capistrano / कार्य / संशोधन) में एक कस्टम कार्य लिख रहा हूं जो कर्ल के माध्यम से चल रहे एप्लिकेशन के संशोधन को प्राप्त कर रहा है।

फिर यह नवीनतम तैनात के साथ चल रहे संस्करण की तुलना करता है और उनकी तुलना करता है, अगर वे समान नहीं हैं तो एक त्रुटि फेंक दी जानी चाहिए।

मुझे इस बात पर ध्यान दिया गया कि रनिंग एप्लिकेशन का रिविजन किया गया है और एक एरर फेंकने के लिए एक खाली स्ट्रिंग की तुलना में।

समस्या यह है कि मैं इस कार्य का उत्पादन सुंदर नहीं है, यह सिर्फ सादे सफेद पाठ है

मैं क्या खो रहा हूँ? मैं पूरे दिन प्रलेखन में खुदाई कर रहा हूं।

सादर!

revision.rake:

namespace :revision do
desc "Check revision of all applications to determine if the application is running the latest deployed revison"
task :check do
puts "Checking revision of all supported applications"

invoke "revision:httpapi"
end

task :httpapi do
on roles(:httpapi), in: :sequence do |host|
puts "Checking revision of httpapi on #{host}"
begin
response = capture "curl -L "http://#{fetch(:diagnostics_username)}:#{fetch(:diagnostics_password)}@#{host}/diagnostics/status?mode=extended&output=detailed""
object = JSON.parse(response, object_class: OpenStruct)

unless object.result.revision == "" #For test, just compare to empty string so error is thrown
raise "The running revision is not the same as the installed, please restart all applications"
end
rescue Exception => e
raise e.message
end
end
end
end

आउटपुट:

gonace@ubuntu ~/Development/tulo-deployment (master) $ cap test revision:check
Enter a branch or tag name to deploy (defaults to develop)
Please enter branch (develop):
Deploying branch/tag: develop
rvm 1.28.0 (latest) by Wayne E. Seguin <wayneeseguin@gmail.com>, Michal Papis <mpapis@gmail.com> [https://rvm.io/]
rvm 1.28.0 (latest) by Wayne E. Seguin <wayneeseguin@gmail.com>, Michal Papis <mpapis@gmail.com> [https://rvm.io/]
ruby-1.9.3-p545
ruby-1.9.3-p545
ruby 1.9.3p545 (2014-02-24 revision 45159) [x86_64-linux]
ruby 1.9.3p545 (2014-02-24 revision 45159) [x86_64-linux]
Checking revision of all supported applications
Checking revision of httpapi on 10.30.1.1
(Backtrace restricted to imported tasks)
cap aborted!
The running revision is not the same as the installed, please restart all applications
/home/gonace/Development/tulo-deployment/lib/capistrano/tasks/revision.rake:20:in `rescue in block (3 levels) in <top (required)>"
/home/gonace/Development/tulo-deployment/lib/capistrano/tasks/revision.rake:12:in `block (3 levels) in <top (required)>"
/home/gonace/Development/tulo-deployment/lib/capistrano/tasks/revision.rake:10:in `block (2 levels) in <top (required)>"
/home/gonace/Development/tulo-deployment/lib/capistrano/tasks/revision.rake:6:in `block (2 levels) in <top (required)>"
The running revision is not the same as the installed, please restart all applications
/home/gonace/Development/tulo-deployment/lib/capistrano/tasks/revision.rake:17:in `block (3 levels) in <top (required)>"
/home/gonace/Development/tulo-deployment/lib/capistrano/tasks/revision.rake:10:in `block (2 levels) in <top (required)>"
/home/gonace/Development/tulo-deployment/lib/capistrano/tasks/revision.rake:6:in `block (2 levels) in <top (required)>"
Tasks: TOP => revision:httpapi
(See full trace by running task with --trace)

उत्तर:

उत्तर № 1 के लिए 1

कोर में हल की जा रही एक समान समस्या का एक अच्छा उदाहरण यहां है: https://github.com/capistrano/capistrano/blob/master/lib/capistrano/tasks/deploy.rake#L91

उन पंक्तियों के साथ, आप "कोड को कुछ इस तरह चाहते हैं:

task :httpapi do
on roles(:httpapi), in: :sequence do |host|
puts "Checking revision of httpapi on #{host}"
response = capture "curl -L "http://#{fetch(:diagnostics_username)}:#{fetch(:diagnostics_password)}@#{host}/diagnostics/status?mode=extended&output=detailed""
object = JSON.parse(response, object_class: OpenStruct)

unless object.result.revision == "" #For test, just compare to empty string so error is thrown
error "The running revision is not the same as the installed, please restart all applications"
exit 1
end
end
end

संपादित करें:

रंगीन टेक्स्ट को आउटपुट करने के लिए, आप इसका उपयोग कर सकते हैं:

Airbrussh::Colors.green("Your message")

से: https://github.com/mattbrictson/airbrussh/blob/master/lib/airbrussh/colors.rb