Защо Capistrano не проверява последната версия на моя код от SVN?

Използвам Capistrano и Rails 2.3.4. Вече направих deploy:cold към отдалечения сървър. Сега в моята локална кутия промених файл с оформление и го записах в хранилището (използвам Netbeans 6 като моя IDE). Написвам cap deploy и Capistrano преминава през своите команди и ми казва, че е проверен и разгърнат най-новата версия на моя код. На сървъра обаче промените не са там и когато погледнах файла с оформлението, той използваше старата версия, а не тази, която току-що ангажирах и уж внедрих.

Някой да изпитва това?

РЕДАКТИРАНЕ: Странното е, че промених някои файлове с изображения и те бяха актуализирани на сървъра, но HTML оформлението, което промених, не беше. Възможно ли е да е само проблем с бисквитките?

EDIT2: Проверих самото хранилище (използвам ProjectLocker) и със сигурност кодът е там, модифициран. Проблемът е само, че Capistrano НЕ го проверява, въпреки че казва, че е така, и не отчита никакви грешки.

Ето моя файл deploy.rb (изчистен, разбира се):

# Application
set :application, "myapp"
set :deploy_to, "/var/www/html/#{application}"

# Settings
default_run_options[:pty] = true
set :use_sudo, true

# Servers
set :user, "deploy"
set :domain, "111.111.111.111"
set :runner, "deploy"
server domain, :app, :web
role :db, domain, :primary => true

# SVN
set :repository, "http://myhosting.com/svn/myapp/trunk"
set :scm_username, "[email protected]"
set :scm_password, "secret"
set :checkout, "export"

# Passenger
namespace :passenger do
  desc "Restart Application"
  task :restart do
    run "touch #{current_path}/tmp/restart.txt"
  end
end

after :deploy, "passenger:restart"

Понякога работи, изглежда. Например направих някои промени в кода по-рано и той го провери добре. Имах проблем и с това, че не проверява моя файл database.yml; Бях принуден да го редактирам на сървъра.


person Wayne Molina    schedule 04.10.2009    source източник
comment
Бихте ли могли да прикачите вашия deploy.rb файл (не забравяйте да премахнете всички IP адреси и други препратки към вашите системи). Може да е полезно при намирането на виновника.   -  person Ariejan    schedule 04.10.2009


Отговори (1)


Само изстрел в тъмното тук, но всъщност погледнахте ли файла с оформлението или посегнахте на уебсайта и след това погледнахте изходния код на уеб страницата?

Ако сте в производство, оформлението ще бъде кеширано (config.action_controller.perform_caching = true), трябва да рестартирате сървъра. Това не се случва в режим на разработка по подразбиране, тъй като горната настройка е зададена на false.

Вижте това за повече информация.

person JRL    schedule 04.10.2009
comment
Заредих файла с оформлението с vi на самия сървър и промените ги нямаше. Значи всеки път, когато променя файл, трябва да рестартирам Apache? Хм... това няма да е добре, тъй като имаме други базирани на PHP системи на същия сървър, които се обслужват в допълнение към приложението RoR, и рестартирането на Apache ще ги принуди да спрат за няколко секунди. Не е добре, ако имаме хора, които го използват в същото време, когато трябва да рестартирам Apache. - person Wayne Molina; 05.10.2009
comment
Е, проговорих твърде рано. Изглежда, че се кешира, защото заредих страницата сега и промените са налице. Странно, че самият файл не показва промените. Все пак това може да ни създаде проблеми, ако трябва да рестартирам целия сървър и рискувам прекъсвания в другите приложения. - person Wayne Molina; 05.10.2009
comment
Можете да рестартирате приложението си, без да рестартирате Apache, като създадете файл с име tmp/restart.txt: $ touch tmp/restart - person JRL; 05.10.2009
comment
Когато проверявате за промени във файла, отворихте ли вече файла? Файлът в releases/old-timestamp/ всъщност няма да се промени. Ще има нов файл в releases/new-timestamp/ и символната връзка current ще бъде актуализирана, за да сочи към releases/new-timestamp. - person Emily; 13.10.2009