Использование Rails для кэширования статической группы файлов - PullRequest
0 голосов
/ 10 ноября 2010

Возможно ли, не имея доступа к веб-сайту, указывать rails выполнять кэш всех файлов на странице application.html.erb вместе?

У меня на странице следующий код:

<% = stylesheet_link_tag «сброс», «формы», «макет», «общие», «страницы»,: кэш => '_cached'%>

Это объединит все вместе в файл _cached.css при первой загрузке веб-сайта в производственном режиме. Однако я хотел бы, чтобы файл был восстановлен после инициализации веб-сайта.

Так что шаги будут

  • запустить приложение rails
  • удалить существующий файл _cached.css
  • сказать рельсам пересоздать файл на основе кода в файле application.html.erb
  • сайт работает ...

Есть идеи, как это сделать? Может быть как команда rake или что-то в этом роде?

Ответы [ 2 ]

1 голос
/ 06 декабря 2010

После настройки rake-задачи, которая обращается к файлам веб-сайта после загрузки веб-сайта, это работает.

namespace :assets do

  desc "Removing existing cached files"
  task :clear => :environment do
    FileUtils.rm(Dir['public/javascripts/_cached.js']) 
    FileUtils.rm(Dir['public/javascripts/_ie6.js']) 
    FileUtils.rm(Dir['public/stylesheets/_cached.css'])
  end

  desc "Recreate the javascripts/stylesheets cache."
  task :generate => [:environment, :clear] do
    puts "Recreate the javascripts/stylesheets cache"
    ActionController::Base.perform_caching = true
    app = ActionController::Integration::Session.new(ActionController::Dispatcher.new)
    app.get '/'
  end

end
0 голосов
/ 10 ноября 2010

Поместите это в lib / tasks / file:

namespace :tmp do
  namespace :assets do 
   desc "Clears javascripts/cache and stylesheets/cache"
     task :clear => :environment do      
       FileUtils.rm(Dir['public/javascripts/cache.js'])
       FileUtils.rm(Dir['public/stylesheets/cache.css'])
     end
   end
end

, а затем вызовите его как часть сценария развертывания или рецепта capistrano:

namespace :deploy do
  task :start do ; end
  task :stop do ; end
  task :restart, :roles => :app, :except => { :no_release => true } do
    run "cd #{current_path} && /usr/bin/env rake tmp:assets:clear RAILS_ENV=#{stage}"
    run "#{try_sudo} touch #{File.join(current_path,'tmp','restart.txt')}"
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...