मैं कैसे अपनी समस्या को हल करने के लिए यकीन नहीं है: -
संपादित यहाँ मेरी तैनाती
set :application, "my_app"
set :repository, "https://IP_ADDR/svn/my_app"
set :scm, :subversion
set :scm_username, 'my_name'
set :scm_password, 'my_pass'
default_run_options[:pty] = true
set :user, "my_name"
set :domain, 'IP_ADDR'
set :deploy_to, "/var/www/my_app"
set :use_sudo, false
set :deploy_via, :remote_cache
#set :keep_releases, 1
set :rails_env, 'production'
role :web, domain
role :app, domain
role :db, domain, :primary => true # This is where Rails migrations will run
namespace :deploy do
task :build_gems, :roles => :app do
desc "Building gems"
run "cd #{release_path} && bundle install --deployment"
end
task :migrations do
desc "Migrating database"
run "cd #{release_path} && rake db:migrate RAILS_ENV=production"
end
[:start, :stop].each do |t|
desc "#{t} task is a no-op with passenger"
task t, :roles => :app do ; end
end
desc "Restarting passenger with restart.txt"
task :restart, :roles => :app, :except => { :no_release => true } do
run "touch #{release_path}/tmp/restart.txt"
end
after "deploy:update_code", "deploy:build_gems", "db:copy_configuration", "config:copy", "deploy:migrations", "deploy:cleanup"
after "deploy:update", "bluepill:copy_config", "bluepill:restart"
end
namespace :db do
task :copy_configuration do
run "cp #{release_path}/config/database.staging.yml #{release_path}/config/database.yml"
end
end
namespace :config do
task :copy do
run "cp #{release_path}/config/config.staging.yml #{release_path}/config/config.yml"
end
end
namespace :bluepill do
desc "Restart bluepill process"
task :restart, :roles => [:app] do
run "#{release_path}/script/delayed_job stop"
sudo "/etc/init.d/bluepill.sh restart"
end
#desc "Load bluepill configuration and start it"
##task :start, :roles => [:app] do
# sudo "/etc/init.d/bluepill.sh start"
#end
desc "Prints bluepills monitored processes statuses"
task :status, :roles => [:app] do
sudo "bluepill status"
end
desc "Copy config"
task :copy_config, :roles => [:app] do
run "cp #{release_path}/config/bluepill/configuration.rb /srv/script/bluepill.rb"
end
end
समस्या है। ऐसा लगता है कि डेटाबेस.स्टेजिंग.आईएमएल तैनात नहीं किया जा रहा है, इसलिए इसकी प्रतिलिपि बनाने के लिए कुछ भी नहीं है।
मुझे लगता है कि एक बेहतर वर्कफ़्लो है, हालांकि। सेटिंग्स और डेटाबेस कॉन्फ़िगरेशन जैसी चीजें आम तौर पर तैनाती के बीच नहीं बदलती हैं, इसलिए ये चीजें सभी कैपिस्ट्रानो रिलीज़ के साझा फ़ोल्डर में जा सकती हैं। आम तौर पर, आप अपने डेटाबेस में अपने डेटाबेस में होना चाहते हैं या तो संवेदनशील जानकारी के बाद से। आप अपने .gitignore
में config/database.yml
को छोड़कर इन दोनों चीजों को संतुष्ट कर सकते हैं।
यह आपको अपने सर्वर पर एक बार सेट अप करने की आवश्यकता है। आपको your_app_path/shared/config
पर database.yml
बनाने की आवश्यकता है। साझा वर्तमान और रिलीज के लिए एक भाई है।
आपका deploy.rb
एक ऐसा कार्य होना चाहिए जो साझा की गई निर्देशिका में नए तैनात रिलीज के database.yml
पर सिमलिंक हो। इस तरह:
before "deploy:assets:precompile" do
run ["ln -nfs #{shared_path}/config/settings.yml #{release_path}/config/settings.yml",
"ln -nfs #{shared_path}/config/database.yml #{release_path}/config/database.yml",
"ln -fs #{shared_path}/uploads #{release_path}/uploads"
].join(" && ")
end
इसका मतलब यह है कि आपके रेपो कोई database.yml
फ़ाइलें शामिल होंगी। चूंकि वे शायद आपके रेपो में पहले से ही हैं। आपको git rm
करना होगा, प्रतिबद्ध करें। उन्हें .gitignore
में जोड़ें और इसे प्रतिबद्ध करें।
क्या होता है जब आप उस मशीन पर मैन्युअल रूप से cp कमांड चलाते हैं? –
.yml या .ymp? यदि आपके पास .mp है, तो आपकी फ़ाइल को गलत नाम दिया गया है – DGM
.yml, मेरा बुरा ... – user984621