2011-02-06 15 views

Respuesta

7

comando de Capistrano put puede escribir un archivo de una cadena, como se muestra aquí:

desc 'Generate a config yaml in shared path' 
    task :generate_yaml, :roles => :app do 
    sphinx_yaml = <<-EOF 
development: &base 
    morphology: stem_en 
    config_file: #{shared_path}/config/sphinx.conf 
test: 
    <<: *base 
production: 
    <<: *base 
EOF 
    run "mkdir -p #{shared_path}/config" 
    put sphinx_yaml, "#{shared_path}/config/sphinx.yml" 
    end 

Nota: ejemplo levantada de Making Your Capistrano Recipe Book

put se documenta en el Capistrano gitub repo

+0

es "poner" crea nuevo archivo? Y si no: ¿está anulando el archivo o anexándolo? – user1291365

+0

Consulte la documentación Capistrano para una explicación de 'PUT' – zetetic

+6

Esto ya no funciona como de Capistrano v3 – rposborne

1

Sí, puede escribir una tarea rastrillo para escribir un archivo .rvmrc, por ejemplo, el siguiente comando Rubí ejecutará un script bash que escribe [email protected] RVM a .rvmrc:

 
system "echo 'rvm [email protected]' > .rvmrc" 

mi recomendación sería también para no almacenar el archivo de .rvmrc en su repositorio git - este archivo es realmente un archivo específico del sistema y podría causar problemas a otros desarrolladores que utilizan diferentes configuraciones del sistema, por ejemplo, si utilizan un gemset diferente, entonces en cualquier momento que tiran desde el repositorio central tendrán que volver a escribir sus propios archivos .rvmrc.

1

Es una respuesta tardía , pero de acuerdo con la respuesta aceptada he creado una tarea en el espacio de nombres RVM para hacer el trabajo. Utiliza la nueva versión de rubí:

after 'deploy:update_code', 'rvm:create_ruby_version' 

namespace :rvm do 
    task :create_ruby_version do 
    run "cd #{latest_release} && rvm rvmrc create #{rvm_ruby_string} --ruby-version" 
    end 
end 
+0

Esto crea .ruby-versión y .ruby-gemset que es compatible con otros gestores de versión de Ruby –

2

put método ya no funciona en Capistrano 3

Esta solución funcionó para mí

task :generate_yml do 
    on roles(:app) do 
    set :db_username, ask("DB Server Username", nil) 
    set :db_password, ask("DB Server Password", nil) 
    db_config = <<-EOF 
development: 
    database: #{fetch(:application)}_development 
    adapter: mysql2 
    encoding: utf8 
    reconnect: false 
    pool: 5 
    username: #{fetch(:db_username)} 
    password: #{fetch(:db_password)}  
test: 
    database: #{fetch(:application)}_test 
    adapter: mysql2 
    encoding: utf8 
    reconnect: false 
    pool: 5 
    username: #{fetch(:db_username)} 
    password: #{fetch(:db_password)} 
production: 
    database: #{fetch(:application)}_production 
    adapter: mysql2 
    encoding: utf8 
    reconnect: false 
    pool: 5 
    username: #{fetch(:db_username)} 
    password: #{fetch(:db_password)} 
EOF 
    location = fetch(:template_dir, "config/deploy") + '/database.yml' 
    execute "mkdir -p #{shared_path}/config" 
    File.open(location,'w+') {|f| f.write db_config } 
    upload! "#{location}", "#{shared_path}/config/database.yml" 
end 
end 
Cuestiones relacionadas