2013-02-24 3 views
0

capistrano를 사용하여 배포하려고하지만이 database.yml을 계속 찾을 수 없습니다. 오류가 발생합니다. 내 database.yml 파일은 저의 저장소에 커밋되지 않았고 deploy.rb 파일을 설정하여 즉시 database.yml을 만들려고했지만 작동하지 않는 것 같습니다. 내가 배포 중지 및 롤백 후 다음과 같은 오류가 캡 배포를 실행database.yml의 Capistrano 배포 오류

require "bundler/capistrano" 

set :application, "myapp.com" 
set :app_name, "myapp" 
set :repository, "[email protected]:myrepo/fltctr.git" 
set :scm, :git 

server "100.100.100.100", :web, :app, :db, primary: true 

    set :user, "user" # As defined on your server 
    set :password, "pwwd" 
    set :deploy_to, "/var/www/html/myapp.com" # Directory in which the deployment will take place 
    set :mysql_user, 'root_user' 
    set :mysql_password, 'root_pwwd' 

set :deploy_via, :remote_cache 
set :use_sudo, false 
ssh_options[:forward_agent] = true 

namespace :deploy do 
    task :start do ; end 
    task :stop do ; end 
    task :restart, :roles => :app, :except => { :no_release => true } do 
    run "#{try_sudo} touch #{File.join(current_path,'tmp','restart.txt')}" 
    end 
end 

namespace :deploy do 
    desc "Recreate symlink" 
    task :resymlink, :roles => :app do 
    run "#{try_sudo} rm -f #{current_path} && ln -s #{release_path} #{current_path}" 
    end 

end 


require 'erb' 

before "deploy:setup", :db 
after "deploy:update_code", "db:symlink" 

namespace :db do 
    desc "Create database yaml in shared path" 
    task :default do 
    db_config = ERB.new <<-EOF 
    base: &base 
     adapter: mysql 
     socket: /var/run/mysqld/mysql.sock 
     username: #{mysql_user} 
     password: #{mysql_password} 

    development: 
     database: #{app_name}_dev 
     <<: *base 

    test: 
     database: #{app_name}_test 
     <<: *base 

    production: 
     database: #{app_name}_prod 
     <<: *base 
    EOF 

    run "#{try_sudo} mkdir -p #{shared_path}/config" 
    put db_config.result, "#{shared_path}/config/database.yml" 
    end 

    desc "Make symlink for database yaml" 
    task :symlink do 
    run "ln -nfs #{shared_path}/config/database.yml #{release_path}/config/database.yml" 
    end 
end 


after "deploy:create_symlink", "deploy:resymlink", "deploy:update_crontab" 

매번 : 여기 내 deploy.rb 파일입니다. 난 정말이 작업을 수행하는 데 필요한 -

*** [err :: ] rake aborted! 
*** [err :: ] No such file or directory - /var/www/html/myapp.com/releases/20130224112516/config/database.yml 
*** [err :: ] /var/www/html/myapp.com/shared/bundle/ruby/1.9.1/gems/railties-3.2.3/lib/rails/application/configuration.rb:115:in `read' 

도와주세요.

답변

1

당신은 파일에 쓸 필요가 아니라 표준 출력에두고 :

변경이 라인 :

풋 db_config.result, "# {shared_path} /config/database.yml"

~

File.open ("# {shared_path} /config/database.yml", "w") {| f | f.puts db_config.result}

관련 문제