2010-11-09 86 views
0

是否有可能不必访问网站就可以让rails同时执行application.html.erb页面中所有文件的缓存?告诉Rails缓存静态文件组

我在我的网页下面的代码:

<%= stylesheet_link_tag '复位', '形式', '布局', '普通', '网页',:缓存=> '_cached' %>

当网站首次在生产模式下加载时,这会将所有内容组合到一个_cached.css文件中。但是,我希望在网站初始化后重新生成文件。

所以步骤将

  • 启动Rails应用程序
  • 删除现有_cached.css文件
  • 告诉Rails重新创建application.html.erb文件中基于代码的文件
  • 网站是活...

在待办事项这如何任何想法?可以作为一个耙指令或什么?

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 

,然后把它作为部署脚本或斯特拉努食谱的一部分:

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 

回答

1

设置访问耙子任务后

0

在一个lib /任务/文件将这个一旦网站被加载,网站文件就会生效。

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

没错。我了解如何清除缓存的内容,但是如何在不访问网站的情况下再次重新生成它们? – matsko 2010-11-10 05:04:43

+0

它在第一次访问时自动完成。只需要添加一个wget调用配方? – DGM 2010-11-10 14:10:32