यह थोड़ा मुश्किल है, मैं यह भी करने की कोशिश कर रहा हूं (जावा मेरे सर्वर पर ठीक से काम नहीं कर रहा है, इसलिए तैनाती विफल हो जाती है)।
समस्या यह है कि कैपिफोनी एक स्रोत नियंत्रण भंडार से तैनात है, और आम तौर पर डंप संपत्तियां भंडार पर नहीं होती हैं (और उन्हें नहीं करना चाहिए)।
तो मुझे लगता है कि ऐसा करने का एकमात्र तरीका कैपिस्ट्रानो कार्य (कैपिफोनी कैपिस्ट्रानो पर आधारित है) बनाना है जो संपत्ति को डंप करेगा और उन्हें सर्वर पर rsync करेगा।
संपादित करें: यहाँ मेरी प्रयास संपादित है: यह काम करते हैं, मैं इसे प्रयोग कर रहे है के बाद से मैं सवाल का जवाब दे।
मुझे यकीन है कि बहुत सारे संभावित सुधार हैं, मैं एक रूबी लड़का नहीं हूं, मैं एक शेल स्क्रिप्ट लड़का नहीं हूं।
before "deploy:update_code", "deploy:dump_assetic_locally"
after "deploy:update_code", "deploy:rsync_local_assets_to_server"
और (एक ही फाइल में) उन कार्यों से जुड़े कोड:
अपने deploy.rb में आप दो कार्यों को जोड़ सकते हैं
namespace :deploy do
task :dump_assetic_locally, :roles => :web do
run_locally "php app/console assetic:dump --env=prod"
end
task :rsync_local_assets_to_server, :roles => :web do
finder_options = {:except => { :no_release => true }}
find_servers(finder_options).each {|s| run_locally "rsync -az --delete --rsh='ssh -p #{ssh_port(s)}' #{local_web_path}/js/ #{rsync_host(s)}:#{release_path}/web/js/" }
find_servers(finder_options).each {|s| run_locally "rsync -az --delete --rsh='ssh -p #{ssh_port(s)}' #{local_web_path}/css/ #{rsync_host(s)}:#{release_path}/web/css/" }
end
def local_web_path
File.expand_path("web")
end
def rsync_host(server)
:user ? "#{user}@#{server.host}" : server.host
end
def ssh_port(server)
server.port || ssh_options[:port] || 22
end
end
क्या आपने मेरा समाधान करने की कोशिश की है? मेरा मानना है कि यह एसओ में मेरा सबसे अच्छा योगदान है, इसलिए अगर यह काम करता है तो मुझे यह स्वीकार करने में खुशी होगी :-) – Julien