1

Я пытаюсь развернуть приложение Rails 3.2.13 с помощью Capistrano.Capistrano - rake assets: precompile - приложение уже инициализировано

Я использую конвейер активов и поэтому пытаюсь прекомпилировать активы во время развертывания.

У меня возникает следующая ошибка: «Приложение уже инициализировано». во время рейк-активов: этап прекомпиляции.

Вот трассировки стека:

executing "cd -- /sites/beta.myapp.com/releases/20130905192243 && RAILS_ENV=beta RAILS_GROUPS=assets bundle exec rake assets:precompile" executing command rake aborted! Application has been already initialized. /sites/beta.myapp.com/shared/bundle/ruby/1.9.1/gems/railties-3.2.13/lib/rails/application.rb:135:in initialize!' /sites/beta.myapp.com/shared/bundle/ruby/1.9.1/gems/actionpack-3.2.13/lib/sprockets/assets.rake:95:in block (2 levels) in '

Tasks: TOP => assets:precompile:primary => assets:environment

Любые идеи?

Вот мой deploy.rb:

require "bundler/capistrano" 
require 'capistrano/ext/multistage' 
require "whenever/capistrano" 
require './config/boot' 
require 'airbrake/capistrano' 

set :stages, %w(beta production) 

set :application, "myapp...." 
set :whenever_environment, defer { stage } 
set :whenever_command, "bundle exec whenever" 

set :user, "myuser...." 
set :deploy_via, :remote_cache 
set :use_sudo, false 

set :scm, "git" 
set :repository, "myrepo....." 
set :branch, $1 if `git branch` =~ /\* (\S+)\s/m 

namespace :deploy do 
    task :cold do  # Overriding the default deploy:cold 
    update 
    load_schema  # My own step, replacing migrations. 
    start 
    end 

    task :load_schema, :roles => :app do 
    run "cd #{current_path}; rake db:schema:load RAILS_ENV=#{stage}" 
    end 

    desc "Tell Passenger to restart and restart workers." 
    task :restart, :roles => :web do 
    run "touch #{deploy_to}/current/tmp/restart.txt" 
    end 

    desc "Do nothing on startup so we don't get a script/spin error." 
    task :start do 
    puts "You may need to restart Apache." 
    end 

    desc "Symlink extra configs and folders." 
    task :symlink_extras do 
    run "ln -nfs #{shared_path}/config/database.yml #{latest_release}/config/database.yml" 
    run "ln -nfs #{shared_path}/assets #{latest_release}/public/assets" 
    end 

    desc "Setup shared directory." 
    task :setup_shared do 
    run "mkdir #{shared_path}/assets" 
    run "mkdir #{shared_path}/config" 
    run "mkdir #{shared_path}/tmp" 
    run "mkdir #{shared_path}/db" 
    put File.read("config/examples/database.yml"), "#{shared_path}/config/database.yml" 
    puts "Now edit the config files and fill assets folder in #{shared_path}." 
    end 

    desc "Seed the db with shipping options and a product" 
    task :seed do 
    run "cd #{current_path}; rake db:seed" 
    end 

    desc "Make sure there is something to deploy" 
    task :check_revision, :roles => :web do 
    unless `git rev-parse HEAD` == `git rev-parse origin/#{branch}` 
     puts "WARNING: HEAD is not the same as origin/master" 
     puts "Run `git push` to sync changes." 
     exit 
    end 
    end 

    desc "Stop resque Workers." 
    task :stop_workers, :on_error => :continue do 
    run "cd #{current_path} && rake resque:stop_workers RAILS_ENV=#{stage}"  
    end 
end 

before "deploy", "deploy:check_revision" 
after "deploy", "deploy:cleanup" 
after "deploy:setup", "deploy:setup_shared" 
before "deploy:assets:precompile", "deploy:symlink_extras" 
after "deploy:update_code", "deploy:stop_workers" 
+1

Вы можете показать нам свое deploy.rb? В противном случае все, что мы можем сделать, это дать дикое предположение. – fotanus

+0

@fontanus --- Я просто добавил свой deploy.rb в соответствии с запросом. Благодарю. – rlarcombe

ответ

1

В конце концов я решил эту проблему:

В конфигурации/application.rb, я должен был закомментируйте следующую строку:

config.assets.initialize_on_precompile = true

Я попытался настроить config.assets.initialize_on_precompile как на false, так и на true ... В обоих случаях я получил ошибку «Приложение уже инициализировано».

Но, как только я прокомментировал эту строку, я смог открыть приложение для развертывания.

+0

Я был пессимистичным, но это на самом деле сработало ... любая идея, почему установить его на false недостаточно хорошо? – hananamar

Смежные вопросы