Tag: 缓存

如何使用acts_as_taggable_on缓存标签?

我有带标签上下文的模型: class Product < ActiveRecord::Base acts_as_taggable_on :categories end 我正在尝试初始化标签缓存: class AddCachedCategoryListToProducts < ActiveRecord::Migration def self.up add_column :products, :cached_category_list, :string Product.reset_column_information products = Product.all products.each { |p| p.save_cached_tag_list } end end 但是cached_category_list没有初始化。 我做错了什么? 有没有人可以使用这个gem的缓存(我的版本是2.0.6)?

在Rails中暂时禁用SQL缓存?

我目前正在创建一个带有一些cronjobs等的Rails应用程序,但是我有一些问题因为sql是由Rails缓存的。 所以任何人都知道如何在Rails中禁用SQL Cache? 不是全局的,而是针对此代码。 真的不想为每个模型创建一个方法,所以无论如何只是暂时禁用它? Terw

在Rails 4上禁用Sprockets资产缓存

另一个问题“ 在开发中禁用Sprockets资产缓存 ”解决了如何在Rails 3.2中禁用Sprockets缓存。 你如何在Rails 4上做同样的事情? 我正在开发一个资产管道深处的gem,并且必须清除tmp/cache/*并重新启动Rails会变得很累。

有没有使用caches_action和:layout => false忽略content_for块的解决方法?

在Rails 3中使用caches_action :layout => false时,在缓存视图中填充并在布局中使用的任何content_for块都将为空。 这有什么解决方法吗? 例如,在我的应用程序中,我有以下相当典型的设置。 从我的视图调用的辅助方法设置页面标题: # application_helper.rb def page_title(title) content_for(:page_title) { title } end 我的布局文件中的一行如下 # application.html.erb 在一个视图中我可以打电话 # index.html 当然,如果使用:layout => false缓存操作,则会导致显示空白页面标题,因为操作缓存会忽略所有content_for块。 对此没有解决方法吗? 使用:layout => false动作缓存非常接近于非常有用,但是这个故障使得它非常笨拙。 其他人询问或评论同一问题: http://groups.google.com/group/rubyonrails-talk/browse_thread/thread/d8d72f050701d44b http://www.golygon.com/2011/04/tips-and-tricks-in-ruby-on-rails/ https://rails.lighthouseapp.com/projects/8994/tickets/4140-action-caching-with-caches_action-and-layout-false 和Rails文档 ,注意到这种行为: “警告:在缓存中忽略了content_for。所以你不应该将它用于将被片段缓存的元素。”

可选地在Rails 3function测试中测试缓存

通常,我希望我的function测试不执行动作缓存。 Rails似乎在我身边,在environment/test.rb默认为config.action_controller.perform_caching = false 。 这导致正常的function测试没有测试缓存。 那么我如何在Rails 3中测试缓存。 这个线程中提出的解决方案似乎相当hacky或者对Rails 2: 如何在rails中的function测试中启用页面缓存? 我想做的事情如下: test “caching of index method” do with_caching do get :index assert_template ‘index’ get :index assert_template ” end end 也许还有更好的方法来测试缓存是否被击中?

如何防止Rails 3.1将静态资产缓存到Rails.cache?

我在我的Rails 3.1应用程序上使用CloudFlare CDN。 Cloudflare是一种在DNS级别工作的CDN。 在第一次打到静态资产时,CloudFlare会从您的应用程序加载它,然后将其缓存在CDN中。 从CDN而不是您的应用程序加载该资产的未来请求。 我遇到的问题是,如果将控制器缓存设置为true: config.action_controller.perform_caching = true 它启用了Rack :: Cache中间件。 由于Rails为静态资产设置了默认缓存控制设置,因此这些资产将写入Rails.cache存储。 结果,我的缓存存储(在我的情况下是redis)被填充了静态资产,其中url作为哈希键。 遗憾的是,我无法关闭静态资产缓存控制标头,而不会影响Cloudflare和我的用户的浏览器如何缓存资产。 我无法关闭控制器缓存或丢失页面/操作/片段缓存。 如果我删除Rack :: Cache中间件,结果相同。 有没有人有任何其他想法? 更新:我在GitHub上打开了一张票。

rails从片段缓存中遗漏了一些部分

我有一个使用pundit gem进行授权的rails 4 app。 如果我像下面的代码那样执行俄语 – 娃娃片段缓存,则用于授权的条件语句也将被缓存,这是不好的,因为编辑/删除按钮应仅适用于post.user 。 解决这个问题的好方法是什么? 我应该将缓存拆分成更小的部分,还是有办法排除缓存的某些部分? 在这种情况下,轨道惯例是什么? index.html.erb _post.html.erb “modal”, ‘data-target’ => “#updatepost_#{post.id}” %> <a href="#" data-toggle="modal" role="button" data-target="#deletepost_”>Delete Post <div class="col-md-12 post-comment-insert-“> <div class="modal fade updatepost" id="updatepost_” tabindex=”-1″ role=”dialog” aria-labelledby=”myModalLabel”> <div class="modal fade" id="deletepost_” tabindex=”-1″ role=”dialog” aria-labelledby=”myModalLabel”> ……

Rails和缓存,在memcache和redis之间切换是否容易?

是否有一个共同的api,如果我在Redis或Memcached之间切换,我不需要更改我的代码,只需配置设置?

如何重置Heroku Rails4资产管道缓存

根据Heroku 文档 : Heroku现在缓存50mb的tmp / cache / assets,这是资产管道的缓存目录,用于存储中间文件。 这意味着未来的资产编译将更快,因为不必重新计算这些文件。 我的问题是如何手动重置或删除此缓存,以便我的所有资产都必须再次预编译? 我尝试了heroku run console和Rails.cache.clear但它没有用。 我想重置缓存的原因是我更改了我的production.rb文件中的config.action_controller.asset_host ,但由于缓存,Heroku没有接受更改。

混乱使用Rails.cache.fetch缓存Active Record查询

我的版本是: Rails:3.2.6 达利:2.1.0 我的环节是: config.action_controller.perform_caching = true config.cache_store =:dalli_store,’localhost:11211’,{:namespace =>’MyNameSpace’} 我写的时候: Rails.cache.fetch(key) do User.where(‘status = 1’).limit(1000) end 无法缓存用户模型。 如果我使用 Rails.cache.fetch(key) do User.all end 它可以缓存。 如何缓存查询结果?